(Machine) 12. Pandas # 2
1. Group by
- SQL groupby 명령과 같음
- split -> applly -> combin 과정을 거쳐 연산함
- 한 개 이상의 컬럼을 그룹할 수 있음
# 기본 data from:
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)
# ===== 기본 데이터값
# Team Rank Year Points
# 0 Riders 1 2014 876
# 1 Riders 2 2015 789
# 2 Devils 2 2014 863
# 3 Devils 3 2015 673
# 4 Kings 3 2014 741
# 5 kings 4 2015 812
# 6 Kings 1 2016 756
# 7 Kings 1 2017 788
# 8 Riders 2 2016 694
# 9 Royals 4 2014 701
# 10 Royals 1 2015 804
# 11 Riders 2 2017 690
df.groupby("Team")["Points"].sum()
# === Team기준 points sum 결과
# Team
# Devils 1536
# Kings 2285
# Riders 3049
# Royals 1505
# kings 812
2. Hierarchical index
- Hierarchical index은 여러개의 인덱스를 가진것을 말한다.
- Groupby 명령의 결과물도 결국 dataframe
- 두개의 column으로 groupby를 할 경우, index가 두개 생성
h_index = df.groupby(["Team","Year"])["Points"].sum()
h_index.index
# ====== 멀티 인덱스 값 부여
# MultiIndex([('Devils', 2014),
# ('Devils', 2015),
# ( 'Kings', 2014),
# ( 'Kings', 2016),
# ( 'Kings', 2017),
# ('Riders', 2014),
# ('Riders', 2015),
# ('Riders', 2016),
# ('Riders', 2017),
# ('Royals', 2014),
# ('Royals', 2015),
# ( 'kings', 2015)],
# names=['Team', 'Year'])
h_index.unstack()
# ======= unstack() matrix 형태로 바꿔줌
# Year 2014 2015 2016 2017
# Team
# Devils 863.0 673.0 NaN NaN
# Kings 741.0 NaN 756.0 788.0
# Riders 876.0 789.0 694.0 690.0
# Royals 701.0 804.0 NaN NaN
# kings NaN 812.0 NaN NaN
댓글남기기