데이터와 시각화 I: 정보의 구조화
코스 개요
이 코스에서 학생들은 데이터의 기초를 배웁니다. 숫자와 텍스트를 체계적으로 정리하고 그래프로 변환하여 패턴과 의미를 발견하는 능력을 기릅니다. 거북이 그래픽으로 시각화의 원리를 이해한 후, Matplotlib으로 전문적인 그래프를 만들고, 실제 음악/패션 데이터를 분석합니다.
예상 소요 시간: 16~32시간
소요 시간은 학생의 학년, 사전 경험, 학습 속도에 따라 크게 달라집니다. 또한 기본 개념만 익히고 넘어가는 경우와 추가 실습 문제나 창의적 프로젝트를 더 진행하는 경우에 따라서도 차이가 납니다. 위 시간은 평균적인 범위이며, 자녀의 페이스에 맞추어 유연하게 진행하시기 바랍니다.
어떤 능력을 키우게 되나요?
"데이터를 구조화하고 시각적으로 표현하는 능력"을 훈련합니다. 21세기 가장 중요한 역량 중 하나인 데이터 리터러시(Data Literacy)의 기초를 다집니다. 단일 값에서 대규모 데이터셋으로 사고를 확장하고, "직감"을 "근거"로 대체하는 데이터 기반 사고방식을 체득합니다.
어떤 원리를 배우나요?
- (데이터 조직화) 리스트와 딕셔너리로 여러 데이터를 체계적으로 관리합니다. 이것은 데이터베이스, JSON, API 등 현대 데이터 시스템의 기본 구조입니다.
- (비교/추세 분석) 막대 그래프로 크기를 비교하고, 선 그래프로 시간에 따른 변화를 파악합니다. 숫자를 시각적 패턴으로 변환하는 핵심 기술입니다.
AI 시대 사고력: 컴퓨팅 (문제해결) | 데이터 기반 | 확률적 사고력
데이터 과학 사고력
| 스킬 | 설명 | 활동 예시 |
|---|---|---|
| 📊 데이터와 시각화 | 숫자를 그래프로 변환 | 막대 그래프로 판매량 비교 |
| 🔍 패턴 발견 | 데이터에서 규칙성 찾기 | 월별 UFO 목격 수 트렌드 분석 |
| 🧪 가설 검증 | 추측을 데이터로 확인 | "여름에 UFO 목격이 더 많다" 검증 |
| 🔽 데이터 필터링 | 조건에 맞는 데이터만 추출 | 2020년 이후 데이터만 선택 |
수학적 연결고리
| 수학 개념 | 프로그래밍 적용 | 학습 효과 |
|---|---|---|
| 통계 | 평균, 최대, 최소 계산 | sum(data)/len(data) → 평균 |
| 비율과 백분율 | 파이 차트 비율 계산 | 전체 대비 각 부분의 % |
| 좌표 평면 | 위도/경도로 지도 위 위치 표시 | (x, y) 좌표 개념 확장 |
| 상관관계 | 두 변수 간의 관계 분석 | "음악 템포 ↔ 인기도" 관계 |
과학적 탐구 프로세스
flowchart LR
A[1. 질문] --> B[2. 가설]
B --> C[3. 수집]
C --> D[4. 분석]
D --> E[5. 결론]
E -.->|새로운 질문| A
| 단계 | 예시 |
|---|---|
| 질문 | "어떤 브랜드 스니커가 가장 비쌀까?" |
| 가설 | "Nike가 가장 비쌀 것이다" |
| 수집 | CSV 파일에서 가격 데이터 로드 |
| 분석 | 브랜드별 평균 가격 막대 그래프 |
| 결론 | "실제로는 Yeezy가 가장 비쌌다" |
미디어 리터러시
💻 코드 예시 & 시각화
예시 1: 막대 그래프 - Matplotlib
import matplotlib.pyplot as plt
# 데이터
fruits = ['사과', '바나나', '오렌지', '포도']
sales = [45, 30, 25, 40]
# 막대 그래프 생성
plt.bar(fruits, sales, color=['red', 'yellow', 'orange', 'purple'])
plt.title('과일 판매량')
plt.xlabel('과일')
plt.ylabel('판매량')
plt.show()
실행 결과:
과일 판매량
│
50┤ ██
40┤ ██ ██ ██
30┤ ██ ██ ██ ██
20┤ ██ ██ ██ ██
10┤ ██ ██ ██ ██
0┼─────────────────────
사과 바나나 오렌지 포도
예시 2: 파이 차트 - 비율 시각화
import matplotlib.pyplot as plt
# 데이터
labels = ['게임', '유튜브', '공부', '운동']
times = [3, 2, 4, 1] # 시간 (단위: 시간)
# 파이 차트
plt.pie(times, labels=labels, autopct='%1.1f%%')
plt.title('하루 활동 시간 분배')
plt.show()
실행 결과:
예시 3: 선 그래프 - 트렌드 분석
import matplotlib.pyplot as plt
# 데이터
months = ['1월', '2월', '3월', '4월', '5월', '6월']
temperature = [2, 5, 12, 18, 23, 27]
# 선 그래프
plt.plot(months, temperature, marker='o', color='red')
plt.title('월별 평균 기온')
plt.xlabel('월')
plt.ylabel('기온 (°C)')
plt.grid(True)
plt.show()
실행 결과:
예시 4: 지도 시각화 - Folium
import folium
# 서울 중심 지도 생성
map = folium.Map(
location=[37.5665, 126.9780], # 서울 좌표
zoom_start=12
)
# 마커 추가
locations = [
[37.5796, 126.9770, "경복궁"],
[37.5512, 126.9882, "남산타워"],
[37.5662, 126.9785, "광화문"]
]
for loc in locations:
folium.Marker(
location=[loc[0], loc[1]],
popup=loc[2],
icon=folium.Icon(color='red')
).add_to(map)
map.save("seoul_map.html")
실행 결과 (지도):
┌─────────────────────────────┐
│ 🔴 경복궁 │
│ ╲ │
│ ╲ 서울 지도 │
│ 🔴 광화문 │
│ ╲ │
│ ╲ │
│ 🔴 남산타워 │
└─────────────────────────────┘
예시 5: 딕셔너리 - 데이터 구조화
# UFO 목격 데이터 (딕셔너리)
ufo_sighting = {
"날짜": "2024-03-15",
"위치": "서울",
"위도": 37.5665,
"경도": 126.9780,
"모양": "원반형",
"지속시간": "5분"
}
# 데이터 접근
print(f"UFO 목격 위치: {ufo_sighting['위치']}")
print(f"UFO 모양: {ufo_sighting['모양']}")
# 여러 목격 데이터 (리스트 + 딕셔너리)
ufo_data = [
{"도시": "서울", "건수": 15},
{"도시": "부산", "건수": 8},
{"도시": "대구", "건수": 5}
]
데이터 구조:
🎮 실습 연습 - 파트 1: 데이터 구조
연습 1.1: 리스트 만들기
빈칸을 채워서 리스트를 완성하세요!
연습 1.2: 리스트 조작하기
빈칸을 채워서 리스트를 수정하세요!
연습 1.3: 딕셔너리 완성하기
빈칸을 채워서 게임 캐릭터 딕셔너리를 완성하세요!
연습 1.4: 딕셔너리에 데이터 추가하기
빈칸을 채워서 딕셔너리에 새 항목을 추가하세요!
연습 1.5: 평균 계산하기
빈칸을 채워서 평균 점수를 계산하세요!
🎮 실습 연습 - 파트 2: 그래프 그리기
연습 2.1: 막대 그래프 완성하기
빈칸을 채워서 막대 그래프를 완성하세요!
연습 2.2: 막대 그래프 색상 추가
막대 그래프에 색상을 적용하세요!
연습 2.3: 선 그래프 완성하기
빈칸을 채워서 선 그래프를 완성하세요!
연습 2.4: 두 개의 선 비교하기
빈칸을 채워서 두 학생의 점수를 비교하세요!
연습 2.5: 파이 차트 완성하기
빈칸을 채워서 파이 차트를 완성하세요!
연습 2.6: 파이 차트 강조하기
빈칸을 채워서 특정 항목을 강조하세요!
🎮 실습 연습 - 파트 3: 데이터 분석
연습 3.1: 최대/최소값 찾기
빈칸을 채워서 최대값과 최소값을 찾으세요!
연습 3.2: 조건으로 데이터 필터링
빈칸을 채워서 조건에 맞는 데이터를 필터링하세요!
연습 3.3: 데이터 정렬하기
빈칸을 채워서 데이터를 정렬하세요!
연습 3.4: 최대값 데이터 찾기
빈칸을 채워서 가장 큰 값의 항목을 찾으세요!
🎮 실습 연습 - 파트 4: 디버깅 연습
연습 4.1: 인덱스 오류 수정
_____를 올바른 인덱스로 바꿔서 오류를 수정하세요!
연습 4.2: 딕셔너리 키 오류 수정
올바른 키 이름을 입력해서 오류를 수정하세요!
연습 4.3: 데이터 개수 오류 수정
데이터 개수를 맞춰서 그래프 오류를 수정하세요!
📝 빈칸 채우기 연습
리스트 기초:
- 리스트 생성:
my_list = - 항목 추가:
my_list.(4) - 항목 제거:
my_list.(2) - 리스트 길이:
(my_list) - 첫 번째 항목:
my_list[]
딕셔너리 기초:
- 딕셔너리 생성:
my_dict = {} - 값 가져오기:
my_dict[] - 값 추가/수정:
my_dict['새키'] = - 모든 키:
my_dict.() - 모든 값:
my_dict.()
Matplotlib 기초:
- 막대 그래프:
plt.(x, y) - 선 그래프:
plt.(x, y) - 파이 차트:
plt.(sizes) - 그래프 표시:
plt.() - 제목 추가:
plt.('제목') - x축 이름:
plt.('이름') - 범례 표시:
plt.() - 그리드 추가:
plt.(True)
데이터 분석:
- 최대값:
(리스트) - 최소값:
(리스트) - 합계:
(리스트) - 평균:
sum(리스트) /(리스트) - 정렬:
(리스트)
🎯 퀴즈
왜 데이터와 시각화를 배우나요?
21세기 핵심 역량
| 데이터와 시각화 능력 | 실생활 활용 |
|---|---|
| 그래프 읽기 | 뉴스의 통계 이해 |
| 트렌드 분석 | 시장 동향 파악 |
| 패턴 발견 | 과학적 발견 |
| 지도 시각화 | 위치 기반 분석 |
| 정보 전달 | 발표, 보고서 작성 |
데이터 리터러시는 민주 시민으로서 정보를 비판적으로 평가하는 데 필수입니다.
1. 거북이로 그래프 그리기
| 항목 | 내용 |
|---|---|
| 무엇을 배우나요? | 데이터와 시각화의 기본 개념 |
| 핵심 개념 | 데이터 정의, 막대 그래프, 원형 그래프 |
데이터는 수집된 정보입니다. 학생들은 거북이 그래픽으로 직접 그래프를 그리며 막대 그래프와 원형 그래프의 구조를 이해합니다. 막대 그래프는 카테고리 간 비교에, 원형 차트는 전체에서 각 부분의 비율을 보여주는 데 적합합니다. 라이브러리를 사용하기 전에 원리를 파악하는 중요한 단계입니다.
2. 리스트와 데이터
| 항목 | 내용 |
|---|---|
| 무엇을 배우나요? | 데이터 구조와 딕셔너리 |
| 핵심 개념 | 리스트, 딕셔너리, 데이터 관리 |
딕셔너리는 {"이름": 값} 형태로 데이터를 저장합니다. 학생들은 실제 데이터를 효율적으로 저장하고 접근하는 방법을 배웁니다. 이 자료구조는 데이터 분석에서 가장 많이 사용되는 핵심 도구입니다.
3. Matplotlib (브라우저)
| 항목 | 내용 |
|---|---|
| 무엇을 배우나요? | Python 데이터와 시각화 표준 라이브러리 |
| 핵심 개념 | Matplotlib API, 다양한 차트 유형 |
Matplotlib은 Python에서 가장 널리 사용되는 시각화 라이브러리입니다. 막대 그래프, 선 그래프, 산점도, 히스토그램, 파이 차트 등 거의 모든 유형의 그래프를 만들 수 있습니다. 학생들은 데이터 과학자, 연구자들이 실제로 사용하는 도구를 배웁니다.
4. 음악 데이터 연구소
| 항목 | 내용 |
|---|---|
| 무엇을 배우나요? | 실제 음악 산업 데이터 분석 |
| 핵심 개념 | 트렌드 분석, 상관관계, 가설 검증 |
실제 Spotify 데이터로 음악 트렌드를 분석합니다. "음악이 점점 더 시끄러워지고 있을까?", "슬픈 노래가 더 인기 있을까?" 같은 흥미로운 질문에 답합니다. 학생들은 데이터로 가설을 세우고 검증하는 과학적 방법을 경험합니다.
| 미션 | 분석 주제 |
|---|---|
| Loudness Wars | 시간에 따른 변화 분석 |
| Sad Banger | 상관관계 분석 |
| Seasonal | 계절별 트렌드 |
| Major/Minor | 그룹별 비교 |
5. 스니커봇 스트리트웨어 연구소
| 항목 | 내용 |
|---|---|
| 무엇을 배우나요? | 패션/소비 데이터 분석 |
| 핵심 개념 | 시장 분석, 소비자 행동 |
스니커/스트리트웨어 판매 데이터를 분석합니다. "Nike vs Adidas 누가 이길까?", "리미티드 에디션은 정말 더 비쌀까?" 같은 질문을 탐구합니다. 학생들은 실제 비즈니스 데이터를 다루며 마케팅, 경영의 기초를 접합니다.
| 미션 | 분석 주제 |
|---|---|
| Hype Tax | 가격 프리미엄 |
| Brand Wars | 브랜드 경쟁 |
| Global | 지역별 분석 |
| Inflation | 가격 변화 |
이 코스를 마치면...
학습 성과
학생들은 다음 능력을 갖추게 됩니다:
- 리스트와 딕셔너리로 데이터를 구조화할 수 있음
- 다양한 그래프 유형(막대, 선, 파이)을 상황에 맞게 선택할 수 있음
- Matplotlib으로 전문적인 그래프를 만들 수 있음
- 실제 데이터셋을 로드하고 분석할 수 있음
- 데이터에서 트렌드와 패턴을 발견할 수 있음
- 가설을 세우고 검증하는 데이터 과학적 사고
다음 단계
데이터와 시각화 I을 마친 학생은 데이터와 시각화 II로 진행하여 지도 시각화, 실전 데이터 분석, 데이터 스토리텔링을 배울 수 있습니다.