城市气候与海洋的关系研究。
引入
本例来自《Python数据分析实战》第九章:数据分析实例——气象数据。
作者是意大利人,本例的出发点为:夏天的时候,人们常常到山村或滨海城市避暑,由此延伸出一个疑问,靠海对气候有什么影响?也就是海洋对一个地区的气候有何影响?
研究系统:亚得里亚海和波河流域
为了衡量海洋对气候的影响,排除了山地,因为山地也许会引入其他很多因素,比如海拔。
意大利波河流域这块区域就很适合研究海洋对气候的影响。这一片平原东起亚得里亚海,向内陆延伸数百公里(见图1)。它周边虽不乏群山环绕,但由于它很宽广,削弱了群山的影响。此外,该区域城镇密集,也便于选取一组离海远近不同的城市。我们所选的几个城市,两个城市间的最大距离约为 400 公里。
第一步,选 10 个城市作为参照组。选择城市时,注意它们要能代表整个平原地区,还有一个海滨城市,作为计算其他城市离海远近的基点。结果如下图所示:
如上图所示,我们选取了 10 个城市。随后将分析它们的天气数据,其中 5 个城市在距海 100 公里范围内,其余 5 个距海 100~400 公里。
选作样本的城市列表如下:
- Ferrara(费拉拉)
- Torino(都灵)
- Mantova(曼托瓦)
- Milano(米兰)
- Ravenna(拉文纳)
- Asti(阿斯蒂)
- Bologna(博洛尼亚)
- Piacenza(皮亚琴察)
- Cesena(切塞纳)
- Faenza(法恩莎)
接下来,我们需要计算这些城市离海有多远。这里使用 TheTimeNow 网站提供的服务,以海滨城市 Comacchio 作为基点,计算其他城市与它之间的距离:
数据源
该数据集共30个文本文件,每个城市有3个文本文件,对应着不同的日期。
数据集的下载链接为: 待补充!!!
导入数据集
- 导入各个城市的数据,并将不同日期的城市数据进行合并。
1 | import numpy as np |
- 显示一个城市的内容
1 | milano.head() |
数据可视化
温度
先分析一天中气温的变化趋势,以城市米兰为例:
1 | # 温度和日期数据 |
结果如下图:
我们进行数据分析的目的是尝试解释是否能够评估海洋是怎样影响气温的,以及是否能够影响气温趋势,因此我们同时来看几个不同城市的气温趋势。这是检验分析方向是否正确的唯一方式。因此,我们选择三个离海最近以及三个离海最远的城市。
1 | x1 = ravenna['day'][:24] |
六个城市的气温趋势如下图所示,红色表示离海最近的三个城市,绿色表示离海最远的三个城市:
可以沿着这个方向做深入研究,收集10个城市的最高温和最低温,用线性图表示气温最值点和离海远近之间的关系。
1 | # 城市列表 |
最高气温
先把最高气温的散点图画出来
1 | # 最高温度 |
如图所示,海洋对气象数据具有一定程度的影响这个假设是正确的(至少一天内如此)。而且从图中可以发现,海洋的影响衰减的很快,离海60~70公里开外,气温就已攀升到高位。
使用线性回归算法(scikit-learn库的SVR)得到两条直线,分别表示两种不同的气温趋势。
持续更新中!!!