| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- HashMap
- math
- 자바
- string
- 자바문법
- 단위테스트
- Eclipse
- CSS
- junit5
- 정규식
- 테스트자동화
- 자바스크립트
- java테스트
- 문자열
- Visual Studio Code
- SpringBoot
- js
- 스프링부트
- 배열
- list
- ArrayList
- 인텔리제이
- IntelliJ
- javascript
- html
- Array
- Java
- junit
- vscode
- input
- Today
- Total
어제 오늘 내일
[Python 실전 보너스] 18. "100만 줄 엑셀도 1초 컷!" 데이터 분석의 끝판왕, 판다스(Pandas) 찍어 먹기 본문
[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()로 뱉어낸다. 정말 직관적이지 않나요?
📝 마치며
보너스 트랙의 핵심 요약입니다.
- 판다스(Pandas): 파이썬에서 표 형태의 데이터를 엑셀처럼, 아니 엑셀보다 훨씬 빠르고 강력하게 다루게 해주는 패키지.
pd.read_csv()/ `pd.read_excel()`: 파일을 한 번에 읽어와 데이터프레임으로 만든다.df[ 조건 ]: 직관적인 코드로 원하는 데이터만 쏙쏙 필터링할 수 있다.df.to_excel(): 분석이 끝난 데이터를 깔끔하게 다시 파일로 저장한다.
웹 크롤링(requests, BeautifulSoup)으로 긁어온 수만 건의 데이터를 판다스(pandas) 데이터프레임에 넣고, 중복을 제거하고 통계를 낸 뒤 엑셀 파일로 저장한다!
이것이 바로 현업에서 매일같이 쓰이는 데이터 수집 및 분석의 정석 파이프라인입니다.
정말, 정말로 파이썬 기초 여행이 모두 끝났습니다!
'IT > Python' 카테고리의 다른 글
| [Python 기초] "똑같은 데이터 다 나와!" 파이썬 리스트 중복 제거 완벽 가이드 (순서 유지 vs 순서 무시) (0) | 2026.04.16 |
|---|---|
| [Python 기초] "뒤죽박죽 데이터 깔끔하게 줄 세우기!" 파이썬 리스트 정렬 (sort vs sorted) (0) | 2026.04.15 |
| [Python 실전] 17. "크롤링보다 100배 쉽고 정확하다!" 공공데이터 API 연동과 JSON 다루기 (1) | 2026.04.14 |
| [Python 실전] 16. "엑셀 노가다 완벽 해방!" openpyxl로 파이썬에서 엑셀 다루기 (0) | 2026.04.14 |
| [Python 실전] 15. "뉴스 제목 1초 만에 긁어오기" 웹 크롤링 기초 (requests, BeautifulSoup) (0) | 2026.04.13 |