试试这个可运行的代码:
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索引数据框可用于更轻松地创建所需的条形图。
您错过了专注于数据帧的处理并使人们认为您要求的东西已经很好的答案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句