Python实现爬取天气数据并可视化分析
本文将介绍如何使用Python爬取天气数据,并使用可视化工具对数据进行分析和展示。我们将使用BeautifulSoup库解析HTML文档,使用requests库获取网页数据,使用pandas库处理数据,使用matplotlib库进行可视化分析。
爬取天气数据
以下是一个示例代码,演示如何使用Python爬取天气数据:
from bs4 import BeautifulSoup
import requests
import pandas as pd
url = 'http://www.weather.com.cn/weather/101010100.shtml'
response = requests.get(url)
response.encoding = 'utf-8'
soup = BeautifulSoup(response.text, 'html.parser')
weather_list = []
for ul in soup.find_all('ul', class_='t clearfix'):
for li in ul.find_all('li'):
date = li.find('h1').text
weather = li.find('p', class_='wea').text
temperature = li.find('p', class_='tem').text.replace('\n', '').strip()
wind = li.find('p', class_='win').find('span').get('title')
weather_list.append([date, weather, temperature, wind])
df = pd.DataFrame(weather_list, columns=['日期', '天气', '温度', '风力'])
print(df)
在上面的代码中,我们首先导入了BeautifulSoup类、requests库和pandas库。然后,我们定义了一个名为url的变量,它包含要爬取的网页地址。接下来,我们使用requests库获取网页的HTML文档,并使用BeautifulSoup类将HTML文档解析为BeautifulSoup对象。然后,我们使用find_all()方法查找所有class属性为“t clearfix”的ul元素,并使用循环遍历每个ul元素。在每个ul元素中,我们使用find_all()方法查找所有li元素,并使用find()方法查找每个li元素中的日期、天气、温度和风力信息。最后,我们将这些信息添加到一个列表中,并使用pandas库将列表转换为DataFrame对象,并打印出来。
可视化分析
以下是一个示例代码,演示如何使用matplotlib库对天气数据进行可视化分析:
import matplotlib.pyplot as plt
df['最高温度'] = df['温度'].apply(lambda x: int(x.split('/')[0]))
df['最低温度'] = df['温度'].apply(lambda x: int(x.split('/')[1].replace('℃', '')))
df['日期'] = df['日期'].apply(lambda x: x.split('日')[0] + '日')
plt.plot(df['日期'], df['最高温度'], label='最高温度')
plt.plot(df['日期'], df['最低温度'], label='最低温度')
plt.xlabel('日期')
plt.ylabel('温度(℃)')
plt.title('北京天气预报')
plt.legend()
plt.show()
在上面的代码中,我们首先导入了matplotlib库。然后,我们使用apply()方法将温度列拆分为最高温度和最低温度两列,并使用lambda函数将温度值转换为整数类型。接下来,我们使用apply()方法将日期列中的“日”字去掉,并添加回“日”字。最后,我们使用plot()方法绘制最高温度和最低温度的折线图,并使用xlabel()、ylabel()和title()方法设置图表的标签和标题。最后,我们使用legend()方法添加图例,并使用show()方法显示图表。
总结
本文介绍了如何使用Python爬取天气数据,并使用可视化工具对数据进行分析和展示。我们使用了BeautifulSoup库解析HTML文档,使用requests库获取网页数据,使用pandas库处理数据,使用matplotlib库进行可视化分析。这些工具可以帮助我们更好地理解和分析数据,从而做出更好的决策。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现爬取天气数据并可视化分析 - Python技术站