분류별 누적 지출 합계 구하기
이제 데이터프레임의 인덱스를 열로 전환하고, 분류별 누적 지출 금액을 확인할 수 있는 액셀 파일로 저장해 봅시다. 데이터프레임의 인덱스를 일반 열로 전환하면 특정 열을 기준으로 데이터를 정렬하거나 그룹화할 때 용이하기 때문입니다. 그 다음에는 코드를 재사용할 수 있도록 정리해 저장하겠습니다.
데이터프레임 인덱스 재설정
이전 단계에서 만든 데이터프레임 df_sort에서 분류 열은 데이터프레임의 인덱스로 설정되어 있습니다. 일반 열로 변경해 봅시다.
함수 reset_index()는 데이터프레임의 인덱스를 일반 열로 전환하고, 0부터 시작하는 정수를 인덱스로 재설정합니다.
소스 코드 'step_3_1.py'에 이어서 다음 코드를 추가한 뒤, 대화형 창에서 실행하세요. [실행결과]를 보면 '분류'열이 일반 열로 이동한 것을 볼 수 있습니다.
import pandas as pd
from step_2_2 import OUT_2_2 # 이전에 작성한 모듈을 불러옵니다.
df_raw = pd.read_excel(OUT_2_2)
df_pivot_1 = pd.pivot_table(df_raw, index="분류", values="사용금액", aggfunc="sum")
df_raw["거래연월"] = df_raw["거래일시"].str.slice(0, 7)
df_raw
df_pivot_2 = pd.pivot_table(df_raw, index="분류", columns="거래연월",
values="사용금액", aggfunc="sum")
df_pivot_2["누적금액"] = df_pivot_2.sum(axis=1)
df_pivot_2
df_sort = df_pivot_2.sort_values("누적금액", ascending=False)
df_sort
df_reindex = df_sort.reset_index()
df_reindex
[실행결과]

액셀 파일로 저장
마지막으로 변수 df_reindex에 저장된 데이터프레임을 액셀 파일로 저장해 볼 텐데요. pandas 패키지의 함수 to_excel()를 사용하면 간단히 해결할 수 있습니다.
이전 단계에서 작샹한 코드에 다음 코드를 추가로 입력하고, 대화형 창에서 실행하면 'output' 폴더에 'step_3_1.xlsx' 파일이 생성됩니다.
import pandas as pd
from step_2_2 import OUT_2_2 # 이전에 작성한 모듈을 불러옵니다.
df_raw = pd.read_excel(OUT_2_2)
df_pivot_1 = pd.pivot_table(df_raw, index="분류", values="사용금액", aggfunc="sum")
df_raw["거래연월"] = df_raw["거래일시"].str.slice(0, 7)
df_raw
df_pivot_2 = pd.pivot_table(df_raw, index="분류", columns="거래연월",
values="사용금액", aggfunc="sum")
df_pivot_2["누적금액"] = df_pivot_2.sum(axis=1)
df_pivot_2
df_sort = df_pivot_2.sort_values("누적금액", ascending=False)
df_sort
df_reindex = df_sort.reset_index()
df_reindex
from pathlib import Path
from step_1 import OUT_DIR # 이전에 작성한 모듈을 불러옵니다.
df_reindex.to_excel(OUT_DIR / f"{Path(__file__).stem}.xlsx", index=False
, sheet_name="분류별누적금액")
[실행결과]

소스 코드 정리
이번 절의 실행 결과 파일의 경로를 변수로 저장하여 다음 절에서 쉽게 불러올 수 있도록 코드를 정리하겠습니다. 새로운 파일을 만들어 파일명을 'step_3_2.py'로 변경합니다. 다음 코드를 입력한 뒤, 대화형 창에서 실행하면 'output' 폴더에 실행 결과 파일 'step_3_2.xlsx'이 생성됩니다. 이 액셀 파일에는 분류벼르 거래연월별로 카드 지출 누적 금액이 내림차순으로 정렬되어 있습니다.
from pathlib import Path
import pandas as pd
from step_1 import OUT_DIR # 이전에 작성한 모듈을 불러옵니다.
from step_2_2 import OUT_2_2
OUT_3_2 = OUT_DIR / f"{Path(__file__).stem}.xlsx"
if __name__ == "__main__":
df_raw = pd.read_excel(OUT_2_2)
df_raw["거래연월"] = df_raw["거래일시"].str.slice(0, 7)
df_pivot = pd.pivot_table(df_raw, index="분류", columns="거래연월",
values="사용금액", aggfunc="sum")
df_pivot["누적금액"] = df_pivot.sum(axis=1)
df_sort = df_pivot.sort_values("누적금액", ascending=False)
df_reindex = df_sort.reset_index()
df_reindex.to_excel(OUT_3_2, index=False, sheet_name="분류별누적금액")
'프로그래밍 언어 > Python' 카테고리의 다른 글
| 제목, 레이블, 범례 추가하기 (0) | 2025.11.11 |
|---|---|
| 분류별 누적금액 시각화하기 (0) | 2025.11.08 |
| 집계 기준 추가하기 (0) | 2025.11.02 |
| 분류별 지출 합계 구하기 (0) | 2025.10.30 |
| 1분기 3개의 카드 명세서 하나로 취합하기 (0) | 2025.10.27 |