AI 파이썬 Lab · 심화 · 3주차
심화 · 데이터 분석 ②

데이터 분석 ② 시각화

숫자 100개보다 그래프 1개가 더 강해요. 오늘은 지난주 정제한 데이터를 그래프로 그리고, 데이터 이야기로 엮어 발표까지 합니다.

오늘의 목표

오늘 배우는 것

데이터 분석 2주의 마무리예요. 지난주 찾은 사실을 그래프로 그리고, '데이터 이야기'로 엮어 친구들 앞에서 발표하는 것까지 해봅니다.

📊
GOAL 1
보여줄 것에 맞는 그래프를 골라 그린다
📖
GOAL 2
그래프를 모아 '데이터 이야기'로 엮는다
🎤
GOAL 3
내가 찾은 발견을 그래프와 함께 발표한다
새 도구 ①

matplotlib (맷플롯립)이란?

파이썬에서 막대·꺾은선·원그래프 같은 그래프를 그리는 가장 기본 도구예요. 데이터의 숫자를 눈에 보이는 그림으로 바꿔 줍니다. import matplotlib.pyplot as plt로 불러와요.

📊
matplotlib (맷플롯립)
파이썬으로 막대·꺾은선·원그래프 같은 그래프를 그리는 표준 도구예요. 데이터 숫자를 눈에 보이는 그림으로 바꿔 줍니다.
왜 배울까? 숫자 100개보다 그래프 1개가 더 강해요. 모든 데이터 분석의 마지막 단계는 '그래프로 보여주기'예요. plt.show() 한 줄이면 그래프가 화면에 뜹니다.
🔤 그래프 = 데이터의 번역기
그래프는 숫자를 그림으로 번역하는 번역기예요. "Drama 220, Comedy 180"이라는 숫자보다, 막대 두 개의 높이 차이가 훨씬 빨리 와닿죠. 번역이 잘 될수록 발견이 쉬워져요.
새 도구 ②

seaborn (시본)이란?

matplotlib을 더 쉽고 예쁘게 쓰게 해주는 도구예요. 짧은 코드 한 줄로 보기 좋은 그래프가 나옵니다. import seaborn as sns로 불러와요.

🎨
seaborn (시본)
matplotlib 위에서 동작하는 도구예요. 짧은 코드 한 줄로 색·간격이 자동으로 정돈된 멋진 그래프를 만들 수 있어요.
비유: matplotlib이 기본 번역기라면, seaborn은 그 위에 입히는 예쁜 옷이에요. 옷만 바꿔도 같은 데이터가 훨씬 더 보기 좋아지죠. 발표할 때 인상이 완전히 달라져요.
👕 두 도구의 관계
matplotlib과 seaborn은 같이 쓰는 짝꿍이에요. 보통 seaborn으로 그래프를 그리고, matplotlib으로 제목·폰트 같은 세부 설정을 해요. 두 줄만 기억하면 돼요: import seaborn as sns, import matplotlib.pyplot as plt.
개념

무엇을 보여줄까 → 그래프 고르기

그래프는 아무거나 쓰는 게 아니에요. 무엇을 보여주고 싶은지에 따라 어울리는 그래프가 정해져 있어요. 이 매칭만 알면 그래프 고르기가 쉬워집니다.

📈
변화 → 꺾은선그래프
시간에 따라 값이 어떻게 변했는지 (예: 연도별 영화 수)
📊
비교 → 막대그래프
항목끼리 크기를 견주기 (예: 장르별 개수)
🥧
비율 → 원그래프
전체 중 차지하는 몫 (예: 장르 비율)
관계 → 산점도
두 값이 함께 움직이는지 (예: 예산과 수익)
📌 비유: 도구 고르기
망치·드라이버·가위 중 어떤 걸 쓸지는 하려는 일에 따라 달라져요. 그래프도 마찬가지예요. 변화를 보여주려면 꺾은선, 비교하려면 막대, 비율을 보이려면 원. 도구를 잘못 고르면 이야기가 왜곡돼요.
💡 핵심 메시지

숫자 100개보다, 그래프 1개가 더 강해요. 보여줄 것에 맞는 그래프를 고르는 게 시각화의 첫걸음입니다.

미션 1

그래프 그려보기

🎯 목표: 지난주 데이터로 서로 다른 종류의 그래프를 그리고, 제목·축 이름·한글 폰트를 설정한다.

① 도구 설치하기

📥 실습 데이터 다운로드 (movies.csv)이 파일을 코드와 같은 폴더에 저장하세요

