利用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分。我們只需要寫一個函數 def minus() 

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

運行結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章