6.2 气温数据热力图 ** 6.2.1 数据采集—气温数据 在绘图之前,需要说明一下绘图的数据源,案例中的数据是通过爬虫获取的,用的是 深圳8月份每天的最高气温,即生成两列数据(日期和最高气温)。在有了原始数据的基 础上,还需要对数据进行清洗和整理,关于这部分是做任何数据分析或可视化都必经的 坎。详细可以通过下面的代码来了解: 步骤一:数据采集 In [1]: import datetime import calendar import requests from bs4 import BeautifulSoup import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns import requests from lxml import etree import json import csv headers { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 在本篇《Python数据分析实践:气温数据热力图》中,我们将探讨如何使用Python进行数据采集、处理,并绘制气温数据的热力图。热力图是一种有效展示数据密集型信息的可视化工具,尤其适用于时间序列数据,如气温变化。在这个案例中,我们将使用深圳2021年8月的每日最高气温数据来演示这一过程。 数据采集是数据分析的第一步。在这个例子中,数据来源于网络爬虫,通过requests库发送HTTP请求到指定的URL(http://lishi.tianqi.com/shenzhen/202108.html),获取HTML页面内容。然后,利用BeautifulSoup和lxml库的etree模块解析HTML,提取出每日的日期、最高气温、最低气温、天气和风向等信息,并将其写入CSV文件。注意,为了防止被网站识别为机器人,设置了User-Agent和Referer头字段。 采集后的数据需要进一步处理,以符合分析的需求。这里我们导入pandas库,将CSV文件读入DataFrame对象。接着,我们使用字符串的split方法,按特定规则(如空格或特定字符)将日期列拆分为两列:日期(day)和星期(week)。然后,删除原始的日期列,以减少冗余。处理后的数据帧如下所示: ``` high day week 0 33℃ 2021-08-01 星期日 1 31℃ 2021-08-02 星期一 2 30℃ 2021-08-03 星期二 3 32℃ 2021-08-04 星期三 4 28℃ 2021-08-05 星期四 ``` 接下来,为了绘制热力图,我们需要将日期转换为数值型,以便于matplotlib和seaborn库处理。可以使用pandas的to_datetime函数将日期字符串转化为datetime对象,再将它们转化为整数表示天数。同时,确保数据按日期排序。 ```python df['day'] = pd.to_datetime(df['day']) df['day_num'] = (df['day'] - df['day'].min()).dt.days df.sort_values('day_num', inplace=True) ``` 我们可以使用seaborn库的heatmap函数绘制热力图。在绘制之前,需要将最高气温数据转换为数值类型,并构建一个二维数组以匹配热力图的格式。假设我们想展示每日最高气温的变化趋势,可以这样做: ```python df['high'] = df['high'].str.replace('℃', '').astype(int) data_matrix = df.pivot_table(index='day_num', values='high', aggfunc='mean') plt.figure(figsize=(12, 6)) sns.heatmap(data_matrix, cmap='YlGnBu', annot=True, fmt=".1f") plt.title('深圳2021年8月最高气温热力图') plt.xlabel('日期') plt.ylabel(' ') plt.show() ``` 这个热力图将呈现出8月份每天的平均最高气温,颜色深浅代表温度高低。通过观察图中的颜色分布,可以直观地看出气温在整个8月内的变化趋势,帮助我们理解天气模式及其可能的影响因素。 总结来说,这个实践案例涵盖了Python数据分析的关键步骤,包括数据采集(使用爬虫技术)、数据预处理(清洗和转换)以及数据可视化(创建热力图)。这些技能对于任何从事数据分析或数据科学的人来说都是至关重要的。通过学习和应用这些知识,可以更好地理解和解释复杂的数据集,为决策提供有力支持。
- 粉丝: 373
- 资源: 1万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
- 1
- 2
- 3
- 4
前往页