GroupBy針對DataFrame將其按照某個准則分組
1.常見的調用形式為:
df['a'].GroupyBy(df['b']) df.GroupyBy(df['b','c'])#層次化的索引 df.GroupyBy(['b','c'])#直接將columns名稱作為索引鍵進行索引
以上可理解為將Series作為分組鍵,y此外還可以將任何適當長度的array作為分組鍵,目前未嘗試過
2.常用的方法:
df.GroupyBy(df['b']).mean()#非數值列數據直接跳過 df.GroupyBy(df['b']).size()#返回一個分組的大小的Series(每個值對應的是當前鍵元素的個數)
df.GroupyBy(df['b']).std()
3.舉例GroupyBy的應用:
如給出的csv文件中columns包含['City','State','Population'],讓求出每個州所有城市人口的平均值,此時就可以用
df['population'].GroupBy(['State']).mean()
注:GroupyBy函數說明在http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.groupby.html#pandas.DataFrame.groupby
agg用於聚合運算
1.agg的函數如其名為聚合作用,他接在被groupby函數后的類型使用。
2.幾種常見的用法為
#求自己定義的函數 df.groupby(['a']).agg(func)#這個函數是我自己定義過的 #同理也可 df.groupby(['a']).agg(‘mean’) #同時求幾個函數 df.groupby(['a']).agg(['min','max',func]) #以上為常用情況 #如果想換聚合函數的標題 df.groupby([('foo',yongbut'mean'),('bar',func)]) #如果想對不同的列用不同的聚合方式 df.groupby(['a']).agg({'a':'sum','b':['min','max','std']})
函數說明:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.groupby.DataFrameGroupBy.agg.html
Apply函數-可針對DataFrame和Series操作,返回是DataFrame和Series
1.理解:apply將他應用的對象拆分到小一級,然后讓拆分后的每個子部分去實施apply括號內的函數操作,再把操作后的結果合在一起
2.apply可以說是非常常用,這里只說一個基本的用例,連帶理解了lambda的用法
energy['Energy Supply']=energy['Energy Supply'].apply(lambda x : x*1000000)
注:Apply函數說明 http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.apply.html#pandas.DataFrame.apply
