Python 爬取天气预报并进行可视化分析
天气预报是很多人日常生活中非常关注的信息,而通过编程手段自动化获取天气数据,并进行可视化分析,不仅可以帮助我们更好地理解天气变化,还能提升我们的编程能力。本文将通过 Python 实现天气数据的爬取、处理和可视化。
一、环境准备
在开始之前,需要确保你的环境中安装了以下库:
pip install requests beautifulsoup4 matplotlib pandas
requests
:用于发送 HTTP 请求,以获取数据。beautifulsoup4
:用于解析 HTML 页面。matplotlib
:用于数据可视化。pandas
:用于数据处理。
二、数据爬取
我们选择一个公开的天气预报网站,例如 “中国气象局” 或 “天气网”,在这里以“天气网”为例进行说明。我们将抓取某城市的天气预报数据。
以下是爬取天气数据的示例代码:
import requests
from bs4 import BeautifulSoup
import pandas as pd
def get_weather_data(city):
# 替换成你需要请求的天气网站
url = f'http://www.weather.com.cn/weather/{city}.shtml'
response = requests.get(url)
response.encoding = response.apparent_encoding # 适应编码
soup = BeautifulSoup(response.text, 'html.parser')
weather_data = []
# 获取未来几天的天气情况
weather_items = soup.find_all('ul', class_='t clearfix')[0].find_all('li')
for item in weather_items:
date = item.find('h1').get_text()
weather_type = item.find('p', class_='wea').get_text()
temperature = item.find('p', class_='tem').get_text().replace('℃', '')
weather_data.append({
'date': date,
'weather_type': weather_type,
'temperature': int(temperature) # 转换成整数
})
return pd.DataFrame(weather_data)
# 获取北京的天气数据
df = get_weather_data('101010100') # 用城市的ID进行查询
print(df)
三、数据处理
在爬取完成后,我们需要进行必要的数据清洗和处理,以便后续分析和可视化。
# 清洗数据
df['temperature'] = pd.to_numeric(df['temperature'], errors='coerce') # 转换为数值型
df.dropna(inplace=True) # 删除缺失值
四、数据可视化
使用 matplotlib 对天气数据进行简单的可视化,展示未来几天的温度变化。
import matplotlib.pyplot as plt
def plot_weather(df):
plt.figure(figsize=(10, 5))
plt.plot(df['date'], df['temperature'], marker='o', linestyle='-', color='b')
plt.title('未来几天气温变化')
plt.xlabel('日期')
plt.ylabel('温度 (℃)')
plt.grid()
plt.xticks(rotation=45) # 旋转日期标签,以便更好显示
plt.tight_layout()
plt.show()
# 绘制天气变化图
plot_weather(df)
五、总结
通过以上步骤,我们实现了使用 Python 爬取天气预报数据,并对数据进行了可视化分析。这样的方法可以帮助个人在不同场景下获取和理解天气信息,灵活运用爬虫和数据分析的技能。
我们可以将爬取的数据持续更新,结合数据分析,预测天气变化趋势,这在不同领域都是十分有用的技能。希望这篇文章能够给你带来灵感,激发你在数据爬取和可视化分析方面的探索欲望!