目录
一 、项目背景 .......................................... 3
二 、实验环境 .......................................... 3
三 、实验数据来源 ................................... 4
四 、数据获取 .......................................... 5
五 、数据分析 ......................................... 17
六 、数据可视化 ....................................... 21
七 、总结 ............................................. 23
- 项目背景
天气情况与各个行业的经营发展有密不可分的关系,通时也与人们日常出行有一定的关联。当前天气预报技术主要利用先进的数据分析技术进行预测播报,但实际准确度与时效性依然无法满足当下社会需求。大数据时代的到来使得整个数据分析的过程更为科学合理,同时气象数据中隐含的价值被挖掘与应用,天气预报的应用意义得到进一步的开发。
天气预报的主要内容是一个地区或城市未来一段时期内的阴晴雨雪、最高最低温、风向和风力及特殊的灾害性天气。就中国而言,气象台准确预报寒潮、台风、暴雨等自然灾害出现的出现和强度,就可以直接为工农业生产和群众生活服务。随着生产力的发展和科学技术的进步,人类活动范围空前扩大,对大自然的影响也越来越大,因而天气预报就成为现代社会不可缺少的重要信息。
天气预报是根据气象观测资料,应用天气学、动力气象学、统计学的原理和方法,对某区域或某地点未来一定时段的天气状况作出定性或定量的预测。它是大气研究科学的一个重要目标。对人们生活有重要意义。
简而言之,气象数据的可视化是为了方便人们更直观的了解当前的天气情况,大大的降低了使用的困难程度,并且也降低了对于期限数据理解的难度。不管是对于使用者还是消费者来讲,都是一大利好。
- 实验环境
(1)Linux:Ubuntu 16.04
(2)Python:3.9
(3)Spark:2.4.0
(4)Jupyter Notebook
安装完上述环境以后,为了支持Python可视化分析,还需要执行如下命令安装新的组件:
sudo apt-get install python3-matplotlib
sudo apt-get install python3-tk
- 实验数据来源
本次实验所采用的数据,从中央气象台官方网站(网址:关注阴晴冷暖,气象一直为你)爬取,主要是最近24小时各个城市的天气数据,包括时间点(整点)、整点气温、整点降水量、风力、整点气压、相对湿度等。正常情况下,每个城市会对应24条数据(每个整点一条)。数据规模达到2412个城市,57888条数据,有部分城市部分时间点数据存在缺失或异常。限于本次大作业时间有限,没有办法全面分析这些数据,大作业中主要计算分析了各个城市过去24小时的平均气温和降水量情况。
- 数据获取
1.观察数据获取方式
进入中央气象台官方网站(网址:关注阴晴冷暖,气象一直为你),任意点击左侧栏“热点城市”中的一个城市。打开谷歌(chrome)浏览器的Web控制台。通过切换“省份”和“城市”,我们可以发现,网页中的数据是以json字符串格式异步地从服务器传送。可以发现以下数据和请求URL的关系。
请求URL传回数据
http://www.nmc.cn/f/rest/province 省份数据
http://www.nmc.cn/f/rest/province/+省份三位编码 某个省份的城市数据
http://www.nmc.cn/f/rest/passed/+城市编号 某个城市最近24小时整点天气数据
由于省份三位编码(如福建省编码为“ABJ”)需要从省份数据获得中获得,城市编号需要从城市数据获得(如福州市编号为“58847”),所以为了获得各个城市最近24小时整点天气数据,依次爬取省份数据、城市数据、最近24小时整点数据。
2.数据爬取
由于可以直接通过访问请求URL,传回的响应的数据部分即是json格式的数据,所以只需要调用python的urllib2库中相关函数,对上述URL进行请求即可。不需要像平常爬取HTML网页时还需要对网页源码进行解析,查找相关数据。唯一需要注意的是,有些城市可能不存在或者全部缺失最近24小时整点数据,需要进行过滤,以免出错。
3.数据存储
虽然上一步获取的json数据可以直接存储并可使用SparkSession直接读取,但是为了方便观察数据结构、辨识异常数据、对数据增加部分提示信息,爬取后的数据进行了一些处理之后,保存成了csv格式,包括省份数据(province.csv)、城市数据(city.csv)、各个城市最近24小时整点天气数据(passed_weather_ALL.csv)。由于所有城市过去24小时整点天气数据数量太多,为了避免内存不足,每爬取50个城市的数据后,就会进行一次保存。
4.数据读取
因为各个城市最近24小时整点天气数据体量较大,每次爬取需要半小时以上,为了提高实验效率,只会进行一次数据爬取。此后会直接读取第一次实验数据。如果需要重新爬取数据,需要手动删除已有数据,即删除input文件夹下province.csv、city.csv、passed_weather_ALL.csv。
5.数据结构
最后保存的各个城市最近24小时整点天气数据(passed_weather_ALL.csv)每条数据各字段含义如下所示,这里仅列出实验中使用部分。
province 城市所在省份(中文)
city_index 城市序号(计数)
city_name 城市名称(中文)
city_code 城市编号
time 时间点(整点)
temperature 气温
rain1h 过去1小时降雨量
想要获取更多资源,请点击以下链接:
https://download.csdn.net/download/qq_53142796/87277310