-
분야별 데이터 수집 전략 가이드 시리즈 - 4화. 기상청 API로 날씨 데이터를 수집하고 시계열 분석에 활용하는 전략기술과 산업/AI 2025. 5. 9. 15:35728x90
기상청 API를 통해 날씨 데이터를 수집하고, Python 기반 시계열 분석과 예측 모델에 적용하는 실전 수집 전략을 알려드립니다.
왜 날씨 데이터인가? 수요 예측과 AI의 핵심 변수
날씨는 물류, 유통, 에너지, 소매업, 농업, 관광 산업 등 거의 모든 산업에서 수요 예측의 핵심 변수로 작용합니다.
- ☔ 갑작스러운 비 → 편의점 우산, 라면, 즉석식품 매출 증가
- ☀️ 폭염 → 냉방기기 수요 폭등, 야외 활동 감소
- ❄️ 폭설 예보 → 물류 지연, 대중교통 분석 필요
이처럼 기상청의 정량적 기후 데이터를 시계열 분석에 적용하면 실무 인사이트가 폭발적으로 강화됩니다.
기상청 데이터포털 API 개요
기상청 기후데이터포털은 대한민국 기후 관측 및 예보 정보를 API 형식으로 제공하는 플랫폼입니다.
가장 널리 쓰이는 API는 아래와 같습니다.API명 설명
초단기실황조회 현재 기온, 습도, 풍속 등 실시간 기상 정보 단기예보조회 1~3일 이내 기온, 강수량 예보 동네예보조회 행정동 단위 날씨 예측 기상관측자료조회 과거 날씨 기록 (일/월 단위) 모든 API는 기상청 자체 개발자센터에서 인증키 발급 후 사용
호출 시 기상 관측소 코드(STNID) 또는 격자(X, Y) 좌표 필요
🔧 API Key 발급 및 구조 이해
- 기후데이터포털 회원가입
- ‘OpenAPI’ 메뉴 → 인증키 발급 신청
- 인증 후 GET 방식으로 요청
- 예시:
http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst ?serviceKey=발급받은키&numOfRows=10&pageNo=1 &base_date=20240501&base_time=0500 &nx=60&ny=127&dataType=JSON
nx, ny는 격자 좌표이며, 위경도를 변환해야 함
서울 종로구의 경우 대략 nx=60, ny=127
🧪 Python 실전 예제: 초단기 날씨 예보 데이터 수집 및 시계열 저장
1. 필요한 라이브러리
pip install requests pandas datetime
2. Python 코드
import requests import pandas as pd from datetime import datetime, timedelta # API 파라미터 API_KEY = "YOUR_API_KEY" url = "http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getVilageFcst" # 기준 날짜와 시간 설정 base_date = datetime.today().strftime("%Y%m%d") base_time = "0500" # 새벽 5시 기준 예보 params = { 'serviceKey': API_KEY, 'numOfRows': '100', 'pageNo': '1', 'dataType': 'JSON', 'base_date': base_date, 'base_time': base_time, 'nx': '60', # 서울 종로구 'ny': '127' } response = requests.get(url, params=params) items = response.json()['response']['body']['items']['item'] # DataFrame 생성 df = pd.DataFrame(items) df = df[df['category'].isin(['TMP', 'REH', 'PTY'])] # 온도, 습도, 강수형태 필터 df = df[['fcstDate', 'fcstTime', 'category', 'fcstValue']] # 피벗으로 구조 변환 df = df.pivot_table(index=['fcstDate', 'fcstTime'], columns='category', values='fcstValue').reset_index() print(df.head())
📊 시계열 분석 적용 예시
예측 기반 응용
- 시간대별 기온 변화 → 매장 방문자 수 예측
- 강수확률 + PTY (강수형태) → 배송 지연 리스크 분석
- 특정 날씨 조건(예: 고온·고습) → 장비 이상 알림 시스템 개발
시각화 (matplotlib 또는 Plotly)
import matplotlib.pyplot as plt df['datetime'] = pd.to_datetime(df['fcstDate'] + df['fcstTime'], format='%Y%m%d%H%M') df = df.sort_values('datetime') plt.plot(df['datetime'], df['TMP'].astype(float), label='기온(℃)') plt.xticks(rotation=45) plt.title("시간대별 기온 변화") plt.xlabel("시간") plt.ylabel("온도(℃)") plt.grid(True) plt.legend() plt.tight_layout() plt.show()
⚙️ 데이터 활용 시 유의사항
항목 설명
API 호출 제한 초단기 실황 API는 일일 약 10,000건 제한 데이터 갱신 주기 1시간 단위, base_time 기준으로 구성 좌표 변환 위도-경도 → 격자좌표(nx, ny) 변환 필요 (기상청 제공표 있음) 결측 처리 일부 시간대 데이터 누락 시 보간(interpolation) 필요
실무 활용 시나리오 예시
분야 적용 방식
편의점 매출 예측 기온 상승 → 음료·얼음 매출 추정 배달/물류 비 예보 시 배차 수량 조절 공공안전 고온다습 조건 시 폭염주의보 + 알림 푸시 농업 특정 작물 생육 조건에 맞춘 자동 경보
다음 회차 예고 – 한국은행 ECOS API로 경제지표 시계열 수집하기
5화에서는 **한국은행 ECOS(경제통계시스템)**을 활용해
금리, 환율, 소비자물가, 통화량 등 주요 경제지표를 시계열로 수집하고 시각화/분석하는 방법을 다룹니다.728x90'기술과 산업 > AI' 카테고리의 다른 글
Streamlit 실전 마스터 시리즈 1화 – Streamlit 개요와 사례 소개 (2) 2025.05.09 Apache NiFi 시리즈 3회 - FlowFile과 Processor를 활용한 데이터 흐름 설계 실습 (0) 2025.05.09 데이터 수집과 EDA 전략 시리즈 – 4화. 변수의 유형과 분석 전략: 수치형과 범주형, 처리 방식이 다르다 (0) 2025.05.09 AI/ML 기반 데이터 분석 시리즈 7화 - 분류(Classification) 모델의 구조와 실전 구현 전략 (3) 2025.05.09 AI 모델 만들기 시리즈 7화 – 모델을 더 똑똑하게: 하이퍼파라미터 튜닝과 교차검증 실습 (0) 2025.05.09