python - 将 pandas 数据框对齐为面板
问题描述
我有 12 个形状相同的数据框,用于 12 年的数据收集。我需要将其用作面板来绘制时间序列轴(年)上的各种列值。因此,我认为我应该将这些框架对齐为面板。
- 有人可以帮助我如何将数据框对齐为面板吗?
- 这是为沿第三维绘图做准备的正确方法吗?
一些样本数据:
# 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
解决方案
假设您的 DataFrame 命名为 df15、df16、df17,您可以使用它们创建一个面板,如下所示:
pnl = pd.Panel({2015: df15, 2016: df16, 2017: df17})
之后,您可以按照以下方式制作您在问题中提到的 3D 图:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
for i in range(2015, 2018):
ax.bar(pnl.major_axis.values, pnl[i]['Cases Recorded'], zdir='y', zs=i)
ax.yaxis.set_ticks(range(2015, 2018))
ax.yaxis.set_ticklabels(range(2015, 2018))
但是,如果我可以根据我自己的经验给你一个关于可读性好的数据可视化的提示,我认为许多专业人士都会分享:
即使数据集是 3 维或更多维结构,创建设计良好的 2 维图通常也是一个不错的选择。3D 可能经常引人注目,但要告知目标受众并显示数据的某些属性,您几乎会选择 2d。考虑到这一点,Ami Tavory 的方法将是更好的方法,因为这样数据结构更容易处理:
df15['year'] = 2015
df16['year'] = 2016
df17['year'] = 2017
df = pd.concat([df15, df16, df17]).set_index(['Grave Crimes', 'year'])
f, ax = plt.subplots(1)
for i, y in enumerate(range(2015, 2018)):
data = df.groupby('year').get_group(y)['Cases Recorded']
ax.bar(np.arange(6)+.2*i, data.values, width=.2, label=str(y))
ax.legend()
ax.set_xticklabels(data.index, rotation=15)
推荐阅读
- netflix-metaflow - 将流部署到aws step函数时如何从不同的文件导入函数?
- javascript - 我用 html 和 css 创建了一个自动幻灯片,但是 3 个点不起作用,我无法通过单击这些点来更改幻灯片
- python-3.x - 更改数据框 Pandas 中的值
- c# - 未从 Azure 接收到物理设备的 iOS 推送通知
- c# - 在 WinForm C# 中单击按钮时更改表格单元格颜色
- json - Marklogic 9 在 json 文档上提取文档数据
- php - Apache2 PHP docker容器,如何将错误记录为stderr并将信息作为stdout记录到容器日志?
- python - 如何在 tkinter 中平滑椭圆周围的边缘?
- python - 如何使用matplotlib在python中绘制图形时显示值
- typescript - 描述 typescript 函数,它使用数组中的键返回修改后的对象