javaboiii의 python

Python - AOI와 서울 기온 그래프

javaboiii 2024. 12. 5. 11:11

PYTHON

import pandas as pd
import matplotlib.pyplot as plt
import mplcursors  # mplcursors 추가

# 파일 경로
path = "경로" 
file_name = 'temp(2019.12~2022.02 seoul)+ao.csv'
# 데이터 출처
# aoi : https://arctic.noaa.gov/report-card/report-card-2021/surface-air-temperature-2/
# 서울기온 : https://data.kma.go.kr/stcs/grnd/grndTaList.do?pgmNo=70
file_path = path + file_name

# CSV 파일 읽기
data = pd.read_csv(file_path, encoding='cp949')

# '일시' 컬럼을 datetime 형식으로 변환
data['일시'] = pd.to_datetime(data['일시'])

# 연도와 월 추출
data['연도'] = data['일시'].dt.year
data['월'] = data['일시'].dt.month

# "겨울 연도" 정의: 12월은 현재 연도로, 1~2월은 이전 연도로 묶음
data['겨울연도'] = data.apply(lambda x: x['연도'] if x['월'] == 12 else x['연도'] - 1, axis=1)

# 겨울 데이터 필터링 (12월 ~ 2월만 선택)
winter_data = data[data['월'].isin([12, 1, 2])]

# x축 레이블을 'yyyy-MM-dd' 형식으로 설정
winter_data['x축'] = winter_data['일시'].dt.strftime('%Y-%m-%d')

# 그래프 그리기
plt.figure(figsize=(16, 8))

# 평균 기온 데이터 선 그래프
line1, = plt.plot(
    winter_data['x축'],
    winter_data['평균기온(°C)'],
    color='tab:red',
    label='Average Temperature (°C)',
    linewidth=1
)

# AO Index 데이터 선 그래프
line2, = plt.plot(
    winter_data['x축'],
    winter_data['ao_index_cdas'],
    color='tab:blue',
    label='AO Index',
    linewidth=1
)

# 0도 기준선 추가
plt.axhline(0, color='black', linewidth=1, linestyle='--', label='0°C')

# 그래프 제목 및 축 설정
plt.title('Winter Temperature and AO Index (2019 Winter ~ 2022 Winter)', fontsize=16)
plt.xlabel('Date', fontsize=12)
plt.ylabel('Values', fontsize=12)

# x축 레이블을 적절한 간격으로 표시하기 위해 특정 날짜 간격 설정
# 예를 들어 1개월 간격으로 레이블을 표시
plt.xticks(
    ticks=winter_data['x축'][::30],  # 30번째 값마다 표시 (간격 조정 가능)
    labels=winter_data['x축'][::30],  # 해당 값들을 레이블로 설정
    rotation=45,  # 45도 회전
    fontsize=10  # 폰트 크기
)

# 범례 추가
plt.legend(fontsize=12)

# mplcursors를 이용한 마우스 hover 효과 추가
# mplcursors.cursor([line1, line2], hover=True)

# 그래프 레이아웃 조정 및 출력
plt.tight_layout()
plt.show()

 

음의 지수를 갖음에 따라 서울의 기온이 내려가는 것을 볼 수 있음

 

AOI설명

https://javaboiii.tistory.com/159

 

Python Project - 북극한파 예상하기 (AOI)

AO(Arctic Oscillation) : 북극진동- 북극에 있는 찬 공기의 소용돌이(제트기류)가수십일 또는 수십년을 주기로 강약을 되풀이 하는 현상AOI(Arctic Oscillation Index) : 북극진동지수북극진동을 지수한 것으

javaboiii.tistory.com

 

 

'javaboiii의 python' 카테고리의 다른 글

Python - 북극 해빙 면적 그래프  (1) 2024.12.06
Python - 그래프  (0) 2024.12.03