AI와 친해지기/AI를 직접해볼까?

[Python기초] Pandas를 활용한 데이터 시각화

insight발자국 2025. 2. 17. 12:40

📊 Pandas를 활용한 데이터 시각화 (Matplotlib & Seaborn)

 

데이터를 분석할 때 숫자로만 보면 이해하기 어려운 경우가 많죠? 🤔
이럴 때 Matplotlib & Seaborn을 활용하면 데이터를 한눈에 이해할 수 있을거에요! 🎨📊
이번 글에서는 Pandas 데이터프레임을 활용하여 데이터 시각화를 쉽게 구현하는 방법을 살펴볼게요.


✅ 1. Matplotlib & Seaborn 소개

📌 Matplotlib이란?

Matplotlib은 Python에서 가장 기본적인 그래프 라이브러리로, 선 그래프, 막대 그래프, 히스토그램 등 다양한 차트를 그릴 수 있습니다.

📌 Matplotlib의 특징:

  • 기본적인 그래프 그리기 가능
  • 세부적인 커스터마이징 가능
  • 대부분의 시각화 라이브러리의 기반이 됨

📌 Seaborn이란?

Seaborn은 Matplotlib을 기반으로 한 고급 시각화 라이브러리로, 통계적 데이터 시각화에 강점을 가집니다.

📌 Seaborn의 특징:

  • 깔끔한 스타일 제공
  • 통계적 데이터 분석을 위한 다양한 기능 내장
  • Pandas 데이터프레임과 쉽게 연동 가능

👉 Matplotlib은 기본적인 차트를, Seaborn은 더욱 직관적이고 아름다운 차트를 그릴 때 사용하면 좋아요!


✅ 2. 라이브러리 설치 및 기본 설정

📌 필요한 라이브러리 설치

Matplotlib과 Seaborn이 설치되어 있지 않다면, 먼저 설치해야 합니다.

pip install matplotlib seaborn

📌 라이브러리 불러오기

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

 그래프 스타일 설정 (Seaborn 스타일 적용)

sns.set_style("whitegrid")  # 배경 스타일 설정
plt.rcParams["figure.figsize"] = (8, 6)  # 기본 그래프 크기 설정

👉 이제 본격적으로 다양한 그래프를 그려볼까요? 🚀


✅ 3. Pandas 데이터 불러오기 및 기본 그래프

먼저 샘플 데이터를 생성해봅시다.

data = {
    "이름": ["철수", "영희", "민수", "지훈", "나연"],
    "국어": [80, 90, 85, 70, 95],
    "수학": [75, 85, 80, 95, 90],
    "영어": [85, 80, 90, 75, 70]
}
df = pd.DataFrame(data)
print(df)

 출력 결과

    이름  국어  수학  영어
0  철수  80  75  85
1  영희  90  85  80
2  민수  85  80  90
3  지훈  70  95  75
4  나연  95  90  70

✅ 4. 기본 그래프 그리기 (Matplotlib 활용)

📌 1) 막대 그래프 (Bar Chart)

plt.bar(df["이름"], df["국어"], color='blue')
plt.xlabel("이름")
plt.ylabel("국어 점수")
plt.title("학생별 국어 점수")
plt.show()

 출력 결과 → 학생별 국어 점수 막대 그래프 🎯

📌 2) 선 그래프 (Line Chart)

plt.plot(df["이름"], df["수학"], marker='o', linestyle='-', color='red')
plt.xlabel("이름")
plt.ylabel("수학 점수")
plt.title("학생별 수학 점수 변화")
plt.show()

 출력 결과 → 학생별 수학 점수 변화를 나타내는 선 그래프 📈


✅ 5. 고급 시각화 (Seaborn 활용)

📌 1) 히스토그램 (Histogram) → 데이터 분포 확인

sns.histplot(df["국어"], bins=5, kde=True)
plt.title("국어 점수 분포")
plt.show()

 출력 결과 → 국어 점수의 분포를 보여주는 히스토그램 📊

 

📌 2) 상자 그림 (Box Plot) → 이상치(Outlier) 탐지

sns.boxplot(x=df["수학"])
plt.title("수학 점수 분포")
plt.show()

 출력 결과 → 수학 점수의 이상치를 보여주는 상자 그림 📦

📌 3) 상관관계 히트맵 (Correlation Heatmap)

sns.heatmap(df.iloc[:, 1:].corr(), annot=True, cmap="coolwarm")
plt.title("과목별 점수 상관관계")
plt.show()

 출력 결과 → 과목 간 점수의 상관관계를 보여주는 히트맵 🔥


✅ 6. 실전 연습 문제

✏️ 문제 1: 특정 학생의 성적 추이 선 그래프 그리기

📌 "민수"의 국어, 수학, 영어 점수를 선 그래프로 표현하세요.

plt.plot(["국어", "수학", "영어"], df[df["이름"] == "민수"].iloc[:, 1:].values.flatten(), marker='o')
plt.xlabel("과목")
plt.ylabel("점수")
plt.title("민수의 성적 변화")
plt.show()

✏️ 문제 2: 수학 점수 분포 히스토그램 그리기

📌 df["수학"] 데이터를 활용해 히스토그램을 그리세요.

sns.histplot(df["수학"], bins=4, kde=True)
plt.title("수학 점수 분포")
plt.show()


📢 7. 마무리 및 다음 학습

이 글에서는 Pandas 데이터를 시각화하는 다양한 방법을 배웠어요! 😊
(한글이 깨지는 부분은 다음 글에서 해결하는 방법을 알아볼게요!)

🔥 핵심 정리

 Matplotlib은 기본적인 그래프 그리기에 적합 
 
Seaborn은 고급 통계 시각화에 유용 
 
데이터 시각화를 활용하면 패턴과 인사이트를 쉽게 파악할 수 있음

📌 다음 글에서는 "Matplotlib & Seaborn 고급 활용법 (다중 그래프, 애니메이션)" 내용을 알아볼게요!