pivot
, pivot_table
함수를 사용해 DataFrame의 구조를 변경해보는 방법에 대해 공부해보자.
pivot
함수는 pandas의 함수이다. 때문에 pivot
, pivot_table
함수를 호출하기 위해선 pandas를 불러줘야 한다.
import numpy as np
import pandas as pd
실습을 위해 DataFrame 하나를 만들어보았다.
# <in>
df = pd.DataFrame({
'지역': ['서울', '서울', '서울', '경기', '경기', '부산', '서울', '서울', '부산', '경기', '경기', '경기'],
'요일': ['월요일', '화요일', '수요일', '월요일', '화요일', '월요일', '목요일', '금요일', '화요일', '수요일', '목요일', '금요일'],
'강수량': [100, 80, 1000, 200, 200, 100, 50, 100, 200, 100, 50, 100],
'강수확률': [80, 70, 90, 10, 20, 30, 50, 90, 20, 80, 50, 10]
})
위 DataFrame은 무언가 보기에 불편함이 있다. 요일이나 지역별로 정리된 데이터가 아니기 때문이다.
pivot
함수를 사용해 dataframe의 형태를 변경해보겠다.
1. pivot 함수
# <in>
df.pivot('지역', '요일')
요일별, 지역별로 정리된 DataFrame을 볼 수 있다.
여기서 세번째 파라미터(value)를 추가하면 데이터값을 골라서 추출할 수 도 있다.
# <in>
df.pivot('지역', '요일', '강수량')
지역별, 요일별 강수량 데이터만 뽑았다.
pivot
함수를 사용해봤다. 그럼 pivot_table
함수는 언제 사용하는 것일까?
2. pivot_table 함수
pivot_table
함수는 pivot
함수와 기능적으로는 동일하다.
하지만 기존 DataFrame에 중복되는 모호한 값이 존재하는 경우, pivot_table
함수를 사용하면 aggfunc
파리미터를 사용하여 값을 채울 수 있다.
기존 서울의 화요일 데이터를 월요일로 변경하여 데이터가 중복의 경우를 인위적으로 만들어 보겠다.
# <in>
df = pd.DataFrame({
'지역': ['서울', '서울', '서울', '경기', '경기', '부산', '서울', '서울', '부산', '경기', '경기', '경기'],
'요일': ['월요일', '월요일', '수요일', '월요일', '화요일', '월요일', '목요일', '금요일', '화요일', '수요일', '목요일', '금요일'],
'강수량': [100, 80, 1000, 200, 200, 100, 50, 100, 200, 100, 50, 100],
'강수확률': [80, 70, 90, 10, 20, 30, 50, 90, 20, 80, 50, 10]
})
이런 데이터의 중복이 존재하는 상황에서 pivot
함수를 사용해 DataFrame을 요일별, 지역별로 정리해보자.
# <in>
df.pivot('요일', '지역')
duplicat error가 발생한다.
이런 상황에서 pivot_table
이 대안이 된다.
# <in>
df.pivot_table(df, index = '요일', columns = '지역', aggfunc = np.mean)
pivot
함수의 경우 중복값인 서울의 월요일 데이터를 해결할 수 없었다. 하지만 pivot_table
함수를 사용하면 두 개의 값을 평균값을 자동으로 대체해 DataFrame임을 반환해준다.
<참고> aggfunc parmeter
의 경우 default값이 mean인 것으로 보인다.
'python > pandas' 카테고리의 다른 글
21. pandas DataFrame - concat 함수. dataframe 병합 (0) | 2023.02.26 |
---|---|
20. pandas DataFrame - stack, unstack 함수 (0) | 2023.02.26 |
18. pandas DataFrame - transfrom함수 (2) | 2023.02.26 |
17. pandas DataFrame - groupby (0) | 2023.02.22 |
16. pandas DataFrame - 숫자형, 범주형 데이터의 이해 (0) | 2023.02.21 |