반응형
Pandas Data handling
- 실제 DB의 데이터를 가져오게 된다면 전처리를 필요로함
group by
( 출처: boostcamp ai pre course )
# 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)
df.groupby("Team")["Points"].sum()
->
Team
Devils 1536
Kings 2285
Riders 3049
Royals 1505
kings 812
Name: Points, dtype: int64
- hierarchical index
- 두개의 컬럼으로 group by를 할 경우 index가 2개생성
h_index = df.groupby(["Team", "Year"])["Points"].sum()
h_index
->
Team Year
Devils 2014 863
2015 673
Kings 2014 741
2016 756
2017 788
Riders 2014 876
2015 789
2016 694
2017 690
Royals 2014 701
2015 804
kings 2015 812
Name: Points, dtype: int64
- hierarchical index unstack
- 다시 테이블로 만들어줌
h_index.unstack()
->
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
- swaplevel
- index level을 변경
h_index.swaplevel()
->
Year Team
2014 Devils 863
2015 Devils 673
2014 Kings 741
2016 Kings 756
2017 Kings 788
2014 Riders 876
2015 Riders 789
2016 Riders 694
2017 Riders 690
2014 Royals 701
2015 Royals 804
kings 812
- hierachical index operation
- index level을 기준으로 기본 연산 수행 가능
h_index.sum(level=1)
->
Year
2014 3181
2015 3078
2016 1450
2017 1478
Name: Points, dtype: int64
- filter
- 특정 조건으로 데이터를 검색할 때
- filter 안에는 boolean 조건이 존재해야함
# len(x)는 grouped된 dataframe의 개수 df.groupby("Team").filter(lambda x: len(x)>=3)
merge & concat
- sql에서 사용하는 merge와 같음
- 두개의 데이터를 하나로 합침
- RDB 데이터로 되어있기 때문에 필요
# 외래키가 subject_id
#innerjoin
pd.merge(df_a,df_b, on="subject_id")
# left join, right join, outer(full join), inner join
pd.merge(df_a, df_b, on="subject_id", how="left")
반응형
'부스트캠프 AI Tech 2기 > Precourse' 카테고리의 다른 글
확률론 맛보기 (0) | 2021.07.26 |
---|---|
딥러닝 학습방법 (0) | 2021.07.25 |
Pandas (1) (0) | 2021.07.25 |
경사하강법 (1) (0) | 2021.07.22 |
행렬에 대해서 (0) | 2021.07.21 |