본문 바로가기

파이썬 기초

나는 엑셀 대신 파이썬을 사용한다. 피벗테이블편

엑셀 대신 파이썬 피벗

나는 엑셀 대신 파이썬을 사용한다.피벗 테이블 편

지난 포스팅에서는 엑셀(Excel)에서 자주 사용하는 데이터 필터 기능, 정렬 기능, 다른 엑셀 파일로 부터 값을 참조하는 VLOOKUP 기능을 파이썬으로 구현하여 보았습니다. 단지 몇 줄의 파이썬(Python) 코드 만으로 엑셀과 동일한 기능이 구현되는 것을 확인할 수 있었습니다.


자세한 내용은 다음의 링크 참조하세요. ☞ https://digital-play.tistory.com/33


오늘은 지난 포스팅이 길어지면서 다루지 못했던 엑셀의 피벗 테이블 기능을 파이썬 코드로 구현하는 방법에 대해서 알아봅시다.


예제로 사용할 엑셀 파일은 유첨 하였습니다. 다운로드하여 파이썬 코드가 있는 곳에 저장하면 됩니다.

월별, 지역별 보유하고 있는 수량이 200개 list 되어 있습니다.

예제 엑셀 파일   

월별 보유 수량.xlsx


시작하기 전에 엑셀로 지역별 제조사별로 보유 수량을 피벗 테이블을 확인해보았습니다.

(행 레이블에는 지역, 열 레이블에 제조사, 개별 데이터는 해당하는 조건의 합계로 되어 있습니다.) 

엑셀 피봇 예제


파이썬으로 위와 동일한 피벗 테이블을 만들기 위해서는 pivot_table() 이라는 함수를 이용하면 됩니다. 


먼저 pandas 라이브러리를 import 하고, 엑셀 파일로부터 데이터를 불러 오기 위해서 read_excel('파일명') 사용하여 반환 결과를 items_df 에 저장합니다. 마지막으로 pivot_table()를 이용하여 피벗 테이블을 구현하면 됩니다.


pivot_table()의 첫 번째 인자에는 사용할 데이터가 저장된 데이터(items_df)를 입력하고, values에는 구하고자 하는 데이터('보유 수량')를, index에는 행 레이블로 할 데이터('지역')를, columns에는 열 레이블로 할 데이터('제조사')를, aggfunc에는 value 값에 평균을 사용할지, 합계를 사용할지를 결정하는데 우리는 합계를 구하기 때문에 sum를 입력하면 됩니다.

파이썬 피봇 코드


실행해보면 엑셀에서 실행한 결과와 동일한 결과가 되는 것을 확인할 수 있습니다.

파이썬 피봇 코드 결과


만약 왼쪽의 행 레이블에 두 가지 항목(월별, 지역별)을 추가 하고 싶다면 index에 두 가지 항목을 리스트 형태로 아래와 같이 입력하면 됩니다.


index=['월', '지역']


마찬가지로 columns에도 리스트의 형태로  입력 가능합니다.

엑셀 피벗 예제 3



마지막으로 aggfunc에는 이번 포스팅에서는 합계를 사용하기 위해 sum를 사용하였는데 합계 외 다른 데이터로 변경하고 싶으면 변경이 가능합니다.


최소 값의 경우에는 'min', 최대 값의 경우에는 'max', 평균을 원하면 'mean', 개수를 카운터하기 위해서는 'count'를 입력하면 됩니다.  


오늘은 엑셀의 강력한 기능 중의 하나인 피벗 테이블 기능을 파이썬으로 구현해보았습니다.

궁금한 점 있으면 언제든지 댓글 주세요.