Why Not SW CAMP 5기/수업 기록

[2월 1주차-2/6(2)]🎂 내 생일의 기온 변화를 시각화하기

rubii 2025. 2. 6. 12:07

이번에는 1983년 이후 매년 내 생일(3월 3일)의 최고 기온과 최저 기온을 추출하여 시각화하는 방법을 정리해보겠습니다.
CSV 파일에서 특정 날짜의 데이터를 추출한 후, Matplotlib을 활용해 시각화할 것입니다.


📌 1. CSV 데이터에서 특정 날짜의 기온 추출하기

우선, seoul.csv 파일에서 내 생일(3월 3일)의 최고/최저 기온을 찾는 코드입니다.

import csv
import matplotlib.pyplot as plt

# CSV 파일 읽기
f = open('./data/seoul.csv')
data = csv.reader(f)
next(data)  # 헤더 제거

high = []  # 최고 기온 리스트
low = []   # 최저 기온 리스트

for row in data:
    if row[-1] != '' and row[-2] != '':  # 결측치가 없는 데이터만 사용
        date_split = row[0].split('-')  # 날짜를 '-' 기준으로 분리
        
        if 1983 <= int(date_split[0]):  # 1983년 이후 데이터만 사용
            if date_split[1] == '03' and date_split[2] == '03':  # 3월 3일 데이터만
                high.append(float(row[-1]))  # 최고 기온
                low.append(float(row[-2]))   # 최저 기온

설명

  • CSV 데이터를 읽고, split('-')을 활용해 날짜를 연도, 월, 일로 분리합니다.
  • 1983년 이후 3월 3일의 데이터만 추출하여 high 리스트(최고 기온)와 low 리스트(최저 기온)에 저장합니다.

📌 2. Matplotlib을 활용한 시각화

이제 high와 low 데이터를 그래프로 시각화해 보겠습니다.

# 맑은 고딕으로 기본 글꼴 설정
plt.rc('font', family='Malgun Gothic')

# 마이너스 기호 깨짐 방지
plt.rcParams['axes.unicode_minus'] = False

plt.figure(figsize=(10,6), dpi=300)  # 그래프 크기 및 해상도 설정
plt.title('내 생일(3월 3일)의 최고 & 최저 기온 변화')

# 최고 기온 (빨간색 점선)
plt.plot(high, 'red', label='최고 기온', linestyle='--')

# 최저 기온 (파란색 점선)
plt.plot(low, 'blue', label='최저 기온', linestyle=':')

plt.legend()  # 범례 추가
plt.show()

설명

  • plt.rc('font', family='Malgun Gothic') → 한글 폰트 적용
  • plt.rcParams['axes.unicode_minus'] = False → 마이너스 기호 깨짐 방지
  • plt.figure(figsize=(10,6), dpi=300) → 그래프 크기 및 해상도 설정
  • 최고 기온은 빨간색 점선('red', linestyle='--'), 최저 기온은 파란색 점선('blue', linestyle=':')으로 표시
  • plt.legend() → 범례 추가

📊 3. 최종 결과