簡體   English   中英

熊貓組,過濾和情節

[英]Pandas group by, filter & plot

我有一個數據幀

Date         rule_name
Jan 1 2016   A
Feb 4 2016   B
Jun 6 2016   C
Feb 5 2016   B
Feb 9 2016   D
Jun 5 2016   A

等等 ...

我希望獲得類似於下面的每個規則的數據幀:例如,rule_name的數據幀A:

date       counts (rule_name)   %_rule_name 
Jan 16     1                   100
Feb 16     0                    0
Jun 16     1                   50

例如,rule_name B的數據幀:

date        counts (rule_name)   %_rule_name 
Jan 16      0                   0
Feb 16      2                   66.6
Jun 16      0                   0

等等。

我目前的解決方案

rule_names = df['rule_name'].unique().tolist()
for i in rule_names:
    df_temp = df[df['rule_name'] == i]
    df_temp = df.groupby(df['date'].map(lambda x: str(x.year) + '-' + str(x.strftime('%m')))).count()
    df_temp.plot(kind='line', title = 'Rule Name: ' + str(i))

如您所見,我無法獲取規則名稱的百分比,而只是繪制count_rule_name。 我覺得有(a)解決方案和(b)更好的解決方案,然后迭代每個規則名稱和繪圖,但不幸的是我無法弄清楚。


使用df.Date.str.split().str[0]得到幾個月

df.groupby([df.Date.str.split().str[0]]).rule_name.value_counts(True) \
  .unstack(fill_value=0).mul(100).round(1)

在此輸入圖像描述

情節

df.groupby([df.Date.str.split().str[0]]).rule_name.value_counts(True) \
  .unstack(fill_value=0).mul(100).round(1).plot.bar()

在此輸入圖像描述

驗證計數

df.groupby([df.Date.str.split().str[0], df.rule_name]).size().unstack(fill_value=0)

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM