【发布时间】:2017-01-28 14:18:31
【问题描述】:
问题:
我有一个熊猫数据框,我想按年月和规则名称进行分组。分组后,我希望能够获得该期间每个规则的计数以及该组所有规则的百分比。到目前为止,我能够获得每个时期的计数,但不能获得百分比。
目标是有一个类似于底部的图,但在右 y 轴上我也会有时间段的百分比。
目标数据框:
对于 rule_name A:
date counts (rule_name) %_rule_name
Jan 16 1 50
Feb 16 0 0
Jun 16 2 66
我想为每个 rule_name(即 B 和 C)继续此操作
到目前为止的代码:
d = {'date': ['1/1/2016', '2/1/2016', '3/5/2016', '2/5/2016', '1/15/2016', '3/3/2016', '3/4/2016'],
'rule_name' : ['A' , 'B', 'C', 'C', 'B', 'A','A']}
df = pd.DataFrame(d)
Output:
# format string date to datetime
df['date'] = pd.to_datetime(df['date'], format='%m/%d/%Y', errors='coerce')
rule_names = df['rule_name'].unique().tolist()
for i in rule_names:
print ""
print 'dataframe for', i ,':'
df_temp = df[df['rule_name'] == i]
df_temp = df_temp.groupby(df_temp['date'].map(lambda x: str(x.year) + '-' + str(x.strftime('%m')))).count()
df_temp.plot(kind='line', title = 'Rule Name: ' + str(i))
print df_temp
Output:
我觉得有更好的方法可以做到这一点,但我无法弄清楚。最后一天我一直在为这个问题绞尽脑汁。我应该过滤吗?我尝试了多索引分组,但无法创建 %_rule_name 列。感谢您提前输入。
【问题讨论】:
标签: python pandas plot group-by filtering