如圖:app
by:根據什麼進行分組,用於肯定groupby的組函數
as_index:對於聚合輸出,返回以組便籤爲索引的對象,僅對DataFrameui
df1 = pd.DataFrame({'fruit':['apple','banana','orange','apple','banana'], 'color':['red','yellow','yellow','cyan','cyan'], 'price':[8.5,6.8,5.6,7.8,6.4]}) #查看類型 type(df1.groupby('fruit')) pandas.core.groupby.groupby.DataFrameGroupBy #GruopBy對象,它是一個包含組名,和數據塊的2維元組序列,支持迭代 for name, group in df1.groupby('fruit'): print(name) #輸出組名 apple banana orange print(group) # 輸出數據塊 fruit color price 0 apple red 8.5 3 apple cyan 7.8 fruit color price 1 banana yellow 6.8 4 banana cyan 6.4 fruit color price 2 orange yellow 5.6 #輸出group類型 print(type(group)) #數據塊是dataframe類型 <class 'pandas.core.frame.DataFrame'> <class 'pandas.core.frame.DataFrame'> <class 'pandas.core.frame.DataFrame'> #選擇任意的數據塊 dict(list(df1.groupby('fruit')))['apple'] #取出apple組的數據塊 fruit color price 0 apple red 8.5 3 apple cyan 7.8
#Groupby對象具備上表中的聚合方法 #根據fruit來求price的平均值 df1['price'].groupby(df1['fruit']).mean() fruit apple 8.15 banana 6.60 orange 5.60 Name: price, dtype: float64 #或者 df1.groupby('fruit')['price'].mean() #as_index=False df1.groupby('fruit',as_index=False)['price'].mean() fruit price 0 apple 8.15 1 banana 6.60 2 orange 5.60 """ 若是我如今有個需求,計算每種水果的差值, 1.上表中的聚合函數不能知足於咱們的需求,咱們須要使用自定義的聚合函數 2.在分組對象中,使用咱們自定義的聚合函數 """ #定義一個計算差值的函數 def diff_value(arr): return arr.max() - arr.min() #使用自定義聚合函數,咱們須要將函數傳遞給agg或aggregate方法,咱們使用自定義聚合函數時,會比咱們表中的聚合函數慢的多,由於要進行函數調用,數據從新排列 df1.groupby('fruit')['price'].agg(diff_value) fruit apple 0.7 banana 0.4 orange 0.0 Name: price, dtype: float64