2017-03-15 206 views
0

喜總的相對貢獻有個DF看起來像:計算超過在熊貓

keyword clicks 
a  20 
b  40 
c  50 
a  10 

我想獲得一個分組DF,將包含類似關鍵字相對的比例,以百分比的相對貢獻的東西點擊。

我的最終目標是檢查數據背後是否存在帕累託關係 。

我想像這樣:20%的關鍵詞貢獻了80%的點擊次數,繪製了千瓦的分數與點擊分數的比值的結果。

重現的實例是:

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

回答

0

首先GROUPBY並採取的總和,並且這些值進行排序(降序,所以最大的是第一個)。

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

要獲得關鍵字的累積%,重置指數(兩次)得到一個列,這只是該行:然後使用cumsum和總除以得到的累計百分比(在新列)號,並通過行的總數除以本:

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:這意味着x%的關鍵字佔總點擊次數的%y,每個級別最高可達100%。 – xxxvinxxx

+0

這不是累計%顯示什麼嗎?第二行是2個關鍵字的累積百分比,它們對所有點擊的貢獻爲 – Kewl

+0

或者您是否還希望到目前爲止還有另外一列有%的關鍵字?也許這就是我所缺少的 – Kewl