python - 每列中每个值的计数热图

标签 python pandas dataframe pivot-table

我有一个像这样的数据框:

| A | B | C  | D |  
|---|---|----|---|  
| 1 | 3 | 10 | 4 |  
| 2 | 3 | 1  | 5 |  
| 1 | 7 | 9  | 3 |  
其中 A B C D 是类别,值在 [1, 10] 范围内(某些值可能不会出现在单个列中)
我想要一个数据框,为每个类别显示这些值的计数。像这样的东西:
|    | A | B  | C | D |
|----|---|----|---|---|  
| 1  | 2 | 0  | 1 | 0 |
| 2  | 1 | 0  | 0 | 0 |
| 3  | 0 | 2  | 0 | 1 |
| 4  | 0 | 0  | 0 | 1 |
| 5  | 0 | 0  | 0 | 1 |
| 6  | 0 | 0  | 0 | 0 |
| 7  | 0 | 1  | 0 | 0 |
| 8  | 0 | 0  | 0 | 0 |
| 9  | 0 | 0  | 1 | 0 |
| 10 | 0 | 0  | 1 | 0 | 
我尝试使用 groupbypivot_table但我似乎无法理解要提供哪些参数。

最佳答案

  • 使用 pandas.Series.value_counts 适用于每列
  • seaborn.heatmap 将绘制 DataFrame
  • 如果提供了 Pandas DataFrame,索引/列信息将用于标记列和行。


  • 选项1
    import seaborn as sns
    import pandas as pd
    
    # dataframe setup
    data = {'A': [1, 2, 1], 'B': [3, 3, 7], 'C': [10, 1, 9], 'D': [4, 5, 3]}
    df = pd.DataFrame(data)
    
    # create a dataframe of the counts for each column
    counts = df.apply(pd.value_counts)
    
    # display(count)
          A    B    C    D
    1   2.0  NaN  1.0  NaN
    2   1.0  NaN  NaN  NaN
    3   NaN  2.0  NaN  1.0
    4   NaN  NaN  NaN  1.0
    5   NaN  NaN  NaN  1.0
    7   NaN  1.0  NaN  NaN
    9   NaN  NaN  1.0  NaN
    10  NaN  NaN  1.0  NaN
    
    # plot
    sns.heatmap(counts)
    
    enter image description here
    选项 2
  • 热图提供了许多样式选项,并使用 cmap 更改颜色。可以提高可视化。
  • seaborn: palettes

  • 我认为选项 1,没有 .fillna(0)看起来不那么忙。

  • # counts
    counts = df.apply(pd.value_counts).fillna(0)
    
    # plot
    sns.heatmap(counts, cmap="GnBu", annot=True)
    
    enter image description here
    默认颜色
    sns.heatmap(counts, annot=True)
    
    enter image description here

    关于python - 每列中每个值的计数热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63757556/

    相关文章:

    python - pandas dataframe 对象到日期时间分钟

    javascript - 如何在新创建的模块中从 Odoo v8 中的 Javascript 文件调用 python 函数?

    python - Django 检查和备用 Docker Compose 文件 : Debug flag not being set?

    python - 确定一对骰子获得 1-1 结果的平均掷骰次数

    python - 使用 Pandas 操作多列

    python - 是否可以一次创建多个数据框?

    python - Pandas 数据帧 to_sql 数据长度超过 65536 个字符

    python - 使用 numpy、pandas 和 scikit-learn 等依赖包运行 pyspark

    python - 在 Pandas 数据框中的特定时间之间选择数据

    r - 将子集函数应用于数据帧列表