Selection deleted
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 12000 entries, 0 to 11999
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 승인일자 12000 non-null object
1 카드사 12000 non-null object
2 가맹점명 12000 non-null object
3 결제금액 12000 non-null int64
dtypes: int64(1), object(3)
memory usage: 375.1+ KB
0 이마트 박
1 가평군 마트
2 쿠팡
3 고양시 일산서구 마트
4 쿠팡
...
11995 조전 주유소
11996 부여군 마트
11997 김포시 마트
11998 미영 편의점
11999 성호 편의점
Name: 가맹점명, Length: 12000, dtype: object
category_dict = {
'여비교통비' : ['주유소', '교통', '호텔'],
'복리후생비' : ['식당', '음식점' ],
'소모품비' : ['쿠팡', '마트', '편의점']
}
새로운 계정과목이라는 파생변수를 생성하는 코드를 작성해 주세요
import pandas as pd
# category_dict 정의
category_dict = {
'여비교통비': ['주유소', '교통', '호텔'],
'복리후생비': ['식당', '음식점'],
'소모품비': ['쿠팡', '마트', '편의점']
}
# 계정과목 분류 함수 정의
def get_category(store_name):
for category, keywords in category_dict.items():
for keyword in keywords:
if keyword in store_name:
return category
return '기타' # 어떤 키워드에도 해당하지 않으면 '기타'
# 파생변수 생성
df['계정과목'] = df['가맹점명'].apply(get_category)
# 분석: 계정과목별 결제금액 합계, 건수, 비율
summary = df.groupby("계정과목").agg(
결제금액합계=("결제금액", "sum"),
건수=("결제금액", "count")
).reset_index()
# 전체 결제금액 대비 비율 계산
total_amount = summary["결제금액합계"].sum()
summary["비율(%)"] = (summary["결제금액합계"] / total_amount * 100).round(2)
# 비율 기준 내림차순 정렬
summary = summary.sort_values(by="비율(%)", ascending=False)
# 결과 출력
df