首页 > 解决方案 > 跨三维绘制熊猫面板列

问题描述

我有 3 个形状相同的单独数据框,其中包含以下数据。

# for 2015
Grave Crimes    Cases Recorded  Mistake of Law fact
Abduction       725             3
Kidnapping      246             6
Arson           466             1
Mischief        436             1
House Breaking  12707           21
Grievous Hurt   1299            3

# for 2016
Grave Crimes    Cases Recorded  Mistake of Law fact
Abduction       738             4
Kidnapping      297             9
Arson           486             4
Mischief        394             1
House Breaking  10287           14
Grievous Hurt   1205            0

# for 2017
Grave Crimes    Cases Recorded  Mistake of Law fact
Abduction       647             2
Kidnapping      251             10
Arson           418             3
Mischief        424             0
House Breaking  8913            12
Grievous Hurt   1075            1

我想按年份针对“严重犯罪”类型组绘制每一列(例如“记录的案件”)。我目前的面板如下。创建面板时我没有设置任何索引。此外,每个数据框都没有任何表示年份的列,如上所示。

pnl = pd.Panel({2015: df15, 2016: df16, 2017: df17})

我的预期输出如下所示。有人可以帮我吗?

在此处输入图像描述

标签: pandasmatplotlib

解决方案


自 0.20.1+ 起,面板已在 Pandas 中弃用

我们可以使用 pd.concat 和键将这些数据帧组合成一个数据帧,然后使用重塑和熊猫图。

l = ['df2015','df2016','df2017']
df_out = pd.concat([eval(i) for i in l], keys=l)\
           .set_index('Grave Crimes',append=True)['Cases Recorded'].unstack(0)\
           .rename(columns=lambda x: x[2:]).reset_index(0, drop=True)

df_out.plot.bar()

输出:

在此处输入图像描述


推荐阅读