我想操縱上述大熊貓據幀「的每一天,以第一次登錄< 14天」‘連鎖銷售’找到的百分比,並通過每天分組,以有這樣的答案:「5月1日,20%的網絡銷售用戶,而其他銷售渠道的5%用戶在14天內登錄」
那麼我可以繪製所有銷售渠道的時間線圖基於這些百分比數字。
請告訴我該怎麼做。謝謝。
我想操縱上述大熊貓據幀「的每一天,以第一次登錄< 14天」‘連鎖銷售’找到的百分比,並通過每天分組,以有這樣的答案:「5月1日,20%的網絡銷售用戶,而其他銷售渠道的5%用戶在14天內登錄」
那麼我可以繪製所有銷售渠道的時間線圖基於這些百分比數字。
請告訴我該怎麼做。謝謝。
你可以有計數(而不是百分比):
dataframe['amount'] = 1
output = dataframe.groupby(['Opened','Sales chain', 'Days to 1st login < 14 days'],as_index = False).sum()
然後計算百分比似乎相對容易。如果您的數據幀是不是大,你可以遍歷行:
for i in range(len(output)/2):
temp = output.amount[i]+output.amount[i+1]
output.amount[i] /= 1.*temp
output.amount[i+1] /= 1.*temp
我希望這個代碼工作,因爲我沒有一個代碼創建數據幀我無法測試它。
您可以使用交叉
In [29]: df
Out[29]:
Opened Sales Chain Days to 1st login <14
0 140936 02.05.2015 Others Yes
1 140937 02.05.2015 Others No
2 140938 02.05.2015 Aspa No
3 140939 02.05.2015 Others Yes
4 140940 02.05.2015 Others No
5 140941 02.05.2015 Others No
6 140942 02.05.2015 Aspa No
7 140943 02.05.2015 Others Yes
8 140944 02.05.2015 Web No
9 140945 01.05.2015 Web No
10 140946 01.05.2015 Web No
In [30]: df_counts = pd.crosstab([df['Sales'], df['Chain']], df['Days to 1st login <14'])
In [31]: df_counts
Out[31]:
Days to 1st login <14 No Yes
Sales Chain
01.05.2015 Web 2 0
02.05.2015 Aspa 2 0
Others 3 3
Web 1 0
In [32]: 100 * df_counts['Yes']/(df_counts['Yes'] + df_counts['No'])
Out[32]:
Sales Chain
01.05.2015 Web 0.0
02.05.2015 Aspa 0.0
Others 50.0
Web 0.0
dtype: float64
或GROUPBY更加簡單和適用
In [33]: df.groupby(['Sales', 'Chain']).apply(lambda x: 100 * len(x[x['Days to 1st login <14'] == 'Yes'])/len(x))
Out[33]:
Sales Chain
01.05.2015 Web 0.0
02.05.2015 Aspa 0.0
Others 50.0
Web 0.0
dtype: float64
才能添加所需的輸入輸出的Dataframe'的'提取物? – jezrael