我有一个类似这样的数据框
import pandas as pd
df = pd.DataFrame([['1','3','1','2','3','1','2','2','1','1'], ['ONE','TWO','ONE','ONE','ONE','TWO','ONE','TWO','ONE','THREE']]).T
df.columns = [['age','data']]
print(df) #printing dataframe.
我对其执行了 groupby 函数以获得所需的输出。
df['COUNTER'] =1 #initially, set that counter to 1.
group_data = df.groupby(['age','data'])['COUNTER'].sum() #sum function
print(group_data)
现在我想使用 matplot lib 绘制出来。请帮助我..我不知道如何开始和做什么。 我想使用计数器值和类似于条形图的东西来绘制
最佳答案
尝试:
group_data = group_data.reset_index()
为了摆脱 groupby()
为您创建的多重索引。
你的 print(group_data)
会给你这个:
In [24]: group_data = df.groupby(['age','data'])['COUNTER'].sum() #sum function
In [25]: print(group_data)
age data
1 ONE 3
THREE 1
TWO 1
2 ONE 2
TWO 1
3 ONE 1
TWO 1
Name: COUNTER, dtype: int64
然而,重置将“简化”新索引:
In [26]: group_data = group_data.reset_index()
In [27]: group_data
Out[27]:
age data COUNTER
0 1 ONE 3
1 1 THREE 1
2 1 TWO 1
3 2 ONE 2
4 2 TWO 1
5 3 ONE 1
6 3 TWO 1
然后根据您想要绘制的内容,您可能需要查看 Matplotlib docs
编辑
我现在更仔细地阅读了您想创建一个“条形”图表。
如果是这种情况,那么我会退后一步,不对 groupby 结果使用 reset_index()
。相反,试试这个:
In [46]: fig = group_data.plot.bar()
In [47]: fig.figure.show()
希望对你有帮助
关于python - 如何在groupby之后绘制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39494246/