edwith_python_(7)groupby 와 pivot_table 사용하기

Updated:

edwith 부스트코스 파이썬으로 시작하는 데이터 사이언스 를 공부하는 과정입니다.

지난 포스트 :point_right: edwith_python_(6)건강검진데이터 살펴보기


8.1 groupby

groupby를 통해 “성별코드”로 그룹화하여 “가입자일련번호” 값의 개수 카운팅
df.groupby(["성별코드"])["가입자일련번호"].count()

*결과*

성별코드
1    530410
2    469590
Name: 가입자일련번호, dtype: int64

꿀팁 :bulb:
함수에 대한 정보를 알고 싶을 때는 함수 뒤에 ? 를 입력하면 도움말을 볼 수 있다.
ex) df.groupby에 대한 정보를 얻고싶을 때 df.groupby? 입력

“성별코드”와 “음주여부”로 그룹화하여 개수 카운팅
 df.groupby(["성별코드", "음주여부"])["가입자일련번호"].count()

*결과*

성별코드  음주여부
1     0.0     173612
      1.0     356587
2     0.0     326827
      1.0     142438
Name: 가입자일련번호, dtype: int64
“성별코드”와 “음주여부”로 그룹화하여 “감마지티피”의 평균 구하기

df.groupby([“성별코드”, “음주여부”])[“감마지티피”].mean()

*결과*

성별코드  음주여부
1     0.0     34.739868
      1.0     56.610981
2     0.0     22.612408
      1.0     25.001018
Name: 감마지티피, dtype: float64
“성별코드”와 “음주여부”로 그룹화하여 “감마지티피”의 요약수치 구하기
df.groupby(["성별코드", "음주여부"])["감마지티피"].describe()

*결과*

    count mean std min 25% 50% 75% max
성별코드 음주여부                
1 0.0 173604.0 34.739868 37.606197 1.0 18.0 25.0 38.0 999.0
  1.0 356576.0 56.610981 68.851128 1.0 24.0 37.0 63.0 999.0
2 0.0 326813.0 22.612408 25.203579 1.0 13.0 17.0 24.0 999.0
  1.0 142429.0 25.001018 36.725100 1.0 13.0 17.0 25.0 999.0
agg를 사용하여 여러 수치를 한번에 나타내기
df.groupby(["성별코드", "음주여부"])["감마지티피"].agg(["count", "mean", "max"])

*결과*

    count mean max
성별코드 음주여부      
1 0.0 173604 34.739868 999.0
  1.0 356576 56.610981 999.0
2 0.0 326813 22.612408 999.0
  1.0 142429 25.001018 999.0

max 값이 999.0 으로 동일한 것으로 보아, 어떤 의미가 있을 것으로 추정.
max값 때문에 mean값이 영향을 받아서 편향이 있을 것으로 생각됨 (중위값보다 높음)
agg : aggregation(뜻: 집합)의 약자

8.2 pivot_table

“음주여부”에 따른 그룹화된 수를 피봇테이블로 구하기
df.pivot_table(index="음주여부", values="가입자일련번호", aggfunc="count")

*결과*

  가입자일련번호  
음주여부    
0.0 500439  
1.0 499025  

pivot: 연산을 하지 않고 데이터 형태만 바꾸고자할 때 사용
pivot_table: 연산을 하고자할 때 사용

“음주여부”에 따른 “감마지티피”의 평균 구하기
df.pivot_table(index="음주여부", values="감마지티피", aggfunc=["mean", "median", "describe"])

*결과*

  mean median describe              
  감마지티피 감마지티피 25% 50% 75% count max mean min std
음주여부                    
0.0 26.819650 19.0 14.0 19.0 29.0 500417.0 999.0 26.819650 1.0 30.639714
1.0 47.588675 30.0 18.0 30.0 52.0 499005.0 999.0 47.588675 1.0 63.056912

aggfunc를 생략하면 mean값으로 출력됨
pd.pivot_table(df, index=”음주여부”, values=”감마지티피, aggfunc=”mean”)과 같음

“성별코드”, “음주여부”에 따른 “감마지티피”의 평균 구하기
df.pivot_table(index=["성별코드", "음주여부"], values="감마지티피", aggfunc=["mean"])

다음 포스트 :point_right: edwith_python_(8)histogram과 countplot으로 데이터 시각화하기

Categories:

Updated:

Leave a comment