Python 气象数据分析

这篇博客介绍了使用Python进行气象数据分析的实例,重点分析了意大利北部沿海地区的温度和湿度数据。通过matplotlib和scikit-learn库,对数据进行了可视化和回归分析,验证了海洋对气候的影响。实验包括温度和湿度的趋势分析,以及风向频率的极区图展示,揭示了海洋对气温和湿度的影响范围和特征。
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

数据分析实例 -- 气象数据

一、实验介绍

本实验将对意大利北部沿海地区的气象数据进行分析与可视化。我们在实验过程中先会运用 Python 中matplotlib库的对数据进行图表化处理,然后调用 scikit-learn 库当中的的 SVM 库对数据进行回归分析,最终在图表分析的支持下得出我们的结论。

1.1 课程来源

本课程基于 图灵教育 的 《Python数据分析实战》 第2章制作,感谢 图灵教育 授权实验楼发布。如需系统的学习本书,请购买《Python数据分析实战》

为了保证可以在实验楼环境中完成本次实验,我们在原书内容基础上补充了一系列的实验指导,比如实验截图,代码注释,帮助您更好得实战。

如果您对于实验有疑惑或者建议可以随时在讨论区中提问,与同学们一起探讨。

1.2 实验知识点

  • matplotlib 库画出图像
  • scikit-learn 库对数据进行回归分析
  • numpy 库对数据进行切片

1.3 实验环境

  • python2.7
  • spyder
  • Xfce终端

1.4 适合人群

本课程难度为中等,适合具有Python基础的用户,如果对 matplotlib 模块有了解会更快的上手。

1.5 代码获取

你可以通过下面命令将代码下载到实验楼环境中,作为参照对比进行学习。

$ wget http://labfile.oss.aliyuncs.com/courses/780/SourceCode.zip$ wget http://labfile.oss.aliyuncs.com/courses/780/WeatherData.zip

本实验在交互式的环境当中完成,代码不能直接在命令行中运行(因为要画图)。如果想要看效果的同学可以把 SourceCode.zip 和 WeatherData.zip解压,然后打开桌面上的 spyder, 在Ipython console的交互式环境中进入WeatherData所在路径,然后把代码黏贴到 console 当中去。具体方式请看如下的 gif 图。

此处输入图片的描述

在这里还是要呼吁大家不要简单的复制粘贴代码,还是要依照本实验的教程自己一步步得实现。

二、实验原理

气象数据是在网上很容易找到的一类数据。很多网站都提供以往的气压、气温、湿度和降雨量等气象数据。只需指定位置和日期,就能获取一个气象数据文件。这些测量数据是由气象站收集的。气象数据这类数据源涵盖的信息范围较广。数据分析的目的是把原始数据转化为信息,再把信息转化为知识,因此拿气象数据作为数据分析的对象来讲解数据分析全过程再合适不过。

2.1 待检验的假设:靠海对气候的影响

写作本章时,虽正值夏初,却已酷热难耐,住在大城市的人感受更为强烈。于是周末很多人到山村或海滨城市去游玩,放松一下身心,远离内陆城市的闷热天气。我常常想,靠海对气候有什么影响?这个问题可以作为数据分析的一个不错的出发点。我不想把本章写成科学类读物,只是想借助这样一种方式,让数据分析爱好者能够把所学用于实践,解决“海洋对一个地区的气候有何影响”这个问题。

研究系统:亚得里亚海和波河流域

既然已定义好问题,就需要寻找适合研究数据的系统,提供适合回答这个问题的环境。首先,需要找到一片海域供你研究。我住在意大利,可选择的海有很多,因为意大利是一个被海洋包围的半岛国家。为什么要把自己的选择局限在意大利呢?因为我们所研究的问题刚好和意大利人的一种典行为相关,也就是夏天我们喜欢躲在海边,以躲避内陆的酷热。我不知道在其他国家这种行为是否也很普遍,因此我只把自己熟悉的意大利作为一个系统进行研究。但是你可能会考虑研究意大利的哪个地区呢?上面说过,意大利是半岛国家,找到可研究的海域不是问题,但是如何衡量海洋对其远近不同的地方的影响?这就引出了一个大问题。意大利其实多山地,离海差不多远,可以彼此作为参照的内陆区域较少。为了衡量海洋对气候的影响,我排除了山地,因为山地也许会引入其他很多因素,比如海拔。

