어제 오늘 내일

[Python 실전 보너스] 18. "100만 줄 엑셀도 1초 컷!" 데이터 분석의 끝판왕, 판다스(Pandas) 찍어 먹기 본문

IT/Python

[Python 실전 보너스] 18. "100만 줄 엑셀도 1초 컷!" 데이터 분석의 끝판왕, 판다스(Pandas) 찍어 먹기

hi.anna 2026. 4. 15. 00:54

엑셀에서 VLOOKUP을 쓰거나 피벗 테이블을 돌려본 적 있으신가요?
판다스(Pandas)는 이런 복잡한 표 계산과 데이터 조작을 단 몇 줄의 파이썬 코드로 순식간에 처리해 주는 마법의 도구입니다. 데이터 과학자나 AI 개발자들에게는 숨 쉬는 것과도 같은 필수 패키지입니다.


1. 준비 운동: 판다스 설치와 핵심 개념 (DataFrame)

먼저 터미널을 열고 판다스를 설치해 줍니다.

pip install pandas

판다스를 이해하려면 딱 하나의 단어만 기억하면 됩니다. 바로 데이터프레임(DataFrame)입니다.
데이터프레임은 쉽게 말해 '파이썬 안에 띄워놓은 가상의 엑셀 시트'입니다. 행(Row)과 열(Column)로 이루어진 완벽한 표 형태를 띠고 있죠.


2. 엑셀/CSV 파일 한 번에 빨아들이기

openpyxl에서는 빈 워크북을 만들고 시트를 찾아서 한 줄씩 읽어야 했지만, 판다스는 그런 자잘한 과정을 모두 생략합니다.

📌 예제 코드: 단 한 줄로 데이터 불러오기

import pandas as pd  # pandas는 관행적으로 pd라는 별명으로 줄여 씁니다.

# 1. CSV 파일이나 엑셀 파일을 통째로 읽어서 '데이터프레임'으로 만듭니다.
# (미리 "sales_data.csv" 파일이 있다고 가정합니다)
df = pd.read_csv("sales_data.csv")

# 엑셀 파일이라면? df = pd.read_excel("sales_data.xlsx") 라고 쓰면 끝입니다!

# 2. 데이터가 어떻게 생겼는지 위에서부터 5줄만 살짝 엿보기
print(df.head())

실행 결과 (터미널에 표가 예쁘게 출력됩니다!):

         날짜     부서   직급      매출액
0  2026-02-01  영업1팀   대리  3500000
1  2026-02-01  영업2팀   사원  2100000
2  2026-02-02  마케팅팀   과장  5000000
3  2026-02-02  영업1팀   부장  8000000
4  2026-02-03  영업2팀   대리  4200000

맨 왼쪽에 0, 1, 2... 하고 붙은 숫자는 판다스가 알아서 매겨준 데이터의 주민등록번호(인덱스)입니다.


3. 판다스의 진가: 데이터 필터링과 계산

판다스가 진짜 무서운 이유는 조건 검색과 계산입니다. 엑셀에서 마우스로 필터를 걸고 클릭하던 작업을 코드로 아주 직관적으로 할 수 있습니다.

📌 예제 코드: 조건에 맞는 데이터만 뽑아내기

import pandas as pd

# 데이터 불러오기
df = pd.read_csv("sales_data.csv")

# --- 1. 특정 열(Column)만 뽑아보기 ---
# 딕셔너리에서 Key로 값을 찾듯, 대괄호 안에 열 이름을 넣습니다.
print(df["매출액"]) 

print("-" * 30)

# --- 2. 조건 필터링 (영업1팀 데이터만 찾기) ---
# "df의 부서가 '영업1팀'인 것만 다시 df에서 골라내라!"
team1_data = df[df["부서"] == "영업1팀"]
print("▼ 영업1팀 데이터 ▼")
print(team1_data)

print("-" * 30)

# --- 3. 복합 조건 (매출액 400만 원 이상인 대리 찾기) ---
# 괄호()로 조건을 묶고, & (그리고) 기호로 연결합니다.
vip_sales = df[(df["매출액"] >= 4000000) & (df["직급"] == "대리")]
print("▼ 400만 원 이상 매출을 낸 대리 ▼")
print(vip_sales)

print("-" * 30)

# --- 4. 통계 계산 1초 컷 ---
total_sales = df["매출액"].sum()    # 총합
avg_sales = df["매출액"].mean()     # 평균
max_sales = df["매출액"].max()      # 최댓값

print(f"전체 총 매출액: {total_sales}원")
print(f"평균 매출액: {avg_sales}원")

만약 이 작업을 순수 파이썬의 for문과 if문으로 짰다면 코드가 10줄은 훌쩍 넘어갔겠지만, 판다스를 쓰면 단 한 줄로 끝납니다. 심지어 데이터가 100만 개여도 눈 깜짝할 사이에 계산을 끝냅니다.


4. 분석한 결과를 다시 새로운 엑셀로 저장하기

요리가 끝났으니 다시 그릇에 담아내야겠죠? 판다스는 저장하는 것도 예술적으로 간단합니다.

📌 예제 코드: 데이터프레임을 엑셀로 내보내기

import pandas as pd

df = pd.read_csv("sales_data.csv")

# 영업1팀 데이터만 필터링
team1_data = df[df["부서"] == "영업1팀"]

# 결과를 새로운 엑셀 파일로 저장합니다.
# index=False 옵션을 주면, 맨 왼쪽에 있던 0, 1, 2... 번호표는 빼고 깔끔하게 저장됩니다.
team1_data.to_excel("영업1팀_실적보고서.xlsx", index=False)

print("엑셀 파일 저장이 완료되었습니다!")

read_csv()로 빨아들이고, to_excel()로 뱉어낸다. 정말 직관적이지 않나요?


📝 마치며

보너스 트랙의 핵심 요약입니다.

  1. 판다스(Pandas): 파이썬에서 표 형태의 데이터를 엑셀처럼, 아니 엑셀보다 훨씬 빠르고 강력하게 다루게 해주는 패키지.
  2. pd.read_csv() / `pd.read_excel()`: 파일을 한 번에 읽어와 데이터프레임으로 만든다.
  3. df[ 조건 ]: 직관적인 코드로 원하는 데이터만 쏙쏙 필터링할 수 있다.
  4. df.to_excel(): 분석이 끝난 데이터를 깔끔하게 다시 파일로 저장한다.

웹 크롤링(requests, BeautifulSoup)으로 긁어온 수만 건의 데이터를 판다스(pandas) 데이터프레임에 넣고, 중복을 제거하고 통계를 낸 뒤 엑셀 파일로 저장한다!
이것이 바로 현업에서 매일같이 쓰이는 데이터 수집 및 분석의 정석 파이프라인입니다.

정말, 정말로 파이썬 기초 여행이 모두 끝났습니다!

반응형
Comments