从datafram按十年堆积直方图

2024-05-29 04:27:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含暴风雪日期的数据框,以及1950-2019年的暴风雪等级。我想创建一个叠加直方图,其中x轴是十年,y轴是分类的暴风雪计数

下面列出了一个我试图创建的示例Snowstorm climatology

我很难准确地理解如何以这样一种方式来聚合数据,这样我就可以绘制出我共享的东西

例如,下面是20世纪50年代数据帧的一个片段:

    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

我有每个类别的所有计数,但如何将其转换为可在堆叠直方图上绘制的数据


Tags: 数据示例count方式绘制分类直方图类别
1条回答
网友
1楼 · 发布于 2024-05-29 04:27:02

首先聚合数据,然后用参数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)

enter image description here

请记住,您可以将聚合更改为其他内容

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)
)

相关问题 更多 >

    热门问题