pandas에서 범주로 데이터 그룹화

Python으로 범주형 데이터 다루기

Kasey Jones

Research Data Scientist

.groupby() 기본: 데이터 분할

adult = pd.read_csv("data/adult.csv")
adult1 = adult[adult["Above/Below 50k"] == " <=50K"]
adult2 = adult[adult["Above/Below 50k"] == " >50K"]

은(는) {{2}}로 대체됩니다

groupby_object = adult.groupby(by=["Above/Below 50k"])
Python으로 범주형 데이터 다루기

.groupby() 기본: 함수 적용

groupby_object = adult.groupby(by=["Above/Below 50k"])

함수 적용:

groupby_object.mean()
                       Age        fnlgwt  Education Num  Capital Gain ...
Above/Below 50k                                                                                
 <=50K           36.783738  190340.86517       9.595065    148.752468 ...   
 >50K            44.249841  188005.00000      11.611657   4006.142456 ...

원라인:

adult.groupby(by=["Above/Below 50k"]).mean()
Python으로 범주형 데이터 다루기

열 지정하기

옵션 1: 두 열에만 .sum() 실행.

adult.groupby(by=["Above/Below 50k"])['Age', 'Education Num'].sum()
                    Age  Education Num
Above/Below 50k                       
 <=50K           909294         237190
 >50K            346963          91047

옵션 2: 모든 수치 열에 .sum() 실행 후 서브셋.

adult.groupby(by=["Above/Below 50k"]).sum()[['Age', 'Education Num']]

대규모 데이터셋에서는 옵션 1 권장

Python으로 범주형 데이터 다루기

여러 열로 그룹화

adult.groupby(by=["Above/Below 50k", "Marital Status"]).size()
Above/Below 50k  Marital Status        
 <=50K            Divorced                  3980
                  Married-AF-spouse           13
                  Married-civ-spouse        8284
                  Married-spouse-absent      384
                  Never-married            10192
                  Separated                  959
                  Widowed                    908
 >50K             Divorced                   463
                  Married-AF-spouse           10 <--- Only 10 records
                  Married-civ-spouse        6692
    ...
Python으로 범주형 데이터 다루기

.groupby() 연습

Python으로 범주형 데이터 다루기

Preparing Video For Download...