1 背景介绍
python解析各城市历史天气数据
2 基本思路
获取原始数据,解析,然后保存到excel表格里面。
以浙江省杭州市西湖区2016年9月到2017年4月的 历史天气数据为例,最终成果如下:
3 核心代码
对于数据比较少时,可以先保存到文本文档里面(如某一个城市几月到几月),然后解析即可。
import pandas as pd# 读取文本文件并分割成行
with open(r'origin_data_by_line.txt', 'r', encoding='utf-8') as file: lines = file.readlines()# 将每4行数据合并为一个列表项,每个列表项代表一行表格数据
table_data = [lines[i:i + 7] for i in range(0, len(lines), 7)]# 将列表中的每个四行组转换为单个字符串,并去除空白字符
table_data = [' '.join(group).strip() for group in table_data]# 将数据分割成单独的列,这里假设每行数据之间是用换行符分隔的
# 并且每行内的字段之间是用空格分隔的
columns = table_data[0].split() # 假设第一行是表头
data = [line.split() for line in table_data[1:]] # 剩下的是数据行# 创建DataFrame
df = pd.DataFrame(data, columns=columns)# 保存到Excel文件
df.to_excel('output.xlsx', index=False)
r’origin_data_by_line文本文件是从历史天气数据网站copy后的数据,格式为一行一行的文本:
日期
星期
最高气温
最低气温
天气
风向
级别
2016-09-01
星期四
33℃
23℃
阵雨
西南风
4级
2016-09-02
星期五
34℃
22℃
晴
西风
1级
2016-09-03
星期六
35℃
23℃
晴
东风
1级
2016-09-04
星期日
32℃
24℃
多云
东风
3级
...
如以杭州西湖区2017年4月份为例:
https://m.tianqi.com/lishi/xihu/201704.html
该数据copy后粘贴,为一行一行的,不能直接使用,需要重新处理后,生成表格才能用。
如果涉及到很多城市,很多历史数据如何处理呢?
很简单,对每一个城市进行遍历,遍历对应的日期,然后解析。这里需要用到爬虫知识,即先解析该网站,获取到对应的web数据,接着从里面逐步解析,最后得到数据。
最核心的解析代码上面已经贴出来了,如果需要完整爬虫爬取某城市的数据,可以在评论区评论,后面笔者有空会更新,还是本科时候写爬虫比较多,如今已经几年没有写爬虫代码了,需要重新弄下环境。