我希望使用groupby.size命令从结果中创建一个(2x3)堆叠的条形图子图,让我解释一下。我有一个数据帧列表:list_df = [df_2011, df_2012, df_2013, df_2014, df_2015, df_2016]。这些df的一个小例子是:Beat Priority
06X 1.0
07X 1.0
10Y 2.0
.
.
.
我正在使用groupby.size命令来获取这些数据库所需的事件计数,请参见下文:list_df = [df_2011, df_2012, df_2013, df_2014, df_2015, df_2016]
for i in list_df:
print(i.groupby(['Beat', 'Priority']).size())
print(' ')
生产中:Beat Priority
01X 1.0 394
2.0 1816
02X 1.0 644
2.0 1970
02Y 1.0 661
2.0 2309
03X 1.0 857
2.0 2962
.
.
.
我想使用beat列确定哪个是前10个总计。所以例如以上总计是:Beat Priority Total for Beat
01X 1.0 394
2.0 1816 2210
02Y 1.0 661
2.0 2309 2970
03X 1.0 857
2.0 2962 3819
.
.
.
[到目前为止,我已经在plot上使用了groupby.size,但是它没有像我上面描述的那样进行汇总。请查看以下内容:list_df = [df_2011, df_2012, df_2013, df_2014, df_2015, df_2016]
fig, axes = plt.subplots(2, 3)
for d, i in zip(list_df, range(6)):
ax = axes.ravel()[i];
d.groupby(['Beat', 'Priority']).size().nlargest(10).plot(ax=ax, kind='bar', figsize=(15, 7), stacked=True, legend=True)
ax.set_title(f"Top 10 Beats for {i+ 2011}")
plt.tight_layout()
我希望具有2x3子图布局,但是我以前做过这样的堆叠式条形图:
谢谢。这比我想象的要难!