【发布时间】:2018-02-13 13:22:34
【问题描述】:
我正在尝试统计分类数据并绘制每个月的高、中、低百分比。
它应该如下图所示:
我有一个包含日期和分数的数据框,如下所示
-------------------------------
|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
谢谢
【问题讨论】:
-
首先为该月创建一个新列,然后按月分组和得分列
-
我不会绘图,但是
df.groupby([df.Date.dt.month, 'Score']).size() -
@coldspeed,我想只需添加一个
.plot.bar(stacked=True)。但我不确定规范化^^ -
我认为,您应该将分数转换为每月百分比
-
df.groupby([df.Date.dt.month, 'Score']).size()给了我正确的数据,谢谢,但遗憾的是 .plot.bar(stacked=True) 没有给我那个条形图。相反,X 轴是 (1, High) (1, Med) (1, Low) (2, High) ... (12, Low) 数字是月份,Y 轴作为计数出现
标签: python pandas matplotlib dataframe seaborn