我正在尝试计算分类数据并绘制每个月的高,中,低的百分比。
它应该如下图所示:
我有一个日期和分数的数据框,如下所示
-------------------------------
|Date | Score |
|2016-1-02 00:00:00 | High |
|2016-2-02 00:00:00 | Low |
|2016-4-23 00:00:00 | Med |
|2016-5-03 00:00:00 | High |
|2016-6-02 00:00:00 | High |
|2016-6-04 00:00:00 | Low |
|2016-7-02 00:00:00 | Med |
|2016-12-02 00:00:00 | High |
-------------------------------
我知道我可以这样做以获得每一个的分割,但我不知道如何按月拆分,然后计算每个
df.groupby('Score').size()
Score:
High: 5
Med: 15
Low: 155
谢谢
答案 0 :(得分:5)
首先准备数据
In [2056]: dff = (df.set_index('Date').groupby('Score')
.resample('MS').count().unstack('Score'))
In [2057]: dff
Out[2057]:
Score
Score High Low Med
Date
2016-01-01 1.0 NaN NaN
2016-02-01 0.0 1.0 NaN
2016-03-01 0.0 0.0 NaN
2016-04-01 0.0 0.0 1.0
2016-05-01 1.0 0.0 0.0
2016-06-01 1.0 1.0 0.0
2016-07-01 0.0 NaN 1.0
2016-08-01 0.0 NaN NaN
2016-09-01 0.0 NaN NaN
2016-10-01 0.0 NaN NaN
2016-11-01 0.0 NaN NaN
2016-12-01 1.0 NaN NaN
标准化百分比。
In [2058]: dff.div(dff.sum(1), axis=0).plot.bar(stacked=True)
Out[2058]: <matplotlib.axes._subplots.AxesSubplot at 0x1386ca58>