1. 程式人生 > 其它 >利用Python進行資料分析_資料聚合與分組運算_分組級運算和轉換

利用Python進行資料分析_資料聚合與分組運算_分組級運算和轉換

transform方法

transform會講一個函式運用到各個分組。

檔案6.xlsx的內容如下:

假設我們想為DataFrame新增一個用於存放各索引分組平均值的列。我們可以先聚合再合併:

from pandas import Series,DataFrame
import pandas as pd
df = pd.read_excel('F:/Jupyter/6.xlsx')
sex_mean = df.groupby('sex').mean().add_prefix('mean_')
sex_mean
pd.merge(df,sex_mean,left_on='sex',right_index=True)

接下來,我們用transform方法解決這個問題:

from pandas import Series,DataFrame
import pandas as pd
import numpy as np
df = pd.read_excel('F:/Jupyter/6.xlsx')
key = ['sex']
sex_mean = df.groupby(key).transform(np.mean).add_prefix('mean_')
sex_mean

執行結果:

這個方法的好處是,假設我們現在要將每個人的平均分再減10分。我們只需要寫一個函式 defminus()

from pandas import Series,DataFrame
import pandas 
as pd import numpy as np df = pd.read_excel('F:/Jupyter/6.xlsx') # key = ['age'] def minus(arr): return arr-10 sex_mean = df.groupby('age').transform(minus).add_prefix('mean_') sex_mean

執行結果:

從結果中,我們可以看到列表中的每個數值均被減10。

applye方法

呼叫applye方法返回的是一個pandas物件或標量值。

題目:分別計算男生和女生每個科目的平均成績。

from pandas import
Series,DataFrame import pandas as pd import numpy as np df = pd.read_excel('F:/Jupyter/6.xlsx') def find(df): return df.mean() sex = df.groupby('sex').apply(find) sex

執行結果: