2017-03-15 11 views
0

こんにちはにおける合計を超える相対的な寄与を計算しますクリックはDFがのように見えるしているパンダ

私の究極の目標は、データの基礎となるパレート関係があるかどうかを確認することです。

私は、20%のキーワードが80%のクリックに貢献し、kwの割合とクリック率の結果をプロットすると想像します。

再現性の例は次のとおり

df = pd.DataFrame({'clicks': {0: 20, 1: 40, 2: 50, 3: 10}, 
'keyword': {0: 'a', 1: 'b', 2: 'c', 3: 'a'}}) 

答えて

0

まずGROUPBY和をとり、それらの値をソート(降順ので、最大で最初のものです)。次いでCUMSUMを用いて、総割ることによって(新しい列)の累積パーセンテージを得る:

df = df.groupby('keyword').sum().sort_values(by='clicks', ascending=False) 
df['cumulative click %'] = (df['clicks'].cumsum()/sum(df['clicks']))*100 

をキーワードの累積%を得るために、単に行の列を取得する(2回)インデックスをリセット数は、および行の合計数で、これを割る:

df = df.reset_index().reset_index() 
df['index'] = df['index'] + 1 
df['index'] = (df['index']/len(df['index']))*100 

df = df.rename(columns = {'index':'cumulative keyword %'}) 

出力:

cumulative keyword % keyword clicks cumulative click % 
0 33.333333 c 50 41.666667 
1 66.666667 b 40 75.000000 
2 100.000000 a 30 100.000000 
+0

実際に何が私が探していたが2列に合計に対するキーワードの数の相対的な寄与を表明することにありますcのlicks:各レベルの合計クリック数の%yまでのキーワード%x%を意味します(最大100%)。 – xxxvinxxx

+0

累積%で表示されているものではありませんか? 2番目の行は2つのキーワードの累積%、すべてのクリックに対する貢献度です – Kewl

+0

またはこれまでの%のキーワードを持つ別の列も必要ですか?たぶんそれは私が逃しているものだ – Kewl

関連する問題