본문 바로가기

배우기/복습노트[Python과 분석]

[복습] Python 또 다른 형태의 교차표 생성(pd.crosstab, pivot, pivot_table)

728x90
반응형

1. crosstab 

  - pd.crosstab 함수(cross table을 만들어주는 함수)

  - 범주형 자료 분석을 위한 빈도수에 대한 교차표 리턴시 주로 사용

  - 요약 기능 가짐

 

적합도 검정, 동질성 검정, 독립성 검정 중 cross table을 만들겠다는 것은 독립성 검정을 위한 것이다.

(일원 분할표는 동질성 검정)

 

예) 부서별로 JOB에 대한 배치가 다른지 확인 → DEPTNO, JOB에 대한 cross table이 필요하다는 의미

 

나중에 범주형 자료분석 할 때 빈도수를 쉽게 구할 수 있는 방법이기 때문에 많이 사용할 함수이다.

 

 

 

 

 

 

2. pivot / pivot_table (후자를 더 많이 사용함)

  1) pivot

  - 이미 요약되어 있는 데이터를 교차표 형태로 만들어줌(요약 기능 → 평균, 총합 등의 연산 불가)

 

emp.pivot(index = ,

                 columns = ,

                 values = )

 

 

  2) pivot_table

  - 교차표 작성

  - 요약기능 가짐

 

emp.pivot_table(values ,                    # value 컬럼

                           index,                       # index 에 배치할 컬럼

                           columns,                  # column 자리에 배치할 컬럼

                           aggfunc  = ‘mean’,   # 요약함수 자리.  평균이 디폴트

                           fill_value,                 # na로 리턴되는 cell의 치환값

                           margins = False)     # 총계 출력 여부. 총합, 총계 표현할 때 사용.

 

 

예) 부서별로 JOB 별 SAL 평균

1) pivot

이 방식으로는 생성이 불가하다.

pivot은 요약이 기존에 되어 있어야 데이터를 피벗팅 할 수 있다. 

따라서 아래와 같은 과정을 거친 후에야 피벗 테이블을 만들 수 있다.

 

 

 

2) pivot_table

pivot_table은 values를 요약해주는 기능이 있다.

aggfunc = 'mean' 이 default이다.

 

aggfunc = 'sum' 으로 설명하면 합을 계산해준다.

 

emp.pivot_table(index = 'DEPTNO', columns = 'JOB', values = 'SAL', aggfunc = 'sum', fill_value = 0, margins = True)

fill_value = 0, margins = True 설정하면 위와 같이 NaN 자리에 0으로 채워지고, 총계가 리턴된다.

 

 

 

반응형

 

 

연습문제

 

student.csv 파일을 읽고 학년별 성별(index방향) 키에 대한 교차표를 생성하여라.

 

 

 

728x90
반응형