我有一个Pandas
看起来像下面的数据框。
年份月份类 ---- ----- ----- 2015 1 1 2015 1 1 2015 1 2 2015 1 2 ...
我希望能够在一个绘图上创建此数据的2条形图系列。如果我可以做一个groupby
,count
并以a结尾,data frame
那么我想我可以做一个简单的dataframe.plot.barh
。
我尝试过的是以下代码。
x = df.groupby(['year', 'month', 'class'])['class'].count()
什么x
最终被一个Series
。所以,我做下面的事情来得到一个DataFrame
。
df = pd.DataFrame(x)
这让我非常接近。数据最终如下所示。
爵士乐 年度月份爵士乐 2015 1 1 2 2 1 15 2 2 45
但是当我进行条形图绘制时df.plot.bar()
,我只会看到一个系列。从2015-01到2019-12的所需输出只是一个系列,class
每月一次发生1次?然后是2015年1月至2019年12class
月的另一个系列,每月两次发生2次?
关于如何以这种方式操作数据的任何想法?
一个groupby
-unstack
应该做的伎俩:
数据
df = pd.DataFrame([[2015, 1, 1],
[2015, 1, 1],
[2015, 1, 2],
[2015, 1, 2],
[2015, 1, 2],
[2015, 2, 1],
[2015, 2, 1],
[2015, 2, 1],
[2015, 2, 2],
[2015, 2, 2]], columns = ['year', 'month', 'class'])
解
df_gb = df.groupby(['year', 'month', 'class']).size().unstack(level=2)
输出量
df_gb.plot(kind = 'bar')
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句