Why Not SW CAMP 5기/수업 기록

[2월 1주차-2/7(4)]🍗 Python으로 치킨 브랜드 데이터 분석 & 시각화! 📊

rubii 2025. 2. 7. 17:50

안녕하세요! 이번에는 Pandas와 Matplotlib을 활용하여 치킨 브랜드 데이터를 분석하고 시각화하는 방법을 소개합니다. 🐔🍗


📌 Step 1. 데이터 불러오기

우선, Pandas를 활용하여 데이터를 불러옵니다.
CSV 파일에서 데이터를 읽을 때, 특정 열을 **인덱스(index)**로 지정할 수 있습니다.

import pandas as pd

# CSV 파일 불러오기 (brand를 인덱스로 지정)
csv_file = './data/allStoreModified.csv'
myframe = pd.read_csv(csv_file, index_col=0, encoding='utf-8')

# 데이터 확인
print(myframe.head())

📌 index_col=0 : 첫 번째 열을 인덱스로 지정하여 데이터프레임을 로드합니다.


📌 Step 2. 브랜드별 데이터 확인 & 결측치 확인

# 브랜드 이름 확인
print(myframe['brand'].unique())  

출력 결과:

array(['cheogajip', 'goobne', 'nene', 'pelicana'], dtype=object)

현재 **4개의 브랜드('cheogajip', 'goobne', 'nene', 'pelicana')**가 존재합니다.
데이터에 **결측치(NaN)**는 없는 것으로 보이네요!


📌 Step 3. 브랜드 이름 한글 변환

데이터에는 영어 브랜드명이 들어있습니다.
이를 한눈에 보기 쉽게 한글 브랜드명으로 변경해보겠습니다.

# 브랜드명 딕셔너리 생성
brand_dict = {'cheogajip': '처가집',
              'goobne': '굽네',
              'kyochon': '교촌',
              'pelicana': '페리카나',
              'nene': '네네'}

📌 Step 4. 브랜드별 매장 수 분석

Pandas의 groupby() 함수를 이용하여 브랜드별 매장 수를 계산합니다.

# 브랜드별 매장 개수 계산
mygrouping = myframe.groupby(['brand'])['brand']
chartData = mygrouping.count()

# 출력 결과
print(chartData)

출력 결과:

brand
cheogajip    1204
goobne       1066
nene         1125
pelicana     1098
Name: brand, dtype: int64

브랜드별 매장 수 정리:

  • 처가집 (cheogajip) : 1,204개
  • 굽네 (goobne) : 1,066개
  • 네네 (nene) : 1,125개
  • 페리카나 (pelicana) : 1,098개

📌 Step 5. 한글 브랜드명 적용

영어 브랜드명을 한글 브랜드명으로 변경해줍니다.

# 한글 브랜드명으로 인덱스 변경
newindex = [brand_dict[idx] for idx in chartData.index]
chartData.index = newindex

# 변경된 데이터 확인
print(chartData)

출력 결과:

처가집     1204
굽네      1066
네네      1125
페리카나    1098
Name: brand, dtype: int64

이제 훨씬 직관적인 데이터가 되었죠? 😊


📌 Step 6. 파이 차트 시각화 🎨

Matplotlib을 활용하여 브랜드별 매장 비율을 파이 차트로 시각화해보겠습니다!

import matplotlib.pyplot as plt

# 한글 폰트 설정 (Windows: 'Malgun Gothic', Mac: 'AppleGothic')
plt.rcParams['font.family'] = 'Malgun Gothic'

# 색상 지정
mycolor = ['r', 'g', 'b', 'm']

# 파이 차트 그리기
plt.figure()
chartData.plot(kind='pie',
               legend=False,       # 범례 제거
               autopct='%1.2f%%',  # 비율 표시
               colors=mycolor)     # 색상 설정

📌 설정 설명:
✅ legend=False → 범례(legend) 숨기기
✅ autopct='%1.2f%%' → 퍼센트(%) 표시 (소수점 2자리까지)
✅ colors=mycolor → 각 브랜드별 색상 설정


📌 Step 7. 차트 저장 & 출력 📁

# 차트 이미지 저장
filename = 'Chicken.png'
plt.savefig(filename, dpi=400, bbox_inches='tight')
print(f'{filename} 파일이 내 파일 속에 저-장-!')

# 차트 출력
plt.show()

📌 plt.savefig() : 차트를 이미지 파일로 저장
📌 dpi=400 : 해상도 설정 (400 DPI로 저장)
📌 bbox_inches='tight' : 여백 없이 저장


🎯 최종 결과

Pandas로 데이터 분석 (CSV 불러오기 & 브랜드별 매장 수 분석)
Matplotlib으로 데이터 시각화 (파이 차트로 브랜드 점유율 표현)
완성된 차트를 이미지 파일로 저장

이제 브랜드별 매장 수 비율을 시각적으로 한눈에 확인할 수 있습니다! 🎉