728x90
이 글에서 다루는 개념
Pandas는 대용량 데이터를 효율적으로 처리할 수 있는 강력한 라이브러리입니다.
이번 글에서는 다음 내용을 학습합니다.
- 그룹화(GroupBy) 및 집계(Aggregation) 연산
- 피벗 테이블(Pivot Table) 활용
- 데이터 병합(Merge)과 결합(Concat)
- 데이터 시각화(Matplotlib 연동)
1️⃣ 그룹화(groupby()) 및 집계(agg())
📌 그룹화(GroupBy)란?
- 특정 열을 기준으로 데이터를 그룹화하여 요약하는 기능
- mean(), sum(), count() 등의 집계 함수와 함께 사용
import pandas as pd
data = {
"Category": ["A", "B", "A", "B", "A", "B"],
"Sales": [100, 200, 150, 300, 120, 250]
}
df = pd.DataFrame(data)
# 카테고리별 총합 계산
grouped = df.groupby("Category").sum()
print(grouped)
📌 출력 결과
Sales
Category
A 370
B 750
🔹 여러 개의 집계 함수 적용 (agg())
grouped = df.groupby("Category").agg({"Sales": ["sum", "mean", "max"]})
print(grouped)
📌 출력 결과
Sales
sum mean max
Category
A 370 123.3 150
B 750 250.0 300
2️⃣ 피벗 테이블(pivot_table()) 활용
📌 피벗 테이블이란?
- 엑셀의 피벗 테이블과 유사
- 특정 열을 기준으로 데이터를 요약하여 출력
data = {
"Date": ["2024-03-01", "2024-03-01", "2024-03-02", "2024-03-02"],
"Category": ["A", "B", "A", "B"],
"Sales": [100, 200, 150, 250]
}
df = pd.DataFrame(data)
# 피벗 테이블 생성
pivot = df.pivot_table(index="Date", columns="Category", values="Sales", aggfunc="sum")
print(pivot)
📌 출력 결과
Category A B
Date
2024-03-01 100.0 200.0
2024-03-02 150.0 250.0
3️⃣ 데이터 병합(merge())과 결합(concat())
📌 두 개의 데이터프레임 병합 (merge())
- SQL의 JOIN 연산과 유사한 방식으로 데이터프레임 병합 가능
df1 = pd.DataFrame({"ID": [1, 2, 3], "Name": ["Alice", "Bob", "Charlie"]})
df2 = pd.DataFrame({"ID": [1, 2, 3], "Score": [85, 90, 95]})
merged = pd.merge(df1, df2, on="ID") # ID 기준으로 병합
print(merged)
📌 출력 결과
ID Name Score
0 1 Alice 85
1 2 Bob 90
2 3 Charlie 95
📌 데이터프레임 수직 결합 (concat())
df1 = pd.DataFrame({"A": [1, 2], "B": [3, 4]})
df2 = pd.DataFrame({"A": [5, 6], "B": [7, 8]})
concatenated = pd.concat([df1, df2], ignore_index=True)
print(concatenated)
📌 출력 결과
A B
0 1 3
1 2 4
2 5 7
3 6 8
4️⃣ 데이터 시각화 (matplotlib 연동)
📌 Pandas는 matplotlib과 연동하여 데이터를 쉽게 시각화할 수 있음
📌 설치 (matplotlib가 없을 경우)
pip install matplotlib
import matplotlib.pyplot as plt
# 데이터프레임 생성
df = pd.DataFrame({"Category": ["A", "B", "C"], "Sales": [100, 200, 150]})
# 바 차트 시각화
df.plot(kind="bar", x="Category", y="Sales", legend=False)
plt.title("Sales by Category")
plt.ylabel("Sales")
plt.show()
📌 출력 결과
- 카테고리별 매출을 바 차트(막대 그래프)로 표시
📌 실전 문제: Pandas 고급 데이터 분석 연습하기
✅ 문제 1: 그룹화(groupby())를 사용하여 카테고리별 평균 매출 계산하기
📌 데이터프레임에서 Category를 기준으로 평균 매출을 구하세요.
import pandas as pd
data = {
"Category": ["A", "B", "A", "B", "A", "B"],
"Sales": [100, 200, 150, 300, 120, 250]
}
df = pd.DataFrame(data)
# 🔽 여기에 코드 작성
grouped = df.groupby("Category").mean()
print(grouped)
✅ 문제 2: pivot_table()을 사용하여 날짜별 카테고리별 매출 요약하기
📌 각 날짜별 카테고리(A, B)별 매출을 합산하여 피벗 테이블로 표현하세요.
# 🔽 여기에 코드 작성
pivot = df.pivot_table(index="Date", columns="Category", values="Sales", aggfunc="sum")
print(pivot)
✅ 문제 3: merge()를 사용하여 두 개의 데이터프레임 병합하기
📌 학생 ID를 기준으로 이름과 점수를 병합하세요.
df1 = pd.DataFrame({"ID": [1, 2, 3], "Name": ["Alice", "Bob", "Charlie"]})
df2 = pd.DataFrame({"ID": [1, 2, 3], "Score": [85, 90, 95]})
# 🔽 여기에 코드 작성
merged = pd.merge(df1, df2, on="ID")
print(merged)
✅ 문제 4: matplotlib을 사용하여 데이터 시각화
📌 카테고리별 매출 데이터를 막대 그래프로 표현하세요.
import matplotlib.pyplot as plt
# 🔽 여기에 코드 작성
import matplotlib.pyplot as plt
df = pd.DataFrame({"Category": ["A", "B", "C"], "Sales": [100, 200, 150]})
df.plot(kind="bar", x="Category", y="Sales", legend=False)
plt.title("Sales by Category")
plt.ylabel("Sales")
plt.show()
728x90
'Data Engineering > python' 카테고리의 다른 글
EP19 | 고급 Python 활용 #8 | 웹 스크래핑 (BeautifulSoup, Selenium) (2) | 2025.03.19 |
---|---|
EP18 | 고급 Python 활용 #7 | API 데이터 활용 (REST API, JSON 처리) (0) | 2025.03.19 |
EP16 | 고급 Python 활용 #5 | 데이터 처리와 Pandas 기본 사용법 (0) | 2025.03.19 |
EP15 | 고급 Python 활용 #4 | SQL과 데이터베이스 다루기 (sqlite3, SQLAlchemy) (0) | 2025.03.19 |
EP14 | 고급 Python 활용 #3 | 비동기 프로그래밍 (AsyncIO) (0) | 2025.03.19 |