[Matplotlib] 기후 나선 그리기 2: 서울 일평균 기온 자료 전처리

2024. 9. 20. 10:55·대기과학/프로그래밍

- 개요

이번 포스트에서는 서울 47108 기온 자료의 전처리 작업을 수행합니다.

여러분이 서울 470108 일평균 기온 자료를 가지고 있다고 가정하겠습니다.

 

- 일평균 기온 자료를 월평균 기온 자료로 변환

주의할 점으로 저는 이미 기온 자료의 기간을 1908년 1월부터 2023년 12월까지,

즉 시작은 1월부터 마지막은 12월로 맞추어두었습니다.

만약 이렇게 기간을 잡지 않았다면 월평균 자료로 바꾼 다음 시작은 1월, 마지막은 12월로 맞춰주세요.

import numpy as np
import pandas as pd
df = pd.read_csv('ASOS_108_daily.csv', encoding='cp949')
col1 = df['일시']
col2 = df['평균기온(℃)']

''' 
pandas data frame으로 저장
'''
df = pd.DataFrame({
    'datetime':pd.to_datetime(col1),
    'ta': col2, # 이 파일에서 'ta'가 온도 변수임
})

'''
resample을 이용해서 월평균 자료로 변환
'''
df.set_index('datetime', inplace=True)
df_month = df.resample('1m').mean()

df_month.reset_index(inplace=True)
df_month['MM'] = df_month['datetime'].dt.month
df_month['YYYY'] = df_month['datetime'].dt.year

 

- 월평균 아노말리 계산

아노말리는 원래값에서 기후값을 뺀 값입니다.

전 1908년부터 1947년 기간으로 기후값을 구하고, 이를 원래값에서 빼서 아노말리를 구하겠습니다.

''' 
1947년까지 1월부터 12월까지 기후값을 저장
'''
clim = []
for i in range(1, 12+1):
    var = df_month['ta'][(df_month['YYYY'] <= 1947) & (df_month['MM']==i)].mean()
    clim.append(var)

'''
1월부터 12월까지의 기후값을 각각 원래값에서 제거하여 아노말리를 구함
'''
for i in range(1, 12+1):
    df_month.loc[df_month['MM'] == i, 'ta'] -= clim[i - 1]

 

- 그림을 그리기 적합하도록 아노말리값을 다른 변수에 저장

Climate spiral은 극좌표계로 그리는 것이 편하므로 r이라는 변수에 아노말리값을 저장하겠습니다.

이 과정에서 서울 지역의 기온 자료의 변동성이 너무 크기 때문에 이전 30년 평균을 합니다.

또한, 그림의 중앙에 연도를 표시할 것이니까 미리 연도 텍스트를 따로 저장하고,

연평균 기온값을 기준으로 연도 텍스트의 색을 정할 것이라 연평균 기온값도 저장합니다.

syr = 1954 # 그림은 1954년부터 그림
fyr = 2023
r =[] # 기온 아노말리 저장
year_str = [] # 연도 텍스트 저장
year_value = [] # 연평균 기온 저장
for year in range(syr, fyr+1):
    year_v = df_month.loc[(df_month['YYYY']==year), 'ta'].mean() # 연평균 기온 계산
    for month in range(1, 13):
    	# year-29부터 year 범위로 30년 평균
        var = df_month.loc[(df_month['YYYY'] >= year - 29) & (df_month['YYYY'] <= year) & (df_month['MM'] == month), 'ta'].mean()
        r.append(var)
        year_str.append(year)
        year_value.append(year_v)

 

 

다음 포스트에서는 climate spiral의 밑그림을 그려보겠습니다.

'대기과학 > 프로그래밍' 카테고리의 다른 글

[Matplotlib] 기후 나선 그리기 4: 기온선 그리기  (2) 2024.09.30
[Matplotlib] 기후 나선 그리기 3: 밑그림 그리기  (1) 2024.09.24
[Matplotlib] 기후 나선 그리기 1: NASA Climate Change 그림 설명 및 사용할 자료 설명  (0) 2024.09.19
[Matplotlib] 기후 나선 그리기 0: 프롤로그  (4) 2024.09.11
[Matplotlib] 기상청 ASOS/AWS 그래프 따라 그리기 9: 그리드 라인 그리기, 배경색 변경  (4) 2024.08.02
'대기과학/프로그래밍' 카테고리의 다른 글
  • [Matplotlib] 기후 나선 그리기 4: 기온선 그리기
  • [Matplotlib] 기후 나선 그리기 3: 밑그림 그리기
  • [Matplotlib] 기후 나선 그리기 1: NASA Climate Change 그림 설명 및 사용할 자료 설명
  • [Matplotlib] 기후 나선 그리기 0: 프롤로그
레까
레까
  • 레까
    데이터 조아
    레까
  • 전체
    오늘
    어제
    • 전체 (85) N
      • 대기과학 (45)
        • 프로그래밍 (42)
        • 개념 (2)
        • 칼럼 (1)
      • 여러가지 데이터 (5)
        • 프로그래밍 & 분석 (5)
      • 프로그래밍 (15)
        • 파이썬 (8)
        • 시각화 (6)
        • 유용 (1)
      • 프로젝트 (16) N
        • 기계학습 기반 서울 기온 예측 (9)
        • 사과게임 매크로 만들기 (4)
        • 버스 한 번으로 특정 지역에 갈 수 있는 지역 찾.. (3) N
      • 데이터리안 SQL 공부 (3) N
      • 주제별 링크 모음 (1)
      • 백업 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
레까
[Matplotlib] 기후 나선 그리기 2: 서울 일평균 기온 자료 전처리
상단으로

티스토리툴바