터미널에 (venv) 표시를 확인하고 설치하세요. (한 번만 하면 돼요.)

터미널
pip install matplotlib seaborn

② 그래프 코드 만들기

AI 도구에 아래 프롬프트를 입력해 기본 코드를 받아 보세요. 한글이 깨지지 않게 폰트 설정을 꼭 요청합니다.

💬 이렇게 입력해 보세요
정제한 영화 데이터로 장르별 영화 개수를 막대 그래프로 그려줘. 한글이 안 깨지게 폰트도 설정해줘.

③ 핵심 구조 이해하기

그래프 코드는 보통 이런 구조예요. 폰트 설정과 plt.show()가 핵심이에요.

viz.py
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

plt.rcParams["font.family"] = "Malgun Gothic"  # 한글 폰트

df = pd.read_csv("movies.csv")
sns.countplot(data=df, x="genre")   # 장르별 개수
plt.title("장르별 영화 개수")
plt.show()                            # 그래프 띄우기
🖥️ OS별 한글 폰트 이름
윈도우는 Malgun Gothic, 맥은 AppleGothic을 쓰면 한글이 안 깨져요. AI에게 "내 OS는 ○○야, 폰트를 맞게 설정해줘"라고 알려주세요.
📸 스크린샷 자리
한글이 깨지지 않은 실제 막대그래프 창 (제목·축 이름이 한글로 또렷이)
📝 □□로 깨진 화면과 나란히 두면 폰트 설정의 중요성이 잘 전달됨
⚠️ 자주 하는 실수
  • 그래프가 안 떠요 → 맨 끝에 plt.show()가 빠졌어요.
  • 한글이 □□로 깨져요 → font.family 폰트 설정이 빠졌어요.
  • 글자가 겹쳐요 → "그래프 크기를 키우고 글자가 안 겹치게 해줘"라고 요청.
🔒 힌트 — 한글이 깨지거나 그래프가 안 떠요 (참고 코드)

폰트 설정은 그래프를 그리기 전에, plt.show()는 맨 끝에 둡니다.

viz.py (참고)
plt.rcParams["font.family"] = "AppleGothic"  # 맥
sns.countplot(data=df, x="genre")
plt.title("장르별 영화 개수")
plt.show()
미션 2

데이터 이야기 만들기

🎯 목표: 그래프 여러 개를 모아 '무엇을 발견했는가'를 설명하는 리포트를 만든다.

그래프를 그렸다면, 이제 이야기로 엮을 차례예요. 그런데 바로 그리지 말고, 어떤 그래프가 어울릴지 먼저 정해 보는 것부터 시작해요.

✏️ 먼저 스스로 해보기
내 사실에는 어떤 그래프가 어울릴까?
지난주 찾은 사실 3가지를 변화·비교·비율·관계 중 무엇인지 분류해 보세요. 그리고 각각 어떤 그래프(꺾은선·막대·원·산점도)가 어울릴지 먼저 적어 봅니다.
정했다면, 그때 AI에게 "이 사실을 ○○그래프로 그려줘"라고 요청해 보세요.

이야기 3단계로 엮기

그래프만 나열하면 이야기가 안 돼요. 질문 → 발견 → 해석 순서로 엮으면 데이터 이야기가 완성됩니다.

1
질문
"어떤 장르가 가장 많을까?" — 알고 싶은 점을 한 문장으로.
2
발견
그래프를 보여주며 "Drama가 가장 많았다" — 그래프가 답을 보여줘요.
3
해석
"사람들이 드라마를 좋아하나 봐" — 내 생각을 한 줄 더해요.
📝 AI 답을 그대로 쓰지 않기
AI가 써준 설명을 복붙하지 말고, 내 생각을 한 줄 더하세요. "나는 ○○라고 생각해"가 들어가야 진짜 내 이야기가 됩니다.

📋 코드 로직 파악 활동지

오늘은 페어 2주차예요. 내가 쓴 코드를 세 부분으로 나눠 한글로 설명하는 활동지를 작성합니다.

📋
코드 로직 파악 활동지
① 불러오기 · ② 청소 · ③ 그래프 — 세 부분의 핵심 줄을 골라, "이 줄은 무엇을 한다"를 한글로 적어 보세요.
🔒 힌트 — 그래프 여러 개를 어떻게 모으지? (참고 코드)

그래프를 그릴 때마다 plt.figure()로 새 창을 열면 여러 개를 따로 만들 수 있어요.

