집계 기준 추가하기
데이터프레임에 거래연월 집계 기준 추가
∨ 함수 str.slice()를 사용한 데이터프레임 슬라이싱
파이썬은 대괄호 [ ]와 인덱스를 사용해서 문자열을 슬라이싱할 수 있습니다.
데이트프레임에서 대괄호는 말에 선택하는 연산자입니다. 데이터프레임에서 열 전체에 대해 문자열 슬라이싱을 적용하면 대괄호로 열을 선택한 뒤, 함수 str.slice()에 시작과 끝 인덱스를 전달하면 됩니다.
df_raw["거래일시"].str.slice(0, 7)
데이터 쉽게 기준을 조금 더 세분화해 거래일시 열에서 연도와 월을 분리하고, 월별로 지출금액의 함계를 구할 수 있도록 만들어 봅시다. 함수 str.slice()를 사용하여 거래일시 열에서 연도와 월을 슬라이싱하고, 데이터프레임에 거래연월 열을 추가하면 됩니다.
ch02/step3_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
| 거래일시 | 가맹점명 | 분류 | 거래연결 | |
| 0 | 2024-01-01 19:40 | 애플스토어 | 전자기기 | 2024-01 |
| 1 | 2024-01-02 09:55 | 이디야 커피 | 카페/음료 | 2024-01 |
| 2 | 2024-01-02 17:42 | 메가박스 | 영화 | 2024-01 |
비펏 테이블에 누적금액 열 추가
데이터프레임의 가래연월 일을 피벗 테이블의 열로 추가해 카드 명세서의 지출 내역을 분류별, 월별로 집계해 봅시다. 이번에는 3개월 동안의 분류별 누적 금액도 비펏 테이블의 열에 추가하기 위해 함수 pivot_table()를 호출할 때 매개변수 columns를 추가하고, 가래연월 열 이름을 전달합니다.
이전 코드에 이어서 다음 코드를 추가한 뒤, 대화형 창에서 실행하세요.
ch02/step3_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") # 10
df_pivot_2["누적금액"] = df_pivot_2.sum(axis=1)
df_pivot_2 # 12
| 거래연월 | 2024-01 | 2024-02 | 2024-03 | 누적금액 |
| 분류 | ||||
| 대중교통 | 7000 | 2000 | 5000 | 14000 |
| 배달음식 | 249000 | 110000 | 204000 | 563000 |
| 식당 | 65000 | 53000 | 115000 | 233000 |
10 함수 pivot_table()을 사용하여 피벗 테이블을 만듭니다. 이때 매개변수 cloumns에 '거래연월'을 전달하여 분류별, 훨별로 사용 금액의 합계를 집계합니다.
11 함수 sum()를 사용하여 피벗 테이블의 행별 합계를 구한 뒤, 이를 누적금액 열로 저장합니다. 함수 pivot_table()는 총합계 열을 자동으로 생성하지 않기 때문에 이렇게 별도로 계산해야 합니다.
누적 금액으로 정렬
df_pivot_2 데이터프레임의 누적 금액 열을 내림차순으로 정렬하면 어느 분야에 가장 많이 지출했는지 쉽게 파악할 수 있습니다. 함수 sort_values()를 사용해서 데이터프레임을 정렬해 봅시다.
이전 코드에 이이서 다음 코드를 추가한뒤, 대화형 창에서 실행하세요.
ch02/step3_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) # 15
df_sort
| 거래연월 | 2024-01 | 2024-02 | 2024-03 | 누적금액 |
| 분류 | ||||
| 의류 | 278000 | 653000 | 642000 | 1573000 |
| 배달음식 | 64000 | 578000 | 194000 | 836000 |
| 식당 | 417600 | 67300 | 222600 | 707500 |
15 함수 sort_values()의 첫 번째 입력값에 정렬 기준으로 사용할 열 이름을 전달하고, 매개변수 ascending에 False를 전달하여 내림차순으로 정렬합니다.
'프로그래밍 언어 > Python' 카테고리의 다른 글
| 분류별 누적금액 시각화하기 (0) | 2025.11.08 |
|---|---|
| 분류별 누적 지출 합계 구하기 (0) | 2025.11.05 |
| 분류별 지출 합계 구하기 (0) | 2025.10.30 |
| 1분기 3개의 카드 명세서 하나로 취합하기 (0) | 2025.10.27 |
| 월별 명세서 취합하기 - 카드 명세서에서 데이터 불러오기 (1) | 2025.10.24 |