[Pandas] 04. DataFrame Grouping
Updated:
import pandas as pd
import numpy as np
1. Grouping
DataFrame은 특정 column을 기준으로 grouping할 수 있다.
df.groupby(by)을 이용하면 by를 기준으로 DataFrame을 grouping한다.
이렇게 groupby를 이용해 grouping을 하게 되면 SQL의 groupby처럼 다양한 통계함수를 적용할 수 있다.(mean(), median(),std(), var())
d = {'name':['John','Amy','Kate','Rose','Candy',"Alba"],
'class': ['math'] * 3 + ['science'] *3,
'score': np.random.uniform(10,60,(6,))}
df = pd.DataFrame(d,index=list('abcdef'))
df
name | class | score | |
---|---|---|---|
a | John | math | 20.564261 |
b | Amy | math | 40.301031 |
c | Kate | math | 43.148579 |
d | Rose | science | 35.045047 |
e | Candy | science | 12.243794 |
f | Alba | science | 19.477356 |
df.groupby('class').size()
class
math 3
science 3
dtype: int64
df.groupby('class').sum()
score | |
---|---|
class | |
math | 104.013872 |
science | 66.766197 |
df.groupby('class').median()
score | |
---|---|
class | |
math | 40.301031 |
science | 19.477356 |
groupby_class = df.groupby('class')
for sub, group in groupby_class:
print(sub + " count:" + str(groupby_class.size()[sub]))
print(group)
math count:3
name class score
a John math 20.564261
b Amy math 40.301031
c Kate math 43.148579
science count:3
name class score
d Rose science 35.045047
e Candy science 12.243794
f Alba science 19.477356
Leave a comment