首页 > 解决方案 > 在数据框中绘制零和一的计数

问题描述

我有一个这样的数据框:

    Name        Detection
0   name1           0
1   name2           0
2   name3           0
3   name1           1
4   name3           1
5   name2           1
6   name1           1
7   name1           0

我想要一个条形图,根据 x 轴上的每个名称分别显示 y 轴上 0 和 1 的计数,如下所示:

在此处输入图像描述

我怎样才能做到这一点?

标签: pythonpandasmatplotlib

解决方案


试试这个可运行的代码:

import pandas as pd
from io import StringIO
from matplotlib import pyplot

data2 ="""Index     Name        Detection
0   name1           0
1   name2           0
2   name3           0
3   name1           1
4   name3           1
5   name2           1
6   name1           1
7   name1           0"""

df2 = pd.read_csv(StringIO( data2 ), sep='\s+', index_col='Index', engine='python')
print(df2)
result = df2.groupby(['Name']).count()
print()
print(result)

result.plot(kind='bar')

输出文本:

        Name  Detection
Index                  
0      name1          0
1      name2          0
2      name3          0
3      name1          1
4      name3          1
5      name2          1
6      name1          1
7      name1          0

       Detection
Name            
name1          4
name2          2
name3          2

输出图:

条形图

编辑

更新代码:

import pandas as pd
from io import StringIO
from matplotlib import pyplot

data2 ="""Index     Name        Detection
0   name1           0
1   name2           0
2   name3           0
3   name1           1
4   name3           1
5   name2           1
6   name1           1
7   name1           0"""

df2 = pd.read_csv(StringIO( data2 ), sep='\s+', index_col='Index', engine='python')
result = df2.groupby(by=['Name','Detection']).size().reset_index()
result.rename(columns={0:"count"}, inplace=True)
# plot bar graph
result.set_index(["Name","Detection"])['count'].unstack().plot.bar()

输出图:

新条形图

注意

result.set_index(["Name","Detection"])

是这种形式的数据框:

                 count
Name  Detection       
name1 0              2
      1              2
name2 0              1
      1              1
name3 0              1
      1              1

这是您问题的本质,而不是它的条形图。数据框现在有 2 个索引,可以count清楚地显示(名称、检测)的每个配对索引的值,比原始索引更直观。2-indexes 数据框可用于更轻松地创建所需的条形图。

你错过了专注于数据帧的处理,让人们认为你要求的东西已经有了很好的答案。


推荐阅读