2017-09-25 38 views
1

https://www.kaggle.com/anokas/time-travel-edaパンダ:GROUPBY( 'date_x')[ '結果'](平均)

これらのコードは正確に何を意味していますか。? groupby('date_x')['outcome'].mean()、sklearnのドキュメントでこれを見つけることができませんでした。

date_x['Class probability'] = df_train.groupby('date_x')['outcome'].mean() 
date_x['Frequency'] = df_train.groupby('date_x')['outcome'].size() 
date_x.plot(secondary_y='Frequency',figsize=(22, 10)) 

ありがとうございます!

d = {'mean':'Class probability','size':'Frequency'} 
df = df_train.groupby('date_x')['outcome'].agg(['mean','size']).rename(columns=d) 

df.plot(secondary_y='Frequency',figsize=(22, 10)) 

の詳細についてはapplying multiple functions at onceをチェックしてください。私はより良いと思う

+0

あなたは 'pandas'ドキュメントでそれを見つけることができます。グループ化に関するパンダのチュートリアルが役に立ちます。 https://pandas.pydata.org/pandas-docs/stable/groupby.html –

答えて

1

は、列date_xによってグループ分けされたグループごとにグループの長さのためsizemeanによって集約のためのDataFrameGroupBy.aggを使用しています。

サンプル:

d = {'date_x':pd.to_datetime(['2015-01-01','2015-01-01','2015-01-01', 
           '2015-01-02','2015-01-02']), 
    'outcome':[20,30,40,50,60]} 
df_train = pd.DataFrame(d) 
print (df_train) 
     date_x outcome 
0 2015-01-01  20 ->1.group 
1 2015-01-01  30 ->1.group 
2 2015-01-01  40 ->1.group 
3 2015-01-02  50 ->2.group 
4 2015-01-02  60 ->2.group 

d = {'mean':'Class probability','size':'Frequency'} 
df = df_train.groupby('date_x')['outcome'].agg(['mean','size']).rename(columns=d) 
print (df) 
      Class probability Frequency 
date_x         
2015-01-01     30   3 
2015-01-02     55   2 
+0

確実!一番最後にチェックしてください。最後になぜクラス確率が30/55、それは40/60と思われますか? –

+0

いいえ、2つのグループがあります - 最初の3行は同じ日付 '2015-01-01'で、平均は'(20 + 30 + 40)/ 3 = 30'で、 '2 last rows'は日付' 2015-01 -02'と '(50 + 60)/ 2 = 55' – jezrael