엑셀 피벗 테이블(Pivot Table), 파이썬 코드 한 줄로 1초 만에 자동화하기

 

수만 줄, 수십만 줄의 원본 데이터(Raw Data)를 팀장님이 한눈에 볼 수 있도록 요약하려면 어떻게 해야 할까요? 엑셀을 조금 다룰 줄 아는 직장인이라면 주저 없이 '피벗 테이블(Pivot Table)'을 켤 것입니다. 십자 모양의 틀 안에 부서명, 날짜, 매출액을 마우스로 끌어다 놓기만 하면 순식간에 멋진 요약 보고서가 완성되니까요.

하지만 엑셀 피벗 테이블에는 치명적인 단점이 있습니다. 매달 새로운 데이터가 추가될 때마다 원본 범위를 다시 잡고 '새로고침'을 눌러야 하며, 마우스로 일일이 필드를 드래그하는 작업은 '자동화'와 거리가 멉니다. 파이썬 판다스(Pandas)에서는 이 번거로운 마우스 드래그 작업을 단 한 줄의 코드로 영구적으로 자동화할 수 있습니다. 오늘은 파이썬으로 피벗 테이블을 1초 만에 뚝딱 만들어내는 공식을 알아보겠습니다.


1. 엑셀의 4구역, 파이썬 코드로 매칭하기

엑셀 피벗 테이블을 띄우면 우측에 4개의 네모 칸(필터, 열, 행, 값)이 나옵니다. 파이썬의 pd.pivot_table() 함수는 이 4개의 칸을 영단어로 그대로 옮겨놓았을 뿐, 원리는 100% 똑같습니다.

  • index : 엑셀의 [행] (예: 부서별로 볼래)
  • columns : 엑셀의 [열] (예: 월별로 나누어서 볼래)
  • values : 엑셀의 [값] (예: 매출액을 볼래)
  • aggfunc : [계산 방식] (예: 더할래? 평균을 낼래?)

이 공식만 머릿속에 넣으면 끝입니다. "부서별(행), 월별(열) 매출액(값)의 합계(계산)를 구해줘!"를 코드로 바꾸면 아래와 같이 됩니다.

pivot_df = pd.pivot_table(df, index='부서명', columns='월', values='매출액', aggfunc='sum')

이 한 줄을 실행하는 순간, 마우스로 낑낑대며 드래그하던 그 요약 표가 파이썬 화면에 즉시 나타납니다.


2. 다중 조건 설정하기 (대분류 > 소분류)

실무 보고서는 단순하지 않습니다. "본부별로 먼저 나누고, 그 안에서 다시 팀별로 나누어서 매출을 보여줘" 같은 다중 조건이 수시로 붙습니다. 엑셀에서는 행 칸에 필드를 두 개 끌어다 놓으면 되죠? 파이썬에서는 대괄호 []를 써서 두 개를 묶어주기만 하면 됩니다.

pd.pivot_table(df, index=['본부명', '팀명'], values='매출액', aggfunc='sum')

마찬가지로 매출액(합계)과 영업이익(평균)을 동시에 보고 싶다면 values=['매출액', '영업이익'], aggfunc=['sum', 'mean'] 처럼 대괄호 안에 여러 개를 나열하면 됩니다. 엑셀보다 훨씬 직관적이고 오류가 날 확률이 제로에 가깝습니다.


3. 클릭 한 번에 '총합계' 추가하기: margins=True

보고서의 생명은 맨 밑, 그리고 맨 오른쪽에 있는 '총합계'입니다. 엑셀에서는 디자인 탭에 들어가서 '총합계 표시'를 마우스로 클릭해서 켜주어야 합니다. 파이썬에서는 아주 우아한 옵션 하나로 끝납니다.

pd.pivot_table(df, index='부서명', values='매출액', aggfunc='sum', margins=True)

끝에 margins=True (여백에 합계를 추가하라) 라는 옵션만 달아주면, 판다스가 알아서 행과 열의 맨 끝에 'All'이라는 이름표를 달고 전체 총합계를 계산해서 붙여줍니다. 이렇게 완성된 피벗 데이터는 11편에서 배운 to_excel()을 통해 그대로 엑셀 파일로 쏙 뽑아내면 팀장님 책상에 올라갈 완벽한 요약 보고서가 됩니다.


데이터 분석, 마우스 대신 코드로 지휘하세요

피벗 테이블을 코드로 짠다는 것이 처음에는 어색하게 느껴질 수 있습니다. 하지만 한 번만 세팅해 두면, 내일 수십만 줄의 새로운 데이터가 들어와도 코드 실행 버튼 클릭 한 번에 1초 만에 요약 보고서가 튀어나오는 마법을 경험하시게 될 겁니다. 이것이 바로 파이썬으로 퇴근 시간을 앞당기는 진짜 무기입니다.

▶ 핵심 요약

  • 엑셀 피벗 테이블의 마우스 드래그 작업은 파이썬 판다스의 pd.pivot_table() 함수 단 한 줄로 완벽하게 대체할 수 있습니다.
  • index(행), columns(열), values(값), aggfunc(계산방식) 네 가지 옵션에 원하는 열 이름을 적어주는 것이 기본 공식입니다.
  • 다차원 분석이 필요할 때는 대괄호 []를 사용하고, 총합계가 필요할 때는 margins=True 옵션을 추가하여 실무 보고서 포맷을 단숨에 완성합니다.

▶ 다음 편 예고

피벗 테이블로 숫자를 깔끔하게 요약했으니, 이제 팀장님의 눈을 사로잡을 '시각화' 작업이 필요합니다. 다음 14편에서는 '엑셀 차트 필요 없다! 파이썬으로 1초 만에 꺾은선, 막대그래프 그리고 엑셀에 삽입하기'에 대해 다루겠습니다.

여러분은 엑셀에서 피벗 테이블을 돌리다가 데이터가 너무 많아서 메모리 부족으로 엑셀이 강제 종료된 뼈아픈 경험이 있으신가요? 엑셀 피벗 테이블의 가장 짜증 났던 단점을 댓글로 공유해 주세요!

댓글

이 블로그의 인기 게시물

수만 줄의 데이터, 엑셀이 멈출 때 파이썬으로 가볍게 필터링하는 요령

엑셀 셀 병합 데이터, 파이썬으로 불러올 때 엉망으로 깨지는 현상 완벽 해결법

수식이 걸린 엑셀 데이터, 파이썬으로 불렀더니 NaN이 뜨는 이유와 해결법