파이썬을 이용한 날씨 데이터를 수집하고 분석하는 방법에 대해서 알아보도록 하겠습니다. 날씨 데이터는 다양한 분야에서 활용될 수 있는 중요한 정보이며, 파이썬의 강력한 라이브러리들을 활용하면 쉽게 데이터를 다룰 수 있습니다. 함께 살펴볼까요?
1. 날씨 데이터 수집하기
날씨 데이터를 수집하는 방법은 크게 두가지가 있습니다. API를 이용하는 방법과 윕 크롤링을 이용하는 방법 입니다.
API를 이용한 데이터 수집
가장 쉽고 안정적인 방법은 OpenWeatherMap과 같은 날씨 API를 이용하는 것 입니다. 먼저 OpenWeatherMap에 가입하고 API 키를 발급받아야 합니다.
import requests
API_KEY = "여러분의_API_키를_입력하세요"
city = "Seoul"
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={API_KEY}&units=metric"
response = requests.get(url)
data = response.json()
print(f"서울의 현재 기온: {data['main']['temp']}°C")
print(f"날씨 상태: {data['weather'][0]['description']}")
이 코드를 실행하면 서울의 현재 기온과 날씨 상태를 얻을 수 있습니다.
웹 크롤링을 이용한 데이터 수집
윕 크롤링은 웹사이트에서 직접 데이터를 추출하는 방법 입니다. BeautifulSoup 라이브러리를 사용하면 HTML에서 원하는 정보를 쉽게 추출할 수 있습니다.
import requests
from bs4 import BeautifulSoup
url = "https://weather.com/weather/today/l/Seoul+South+Korea"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
temperature = soup.find('span', {'class': 'CurrentConditions--tempValue--MHmYY'}).text
condition = soup.find('div', {'class': 'CurrentConditions--phraseValue--mZC_p'}).text
print(f"서울의 현재 기온: {temperature}")
print(f"날씨 상태: {condition}")
이 코드는 Weather.com에서 서울의 현재 날씨 정보를 크롤링합니다.
2.데이터 전처리 하기
수집한 데이터는 바로 분석하기 어려운 형태일 수 있습니다. pandas 라이브러리를 사용하면 데이터를 쉽게 정리하고 가공할 수 있습니다.
import pandas as pd
# API로 수집한 데이터를 DataFrame으로 변환
df = pd.DataFrame([data['main']])
df['weather'] = data['weather'][0]['description']
df['city'] = city
print(df)
이렇게 하면 수집한 데이터를 pandas DataFrame 형태로 변환할 수 있습니다.
3.데이터 분석하기
이제 수집하고 정리한 데이터를 분석해봅시다. 예를 들어, 일주일간의 기온 변화를 그래프로 나타내보겠습니다.
import matplotlib.pyplot as plt
# 일주일간의 기온 데이터를 수집했다고 가정
dates = pd.date_range(start='2025-01-21', periods=7)
temperatures = [data['main']['temp'] for _ in range(7)] # 예시를 위해 같은 값 반복
df = pd.DataFrame({'date': dates, 'temperature': temperatures})
plt.figure(figsize=(10, 6))
plt.plot(df['date'], df['temperature'], marker='o')
plt.title('서울의 일주일 기온 변화')
plt.xlabel('날짜')
plt.ylabel('기온 (°C)')
plt.grid(True)
plt.show()
이 코드는 일주일간의 기온 변화를 선 그래프로 나타냅니다.
4.고급분석 : 기상 데이터와 다른 데이터의 상관관계 분석
날씨 데이터는 다른 데이터와 겹합하여 흥미로운 인사이트를 얻을 수 있습니다. 예를 들어, 기온과 아이스크림 판매량의 상관관계를 분석해볼 수 있습니다.
import numpy as np
# 가상의 아이스크림 판매량 데이터
ice_cream_sales = np.random.randint(100, 500, size=7)
df['ice_cream_sales'] = ice_cream_sales
correlation = df['temperature'].corr(df['ice_cream_sales'])
print(f"기온과 아이스크림 판매량의 상관계수: {correlation:.2f}")
plt.figure(figsize=(10, 6))
plt.scatter(df['temperature'], df['ice_cream_sales'])
plt.title('기온과 아이스크림 판매량의 관계')
plt.xlabel('기온 (°C)')
plt.ylabel('아이스크림 판매량')
plt.show()
이 코드는 기온과 아이스크림 판매량의 상관관계를 계산하고, 산점도로 시각화 합니다.
마치며
지금까지 파이썬을 이용해 날씨 데이터를 수집하고 분석하는 방법에 대해 알아보았습니다. API를 통한 데이터 수집, 윕 크롤링, 데이터 전처리, 기본적인 데이터 시각화, 그리고 다른 데이터와의 상관관계 분석까지 다양한 기법을 살펴보았습니다.
날씨 데이터는 농업, 에너지, 소매업 등 다양한 산업 분야에서 중요하게 활용됩니다. 여러분도 이러한 기법들을 활용하여 흥미로운 프로젝트를 진행해보시는건 어떨까요? 날씨 데이터와 다른 데이터를 결합하여 새로운 인사이트를 발견할 수도 있습니다.
'IT > Python' 카테고리의 다른 글
[Python] 파이썬으로 지리 정보 시스템(GIS) 다루기 (0) | 2025.01.22 |
---|---|
[Python] 파이썬을 이용한 소셜 미디어 데이터 마이닝 (0) | 2025.01.22 |
[Python] 파이썬을 이용한 주식 데이터 분석 (0) | 2025.01.21 |
[Python] OpenCV를 이용한 이미지 처리 기초 (0) | 2025.01.21 |
[Python] 파이썬으로 간단한 챗봇 만들기 (0) | 2025.01.21 |