Warm tip: This article is reproduced from serverfault.com, please click

python-在数据框中绘制零和一的计数

(python - plotting count of zeros and ones in a dataframe)

发布于 2020-11-27 23:16:25

我有一个这样的数据框:

    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的计数,如下所示:

在此处输入图片说明

我怎样才能做到这一点?

Questioner
meee
Viewed
22
swatchai 2020-12-01 09:19:36

试试这个可运行的代码:

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索引数据框可用于更轻松地创建所需的条形图。

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