viz.py (참고)
plt.figure()                       # 새 그래프 창
sns.countplot(data=df, x="genre")
plt.title("장르별 개수")

plt.figure()                       # 또 다른 그래프
sns.histplot(data=df, x="rating")
plt.show()
미션 3

미니 발표하기

🎯 목표: 내가 찾은 데이터 이야기를 친구들 앞에서 그래프와 함께 발표한다.

발표는 외우는 게 아니에요. 무슨 데이터? → 뭘 발견? → 왜 흥미로워? 순서로, 키워드 3개만 메모해 말합니다.

1
무슨 데이터?
"저는 영화 1000편 데이터를 분석했어요"
2
뭘 발견?
그래프를 가리키며 "드라마가 가장 많았어요"
3
왜 흥미로워?
"의외로 액션보다 드라마가 많아서 놀랐어요"

🃏 선택지 카드 — 발표의 메인 그래프 고르기

발표에서 가장 보여주고 싶은 그래프를 하나 골라 준비하세요.

A
막대그래프로 '비교'
항목끼리 크기를 견주며 발표
난이도 ★☆☆
→ "장르별 개수를 막대그래프로 비교 발표"
B
꺾은선으로 '변화'
시간에 따른 변화를 보여주며 발표
난이도 ★★☆
→ "연도별 변화를 꺾은선으로 발표"
C
원그래프로 '비율'
전체 중 차지하는 몫을 보여주며 발표
난이도 ★★☆
→ "전체 중 비율을 원그래프로 발표"
D
산점도로 '관계'
두 값의 관계를 보여주며 발표
난이도 ★★★
→ "두 값의 관계를 산점도로 발표"
E
나만의 그래프 조합!
그래프 2개 이상을 엮어 발표하기
🎤 발표 팁

문장을 통째로 외우지 마세요. 키워드 3개만 보고 말하면 막히지 않아요. 그래프를 손으로 가리키며 설명하면 훨씬 잘 전달됩니다.

⚠️ 자주 하는 실수
  • 그래프 없이 말로만 발표 → 지루해요. 꼭 그래프를 화면에 띄우기.
  • 문장을 통째로 암기 → 중간에 막혀요. 키워드 3개만 보기.
보너스 미션

더 해보고 싶다면

미션 3까지 끝내고 시간이 남는다면 도전해 보세요. 끝내지 못해도 괜찮습니다.

보너스 ① 움직이는 그래프 — plotly

마우스를 올리면 정확한 값이 뜨는 그래프예요. 발표 때 훨씬 멋져 보여요.

💬 이렇게 입력해 보세요
이 막대그래프를 plotly로 다시 그려서 마우스를 올리면 정확한 숫자가 뜨게 해줘.
viz.py (plotly 예시)
import plotly.express as px
fig = px.bar(df, x="genre")
fig.show()   # 마우스를 올리면 값이 떠요

보너스 ② 대시보드로 만들기 — Streamlit

1주차에서 배운 Streamlit으로 내 그래프들을 웹 대시보드에 올려요.

💬 이렇게 입력해 보세요
내가 그린 그래프들을 Streamlit 웹앱에 올려서 웹 대시보드로 만들어줘.
🎯 성공 기준
plotly 그래프에 마우스를 올려 숫자가 뜨거나, Streamlit에서 그래프가 웹 화면에 보이면 성공이에요.
정리

오늘의 핵심 정리

1️⃣
시각화
데이터에 맞는 종류의 그래프를 골라 그렸다
2️⃣
이야기
질문→발견→해석으로 데이터 이야기를 엮었다
3️⃣
발표
내가 찾은 발견을 그래프와 함께 발표했다
📌 다음 주 예고

데이터 분석 2주가 끝났어요. 다음 주에는 여러 곳의 데이터를 실시간으로 가져와 합치는 API 매시업 프로젝트를 시작합니다.

🔧 막혔을 때 — 자가 디버깅 4단계

에러가 떠도 당황하지 마세요. 선생님께 묻기 전에 이 순서대로 스스로 해결해 봅니다.

1
에러 메시지 읽기
빨간 글자에서 '몇 번째 줄'과 '무슨 에러'인지 찾아본다.
2
AI에게 보여주기
에러 메시지를 복사해서 "이 에러를 수정해줘"라고 AI에게 요청한다.
3
고쳐서 다시 실행
AI가 준 수정 코드를 적용하고 다시 실행해 본다.
4
선생님께 질문
그래도 안 되면 '에러 메시지 + 내가 시도한 것'을 함께 설명한다.