問題:
私は年月とrule_nameでグループ化したいデータのパンダデータフレームを持っています。一度グループ化すると、その期間の各ルールの数とそのグループのすべてのルールの割合を取得できます。これまでのところ、私は各期間をカウントすることができますが、パーセンテージは取得できません。パンダ複数列Groupbyプロット
目標は下のものと同様のプロットを持つことですが、右のy軸には期間のパーセンテージもあります。
目標のデータフレーム:RULE_NAMEのAの場合
:私は(BとCのためにすなわち)各RULE_NAMEのためにこれを続けていきたいと考えて
date counts (rule_name) %_rule_name
Jan 16 1 50
Feb 16 0 0
Jun 16 2 66
コードこれまで:
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列を作成できませんでした。入力いただきありがとうございます。