✍ Pandas分組(GroupBy)- 轉載@初生不惑
阿新 • • 發佈:2022-03-05
概要
任何分組(groupby)操作都涉及原始物件的以下操作之一。它們是
- 分割物件
- 應用一個函式
- 結合的結果
在許多情況下,我們將資料分成多個集合,並在每個子集上應用一些函式。在應用函式中,可以執行以下操作
- 聚合
- 計算彙總統計轉換
- 執行一些特定於組的操作過濾
- 在某些情況下丟棄資料
建立一個DataFrame物件並對其執行所有操作 -
import pandas as pd ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings', 'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'], 'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2], 'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017], 'Points':[876,789,863,673,741,812,756,788,694,701,804,690]} df = pd.DataFrame(ipl_data) print (df)
得到以下結果:
Points Rank Team Year 0 876 1 Riders 2014 1 789 2 Riders 2015 2 863 2 Devils 2014 3 673 3 Devils 2015 4 741 3 Kings 2014 5 812 4 kings 2015 6 756 1 Kings 2016 7 788 1 Kings 2017 8 694 2 Riders 2016 9 701 4 Royals 2014 10 804 1 Royals 2015 11 690 2 Riders 2017
將資料拆分成組
import pandas as pd ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings', 'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'], 'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2], 'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017], 'Points':[876,789,863,673,741,812,756,788,694,701,804,690]} df = pd.DataFrame(ipl_data) print (df.groupby('Team').groups) # 按多組分類 df.groupby(['Team','Year']).groups
返回結果:
{
'Devils': Int64Index([2, 3], dtype='int64'),
'Kings': Int64Index([4, 6, 7], dtype='int64'),
'Riders': Int64Index([0, 1, 8, 11], dtype='int64'),
'Royals': Int64Index([9, 10], dtype='int64'),
'kings': Int64Index([5], dtype='int64')
}
遍歷迭代分組
grouped = df.groupby('Year')
for name,group in grouped:
print (name)
print (group)
2014
Points Rank Team Year
0 876 1 Riders 2014
2 863 2 Devils 2014
4 741 3 Kings 2014
9 701 4 Royals 2014
2015
Points Rank Team Year
1 789 2 Riders 2015
3 673 3 Devils 2015
5 812 4 kings 2015
10 804 1 Royals 2015
2016
Points Rank Team Year
6 756 1 Kings 2016
8 694 2 Riders 2016
2017
Points Rank Team Year
7 788 1 Kings 2017
11 690 2 Riders 2017
選擇一個分組使用get_group()方法,可以選擇一個組:
grouped.get_group(2014)
原文出自【易百教程】,商業轉載請聯絡作者獲得授權,非商業請保留原文連結:https://www.yiibai.com/pandas/python_pandas_groupby.html
本文來自部落格園,作者:Arway,轉載請註明原文連結:https://www.cnblogs.com/cenjw/p/pandas-skill-groupby.html