意大利波河流域这块区域就很适合研究海洋对气候的影响。这一片平原东起亚得里亚海,向内陆延伸数百公里(见图9-1)。它周边虽不乏群山环绕,但由于它很宽广,削弱了群山的影响。此外,该区域城镇密集,也便于选取一组离海远近不同的城市。我们所选的几个城市,两个城市间的最大距离约为400公里。

此处输入图片的描述

第一步,选10个城市作为参照组。选择城市时,注意它们要能代表整个平原地区(见图9-2)。

此处输入图片的描述

如图9-2所示,我们选取了10个城市。随后将分析它们的天气数据,其中5个城市在距海100公里范围内,其余5个距海100~400公里。

选作样本的城市列表如下:

  • Ferrara(费拉拉)
  • Torino(都灵)
  • Mantova(曼托瓦)
  • Milano(米兰)
  • Ravenna(拉文纳)
  • Asti(阿斯蒂)
  • Bologna(博洛尼亚)
  • Piacenza(皮亚琴察)
  • Cesena(切塞纳)
  • Faenza(法恩莎)

现在,我们需要弄清楚这些城市离海有多远。方法有多种。这里使用TheTimeNow网站提供的服务,它支持多种语言(见图9-3)。

此处输入图片的描述

有了计算两城市间距离这样的服务,我们就可以计算每个城市与海之间的距离。你可以选择 海滨城市Comacchio作为基点,计算其他城市与它之间的距离(见图9-2)。使用上述服务计算完 所有距离后,得到的结果如表9-1所示。

此处输入图片的描述此处输入图片的描述

三、开发准备

定义好要研究的系统之后,我们就需要创建数据源,以获取研究所需的数据。上网浏览一番,你就会发现很多网站都提供世界各地的气象数据,其中就有Open Weather Map,它的网址是 http://openweathermap.org/ (见图9-4)。

此处输入图片的描述此处输入图片的描述

该网站提供以下功能:在请求的URL中指定城市,即可获取该城市的气象数据。我们已经准备好了数据,不需要大家再去调用该网站的 API。

启动桌面上的spyder。如果您发现您桌面上没有spyder,请在该实验中重新开一个实验环境(实验楼为不同的实验创建不同的实验环境):

创建新环境

Spyder

我们首先来获取我们的数据文件。打开 Xfce 终端

$ cd Code$ mkdir WeatherAnalysis$ cd WeatherAnalysis$ wget http://labfile.oss.aliyuncs.com/courses/780/WeatherData.zip$ unzip WeatherData.zip

这时候应该能够再 WeatherData 中间看到 10 个城市的天气数据文件(以 .csv 结尾)

双击打开 spyder ,在 Ipython Console 中进入我们的目标目录

cd Codecd WeatherAnalysiscd WeatherData

我们在实验里只需要用到 Ipython Console 所以别的不相关的窗口可以关闭。

此处输入图片的描述

import numpy as npimport pandas as pdimport datetime

如果你想用本章的数据,需要加载写作本章时保存的10个CSV文件。

df_ferrara = pd.read_csv('ferrara_270615.csv')df_milano = pd.read_csv('milano_270615.csv')df_mantova = pd.read_csv('mantova_270615.csv')df_ravenna = pd.read_csv('ravenna_270615.csv')df_torino = pd.read_csv('torino_270615.csv')df_asti = pd.read_csv('asti_270615.csv')df_bologna = pd.read_csv('bologna_270615.csv')df_piacenza = pd.read_csv('piacenza_270615.csv')df_cesena = pd.read_csv('cesena_270615.csv')df_faenza = pd.read_csv('faenza_270615.csv')

我们把这些数据读入内存,完成了实验准备的部分。

四、项目文件结构

此处输入图片的描述

Pic9-* 代表的是每一张分析图所使用的代码。

WeatherData 是我们的数据。

五、实验步骤

从数据可视化入手分析收集到的数据是常见的做法。前面讲过,matplotlib库提供一系列图表生成工具,能够以可视化形式表示数据。数据可视化在数据分析阶段非常有助于发现研究系统的一些特点。

导入以下必要的库:

%matplotlib inlineimport matplotlib.pyplot as pltimport matplotlib.dates as mdatesfrom dateutil import parser

5.1 温度数据分析

举例来说,非常简单的分析方法是先分析一天中气温的变化趋势。我们以城市米兰为例。

# 读取米兰的城市气象数据df_milano = pd.read_csv('milano_270615.csv')# 取出我们要分析的温度和日期数据y1 = df_milano[
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值