OpenWeather API 활용 방법 - 실시간 날씨 데이터 수집
들어가며
OpenWeather는 다양한 날씨 데이터를 제공하는 플랫폼입니다. 실시간 날씨 정보, 예보 등의 데이터를 수집하고 활용할 수 있습니다. 다양한 요금제가 있지만, 현재 날씨 데이터, 5일 동안의 날씨 예보, 과거 날씨 데이터 등 무료로 사용할 수 있는 데이터가 충분히 있습니다. 이 글에서는 현재 날씨 데이터를 파이썬으로 수집하는 방법을 소개합니다.
- OpenWeather 회원가입
- 무료/유료 요금제 구독
- 실시간 날씨 데이터 수집
OpenWeather 회원가입
먼저 회원가입을 진행합니다. Username, 이메일, 비밀번호만 입력하면 회원가입은 완료입니다. 회원가입 진행 후, 입력한 이메일에 수신된 '이메일 인증'을 꼭 진행해야 합니다.
무료/유료 요금제 구독
저는 무료로 1,000개의 요청이 가능한 Pay as you call를 선택했습니다. 이 요금제는 무료로 1,000개까지 API 요청을 할 수 있으므로 초과되지 않는 이상 요금이 청구되지 않습니다. 원하는 요금제의 '구독'을 누르고, 결제 정보를 입력합니다.
실시간 날씨 데이터 수집
이 글에서 수집할 데이터는 '실시간 날씨 데이터'입니다. Current Weather Data의 API doc를 클릭하면 상세 페이지를 확인할 수 있습니다. API call 예시를 활용하여 데이터를 수집해 보겠습니다.
첫 번째, API key가 필요합니다. API key는 상단의 My API keys에서 확인할 수 있습니다. key는 반드시 본인만 알고 있어야 합니다. 요청 횟수가 초과하면 비용이 발생하므로 조심해야 합니다.
두 번째, 좌표가 필요합니다. 날씨를 확인하고 싶은 지역의 좌표를 확인합니다. 이 글에서는 '서울역'의 날씨를 확인하기 위해 좌표(37.55315, 126.972533)를 찾아놓았습니다. 좌표 외에 특정 도시 이름을 입력하여 데이터를 수집할 수도 있습니다. 2가지 방법 중 편리한 방법을 선택하여 사용하면 됩니다.
API key와 좌표가 준비됐다면, 이제 파이썬을 활용하여 데이터를 수집하겠습니다. 필요한 패키지인 requests를 import하고, 본인의 API key와 좌표를 입력한 url로 data를 출력합니다. 결과는 다음과 같습니다.
# i) 좌표
import requests
## OpenWeatherMap API KEY
api_key = 'YOUR_API_KEY'
## 좌표
lat = 37.55315
lon = 126.972533
## API 요청
url = f'https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={api_key}'
response = requests.get(url)
## JSON 데이터 파싱 & 데이터 출력
data = response.json()
data
도시 이름을 입력하여 데이터를 추출하는 방법은 다음과 같습니다. url를 city_name으로 변경하면 됩니다. 결과는 위의 형식과 동일합니다.
# ii) 도시
import requests
## OpenWeatherMap API KEY
api_key = 'YOUR_API_KEY'
## 좌표
city_name = 'Seoul'
## API 요청
url = f'http://api.openweathermap.org/data/2.5/weather?q={city_name}&appid={api_key}'
response = requests.get(url)
## JSON 데이터 파싱 & 데이터 출력
data = response.json()
data
출력한 data에서 main 필드만 추출하는 방법은 다음과 같습니다. 이와 같이 파이썬을 활용하면 전세계 날씨 중 필요한 데이터, 필요한 도시에 대해 편리하게 사용할 수 있습니다.
import requests
import pandas as pd
## OpenWeatherMap API KEY
api_key = 'YOUR_API_KEY'
## 좌표
city_name = 'Seoul'
## API 요청
url = f'http://api.openweathermap.org/data/2.5/weather?q={city_name}&appid={api_key}'
response = requests.get(url)
## JSON 데이터 파싱 & 데이터 출력
data = response.json()
# main 데이터 출력
print(data['main'])
# main 데이터프레임 변환
df = pd.DataFrame([data['main']])
df
'Python' 카테고리의 다른 글
[파이썬] .env 파일 활용 - API KEY 관리 및 개인 정보 보호 (2) | 2025.04.13 |
---|---|
[파이썬] 소수점 반올림, 올림, 내림 - numpy, math (0) | 2025.04.12 |
[파이썬] 특정 경로에 폴더, directory 생성 - os, mkdir (0) | 2025.04.10 |
[파이썬] 데이터 집계, 피벗 테이블 생성 - pivot_table (0) | 2025.04.09 |
[파이썬] 범주형 변수 처리, 더미변수 - get_dummies, OneHotEncoder (0) | 2025.04.08 |