我希望優化一些 python 代碼,但我不確定如何解決這個問題,因為我主要使用 python 來分析資料并且硬編碼技能有限,所以歡迎任何輸入。
我的資料如下所示:
X Y Stock Number
A 10-20 id1 5
A 30-40 id2 7
A 0-10 id3 18
B 30-40 id4 3
B 10-20 id5 9
C 10-20 id6 11
C 0-10 id7 9
我使用 groupby 來分析這個實體中的資料:
# Groupby
=df.groupby(['x', 'y']).agg({'stock':'count','number':'mean'}).reset_index().persist()
groupby.columns=['x', 'y', 'total_stocks', 'mean_number']
# Calculate proportions
groupby['stock_sum'] = df.groupby('y')['total_stocks'].transform('sum')
groupby['proportion'] = groupby['total_stocks'] / groupby['stock_sum']
現在,我在資料集中有更多的變數,如“X”(我們稱它們為 U、V、W、...),我想重復這個 groupby-element。我知道回圈和函式的基礎知識,我想我可以制作一個 ['X','U', 'V', 'W'] 串列,然后使用一個函式來進行分組,但我是努力想象我應該如何在函式中合并串列(并回圈其中的專案)。
uj5u.com熱心網友回復:
我希望我能正確理解你的問題。我構建了一個簡單的示例,用您想要的變數替換 X。這個基本前提可用于向回圈添加更多變數。
var_list = ['X', 'U', 'V', 'W'] # list of variables
for item in var_list:
df.groupby([item,'y']).agg({'stock':'count','number':'mean'}).reset_index().persist()
groupby.columns=[item, 'y', 'total_stocks', 'mean_number']
# Calculate proportions
groupby['stock_sum'] = df.groupby('y')['total_stocks'].transform('sum')
groupby['proportion'] = groupby['total_stocks'] / groupby['stock_sum']
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/333526.html
