我有一个数据框,其中包含暴风雪的日期以及所述暴风雪的等级,范围为1950-2019。我想创建一个堆叠的直方图,其中x轴为十年,y轴为按类别的暴风雪计数。
我在理解如何精确地聚合数据方面遇到困难,这种方式将使我可以绘制类似共享的内容。
例如,这是1950年代数据帧的片段:
Start End Category Year count
1959-03-12 1959-03-14 2 1950 13
1958-03-18 1958-03-23 3 1950 6
1958-02-12 1958-02-18 3 1950 6
1957-12-03 1957-12-05 1 1950 32
1956-03-18 1956-03-20 1 1950 32
我拥有每个类别的所有计数,但是如何将其转换为可在堆叠直方图上绘制的数据?
答案 0 :(得分:2)
首先汇总数据,然后使用参数stacked=True
pivot_table
df.pivot_table('count', 'Year', 'Category', 'sum').plot.bar(stacked=True)
groupby
df.groupby(['Year', 'Category'])['count'].sum().unstack().plot.bar(stacked=True)
请记住,您可以将聚合更改为其他内容。
df.pivot_table('count', 'Year', 'Category', 'first').plot.bar(stacked=True)
df.groupby(['Year', 'Category'])['count'].first().unstack().plot.bar(stacked=True)
此外,您可以事先删除重复项。
(
df.drop_duplicates(['Year', 'Category'])
.pivot_table('count', 'Year', 'Category')
.plot.bar(stacked=True)
)