天气数据与日常生活紧密相连,不管是制定出行计划,还是安排农业生产,精准的气象信息都发挥着至关重要的作用。Python 作为一门功能强大、应用领域极为广泛的编程语言,凭借其出色的爬虫技术,能从网页中高效获取所需数据。接下来,我们将运用 Python 爬虫抓取上海市的天气数据,并通过tableau可视化,把抽象的数据转化为直观的图表,挖掘天气背后的规律与奥秘。
一.数据爬取
import pandas as pd
# 爬取网页中的表格数据
df = pd.read_html("http://www.tianqihoubao.com/weather/top/zhaoqing.html", encoding='gbk', header=0)[0]
# 去除第一行数据
df = df.iloc[1:, :]
# 将数据保存为 CSV 文件
csv_file_path = 'zhaoqing_weather.csv'
try:
df.to_csv(csv_file_path, index=False)
print(f"数据已成功保存到 {csv_file_path}")
except Exception as e:
print(f"保存数据时出现错误: {e}")
使用read_html函数爬取网页上的天气数据,并且将数据保存到CSV文件中,read_html常用的函数参数如下:
- io:url、html文本、本地文件等
- header:标题行
- flavor:解析器
- skiprows:跳过的行
- attrs:属性,例如:attrs = {'id':'table'}
- parse_dates:解析日期
二、数据导入
打开 Tableau ,点击“新建工作簿”,在弹出的“连接”窗口中选择“文本文件”,找到并选中刚才准备好的天气数据 CSV 文件,点击“打开”。Tableau 会自动对数据进行预览和初步解析,我们可以在这里检查数据的列名、数据类型等是否正确。如果发现某些字段的数据类型不正确,比如日期字段被识别为字符串,可以手动更改其数据类型,确保数据能够正确地用于后续分析。
三、创建视图
(一)天气情况分析
创建柱状图
在左侧的“数据”窗格中,将“白天天气”字段拖放到“行”功能区,将“记录数”字段拖放到“行”功能 区。Tableau 会自动生成一个柱状图图,横轴表示天数,纵轴表示天气状况。
研究白天的天气状况,由图像可看出,这30天内晴天有6天,多云有13天,阴天有3天,阵雨有7天,而中雨天只有1天,肇庆的天气以多云天气居多。
与上面类似,把夜间数据也拖入“行”功能区。
研究夜间的天气状况,由图像可以看出,这30天内晴天有6天,阴天有8天,阵雨有3天,多云有12天,而中雨天只有1天,整体天气状况多云。
(二)风力方向分析
在左侧的“数据”窗格中,将“白天风力情况”字段拖放到“行”功能区,将“记录数”字段拖放到“行”功能 区。Tableau 会自动生成一个柱状图图,横轴表示天数,纵轴表示白天风力情况。
从上图可以看出,肇庆的白天风向都是北风1-3级。
夜间风力风向同上:
从上图可以看出,肇庆的夜间风向都是北风1-3级,综合来说,肇庆市这30天的风向都是北风。
(三)温度趋势分析
1.数据处理
由于爬取的数据中温度列为字符串,所以我们需要将原数据进行处理,确保数据能够正确地用于后续分析。
创建计算字段
-
在“数据”窗格中,右键点击白天温度字段,选择“创建计算字段”。
-
在弹出的“创建计算字段”对话框中,白天温度。
-
在公式框中,使用
int()
函数将字符串转换为数字。例如:
验证转换结果
-
创建计算字段后,新的字段会出现在“数据”窗格中,显示为绿色(表示其数据类型为数字)。
-
将新的计算字段拖到视图中(如“行”或“列”功能区),并观察数据是否正确显示。如果数据中有无法转换为数字的值(如空字符串或非数字字符),Tableau 会将这些值显示为
NULL
2.创建折线图
-
在左侧的“数据”窗格中,将“日期”字段拖放到“列”功能区,将“白天温度”与“夜间温度”字段拖放到“行”功能区。Tableau 会自动生成一个折线图,横轴表示日期,纵轴表示温度,通过折线的起伏可以直观地看到这30天内温度的变化趋势。
四、仪表板制作
将上述创建的多个视图整合到一个仪表板中,可以更全面地展示天气数据的各个方面。在 Tableau 中点击“新建仪表板”,将天气状况分布视图、风力风向图以及温度趋势分析视图分析视图依次拖放到仪表板中,调整它们的大小和位置,使其布局合理、美观。还可以为仪表板添加标题、文字说明和筛选器等交互元素。