【发布时间】:2020-03-10 20:45:44
【问题描述】:
我希望使用groupby.size 命令从结果中创建一个 (2x3) 堆叠条形图子图,让我解释一下。我有一个数据框列表:list_df = [df_2011, df_2012, df_2013, df_2014, df_2015, df_2016]。这些df的一个小例子是:
... Create Time Location Area Id Beat Priority ... Closed Time
2011-01-01 00:00:00 ST&SAN PABLO AV 1.0 06X 1.0 ... 2011-01-01 00:28:17
2011-01-01 00:01:11 ST&HANNAH ST 1.0 07X 1.0 ... 2011-01-01 01:12:56
.
.
.
(由于布局混乱,只能添加几列)
我正在使用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 个 TOTALS。因此,例如上面的总数是:
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 的子图布局,但我以前做过这样的堆叠条形图:
提前致谢。这比我想象的要难!
【问题讨论】:
标签: python pandas matplotlib plot pandas-groupby