📊 Pandas를 활용한 SQL 스타일 데이터 처리의 중요성
데이터 분석 업무에서 SQL 쿼리와 같은 직관적인 데이터 처리 방식은 필수적입니다. 파이썬의 Pandas 라이브러리는 SQL의 핵심 기능들을 파이썬 환경에서 구현할 수 있게 해주는 강력한 도구입니다. groupby, merge, query, pivot 등의 함수들을 통해 복잡한 데이터 조작을 간단하고 효율적으로 수행할 수 있습니다.
📸 Photo by Luca Bravo
🔗 Unsplash에서 보기 • ❤️ 2332 likes • 클릭하면 원본 이미지로 이동
본 포스트에서는 실무에서 자주 사용되는 Pandas의 핵심 기능들을 SQL과 비교하여 설명하고, 실전 예제를 통해 활용법을 상세히 알아보겠습니다.
🔍 Query 함수: SQL의 WHERE절을 Pandas로
Pandas의 query 함수는 SQL의 WHERE절과 동일한 역할을 수행합니다. 복잡한 조건문을 문자열 형태로 간단하게 표현할 수 있어 코드의 가독성을 크게 향상시킵니다.
기본 사용법:
import pandas as pd
# 샘플 데이터 생성
df = pd.DataFrame({
'name': ['김철수', '이영희', '박민수', '최지은'],
'age': [25, 30, 35, 28],
'salary': [3500, 4200, 5100, 3800],
'department': ['개발팀', '마케팅팀', '개발팀', '인사팀']
})
# 나이가 30 이상인 직원 조회
result = df.query('age >= 30')
print(result)
복합 조건 활용:
# 개발팀이면서 급여가 4000 이상인 직원
dev_high_salary = df.query('department == "개발팀" and salary >= 4000')
# 나이가 25-35 사이인 직원
<div style="text-align: center; margin: 35px 0; padding: 20px; background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); border-radius: 15px; box-shadow: 0 4px 15px rgba(0,0,0,0.1);">
<img src="https://images.unsplash.com/photo-1504868584819-f8e8b4b6d7e3?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w3NTYzNjd8MHwxfHNlYXJjaHwzfHxkYXRhJTIwdmlzdWFsaXphdGlvbiUyMGRhc2hib2FyZHxlbnwxfDB8fHwxNzQ4MzM3MzI4fDA&ixlib=rb-4.1.0&q=80&w=1080"
alt="turned on black and grey laptop computer"
loading="lazy"
style="max-width: 100%; height: auto; border-radius: 12px; box-shadow: 0 6px 20px rgba(0,0,0,0.15); transition: transform 0.3s ease; cursor: pointer;"
onmouseover="this.style.transform='scale(1.05)'"
onmouseout="this.style.transform='scale(1)'"
onclick="window.open('https://unsplash.com/photos/turned-on-black-and-grey-laptop-computer-mcSDtbWXUZU', '_blank')">
<div style="margin-top: 15px; padding: 10px; background: rgba(255,255,255,0.9); border-radius: 8px;">
<p style="margin: 0; font-size: 13px; color: #555; line-height: 1.4;">
📸 <strong>Photo by <a href="https://unsplash.com/@goumbik" target="_blank" style="color: #007acc; text-decoration: none; font-weight: 600;">Lukas Blazek</a></strong>
</p>
<p style="margin: 5px 0 0 0; font-size: 12px; color: #777;">
🔗 <a href="https://unsplash.com/photos/turned-on-black-and-grey-laptop-computer-mcSDtbWXUZU" target="_blank" style="color: #007acc; text-decoration: none;">Unsplash에서 보기</a>
• ❤️ 2201 likes
<span style="color: #999;"> • 클릭하면 원본 이미지로 이동</span>
</p>
</div>
</div>
age_range = df.query('25 <= age <= 35')
📊 GroupBy: SQL의 GROUP BY를 완벽 구현
GroupBy는 데이터를 그룹별로 분할하고 집계 함수를 적용하는 핵심 기능입니다. SQL의 GROUP BY절과 동일한 개념으로, 데이터 분석에서 가장 빈번하게 사용되는 기능 중 하나입니다.
기본 그룹핑과 집계:
# 부서별 평균 급여 계산
dept_avg_salary = df.groupby('department')['salary'].mean()
print(dept_avg_salary)
# 부서별 다중 집계
dept_stats = df.groupby('department').agg({
'salary': ['mean', 'max', 'min'],
'age': 'mean'
})
print(dept_stats)
고급 GroupBy 활용:
# 사용자 정의 함수 적용
def salary_grade(salaries):
return '고급' if salaries.mean() > 4000 else '일반'
dept_grade = df.groupby('department')['salary'].apply(salary_grade)
# 조건부 필터링
high_salary_depts = df.groupby('department').filter(lambda x: x['salary'].mean() > 4000)
🔗 Merge: SQL JOIN의 완벽한 대안
Merge 함수는 SQL의 다양한 JOIN 연산을 Pandas에서 구현합니다. 여러 데이터프레임을 효율적으로 결합하여 통합된 분석을 가능하게 합니다.
기본 Merge 연산:
# 부서 정보 데이터프레임
dept_info = pd.DataFrame({
'department': ['개발팀', '마케팅팀', '인사팀'],
'location': ['서울', '부산', '대구'],
'budget': [10000, 8000, 6000]
})
# Inner Join (교집합)
merged_inner = pd.merge(df, dept_info, on='department', how='inner')
# Left Join
merged_left = pd.merge(df, dept_info, on='department', how='left')
# Outer Join (합집합)
merged_outer = pd.merge(df, dept_info, on='department', how='outer')
복합 키를 활용한 Merge:
# 여러 컬럼을 기준으로 조인
result = pd.merge(df1, df2, on=['department', 'grade'], how='inner')
# 서로 다른 컬럼명으로 조인
result = pd.merge(df1, df2, left_on='dept_name', right_on='department_name')
🔄 Pivot: 데이터 구조 변환의 핵심
Pivot 함수는 데이터의 구조를 행과 열로 재배열하여 다른 관점에서 데이터를 분석할 수 있게 해줍니다. Excel의 피벗 테이블과 유사한 기능을 제공합니다.
기본 Pivot 테이블:
# 월별 판매 데이터 예시
sales_data = pd.DataFrame({
'month': ['1월', '1월', '2월', '2월', '3월', '3월'],
'product': ['A', 'B', 'A', 'B', 'A', 'B'],
'sales': [100, 150, 120, 180, 110, 200],
'quantity': [10, 15, 12, 18, 11, 20]
})
# 제품별 월별 매출 피벗
pivot_sales = sales_data.pivot(index='month', columns='product', values='sales')
print(pivot_sales)
Pivot_table을 활용한 고급 분석:
# 집계 함수와 함께 사용
pivot_table = pd.pivot_table(sales_data,
values=['sales', 'quantity'],
index='month',
columns='product',
aggfunc='sum',
fill_value=0)
# 다중 인덱스 피벗
multi_pivot = pd.pivot_table(data,
values='sales',
index=['region', 'month'],
columns='product',
aggfunc='mean')
💡 실무 활용 팁과 성능 최적화
- **메모리 효율성:** 대용량 데이터 처리 시 chunksize 매개변수를 활용하여 메모리 사용량을 제어하세요.
- **인덱스 활용:** 자주 사용되는 컬럼은 인덱스로 설정하여 검색 속도를 향상시킬 수 있습니다.
- **데이터 타입 최적화:** 적절한 데이터 타입 설정으로 메모리 사용량과 처리 속도를 개선하세요.
- **벡터화 연산:** 반복문 대신 Pandas의 내장 함수를 활용하여 성능을 크게 향상시킬 수 있습니다.
📸 Photo by Campaign Creators
🔗 Unsplash에서 보기 • ❤️ 1686 likes • 클릭하면 원본 이미지로 이동
이러한 Pandas의 핵심 기능들을 마스터하면 SQL과 동일한 수준의 데이터 처리 능력을 파이썬 환경에서 구현할 수 있습니다. 지속적인 연습과 실제 프로젝트 적용을 통해 데이터 분석 역량을 한층 더 발전시켜 나가시기 바랍니다.
🏷️ 태그
#파이썬 #Pandas #데이터분석 #SQL #groupby #merge #pivot #데이터처리
'기타' 카테고리의 다른 글
리버풀의 전설들이 들려주는 감동 스토리 - 안필드를 빛낸 레전드들의 역사 속 여행 (2) | 2025.05.30 |
---|---|
비 오는 날엔 파전이지! 우리나라 파전의 모든 것 - 종류부터 숨겨진 이야기까지 (6) | 2025.05.27 |
2024년 부동산 vs 미국주식 투자 완벽 가이드: 아파트 매매·전세·월세와 해외투자 수익률 비교분석 (8) | 2025.05.27 |
미국 ETF 3총사로 시작하는 복리투자 여행 - VOO, SCHD, QQQ로 내 돈이 일하게 만드는 법 (5) | 2025.05.27 |
자료구조 공부 드가자~ (0) | 2022.05.16 |