基于Python的乌当区气温数据可视化应用

2021-12-22 06:28赵宝筑王彪吴和俐钱成伟刘英春罗阳
数字技术与应用 2021年11期
关键词:乌当区新场各乡镇

赵宝筑 王彪 吴和俐 钱成伟 刘英春 罗阳

1.贵阳市乌当区气象局;2.贵州省气象信息中心;3.贵州省贵阳市气象局

为更好的研究历史气温变化规律和增减发展趋势,利用Python作为设计首选,Matplotlib、Plotnine等绘图扩展包作为可视化绘图驱动,完成乌当区各乡镇近十年气温可视化分析。本文利用乌当区各乡镇2010-2020年气温数据资料,分析乌当区城区及各乡镇的气温分布情况,绘制气温数据图例。实验结果表明:大量的气温数据能够直观形象展示并且可以有效分析出未来的气温大致走向及各地气温分布差异。

0 引言

空气温度是我们日常天气预报中的重要天气要素,也是老百姓最为关心的天气要素之一。近年来,乌当区区域自动气象站得到飞速发展,站网网格逐渐精细。自2009年以来,陆续以温度、雨量为主的气象要素监测站已基本达到数据全自动监测,全自动传输的指标,并且随着气象现代化的快速发展,乌当区各乡镇区域站点已100%覆盖。但由于县级气象台站业务人员对预报服务欠缺扎实的预报理论基础,对各乡平均气温分布趋势、整体季节性温度变化情况不明朗、不清晰,因此开展气温数据可视化分析对了解历史平均温度的分布变化趋势和季节性分布情况都有着一定的参考作用,也为地方政府掌握各乡镇温度变化及季节性播种耕作工作提供一定的指导意义。

本文运用2010年1月-2020年12月乌当区国家气象观测站和8个具有代表性的各乡镇区域气象自动站地面观测数据,以Python为主要数据处理语言,Matplotlib、Plotnine为等图例绘制扩展包,对各乡镇区域站气温数据和乌当区国家站气温数据进行具现化展示,使业务人员可以更直观、清晰的对乌当区历史气温整体变化有一定的了解,通过研究分析平均气温和最高最低气温的走向将进一步对开展乡镇精细化气温预报的把控有更大把握的区间,从而提高气象精细化服务的纵向质量和横向精度。

1 Python简要介绍、数据分析资源库

1.1 Python简介

Python是一种简单、解释型、交互式、动态语义、可移植、面向对象的超高级语言。其功能强大、语法简洁、免费开源,Python被著名国际自由软件项目KDE计划选定为标准系统脚本语言,微软公司也宣布将在.NET环境中提供对Python语言的支持[1],在2008年世界著名的TIOBE编程通用语言榜单上完全成为编程黑马,成为TIOBE2018编程通用语言,在人工智能研究领域排名第一,在编程脚本语言编写工程技术研究领域排名第一,在电子系统测试工程技术研究领域排名第一。除此之外,Python还在微机编程和电子信息科学理论计算电子数据技术发展两个不同方面都已经是一直占据着重要的技术领导者这个社会地位[2]。与其他计算机程序设计语言相比,Python具有高效的数据结构和开源带来的众多第三方扩展包支持优势,使得能以最少的代码量来完成同样的功能。以下为该语言优势特点:

1.1.1 简洁高效

Python语法简单、结构纯粹、关键字少、强制性的缩进展示程序层次结构,使程序更具严谨性,提高了代码可读性。

1.1.2 开源和可解释性

Python是FLOSS(自由/开放源码软件)之一,用户在使用Python完成开发后无需担心版权问题,且可以直接从源码运行程序,不需要转换。

1.1.3 强大的资源库

由于高扩展的特性,使得Python有了很多资源库,可以较好的解决使用者出现的问题。

1.2 可视化资源库

1.2.1 科学计算工具

利用Numpy数值计算扩展包和Pandas数据分析包,来对源数据进行一系列类似数据库的增、删、改、查操作,并基于内置计算函数可以根据用户需求来获取想要的值数据。

1.2.2 Matplotlib可视化绘图

数据可视化对于数据挖掘和数学建模都非常重要。对于Python来说,Matplotlib是使用最广的绘图库,此库主要用于绘制二维图像,也可用于绘制简单的三维图像。利用这个库,可以将处理好的数据以简单图表的形式呈现出来[3]。开发者仅需要几行代码,配合计算工具,便可以生成绘图,直方图、箱型图、散点图等,配合Basemap地图驱动引擎,可以更直观看出数据区域分布,较为快捷的对数据进行可视化操作。

1.2.3 Plotnine美学辅助

Plotnine是一种基于Python平台的图形语言,它可以在Matplotlib基础上美化图像,增加可观赏性,代码的简洁和数据显示的映射绘图的特点让它更受欢迎。

2 气温数据处理和分析

2.1 数据源处理

从贵州省气象局气候中心开发的“贵州省气象数据查询与显示系统”上查找乌当区各乡镇2010年1月至2020年12月的气温数据集,并导出为CSV文件,通过Pandas结构化数据库读取为DataFrame对象存储,利用Pandas中的isnull函数和通用函数计算来筛选和过滤掉表格里存在的空值和异常值。

2.2 数据分析与可视化绘图

2.2.1 历年气温平均值分析

将源数据预处理完毕后,导入Pandas包,调用read_csv()函数读取csv文件,提取出历史气温中的平均气温、平均最高最低气温数据,利用Basemap读取地图SHP文件,并用Matplotlib库为数据源加载到地图上,进行填色,设置坐标等操作。如图1(a)所示2010—2020年,乌当区各乡镇的年平均气温呈南部高,北部低的特征,自南向北呈递减趋势,各乡镇与乌当国家站年平均气温的差值绝对值最大可达2.1℃。而从图1(b)中平均最高气温分布上可以看出乌当区的东风镇平均气温最高,而北部乡镇均在19.5℃以下,由此可见,2010—2020年,全区各地年平均最高气温为18.1~22.8℃之间。北部乡镇平均气温较其他地区较低,均在20℃以下,年平均最低气温则和年平均气温及年平均最高气温表现一致,百宜相对于其于地区的乡镇,温度最低(图1c),各地与乌当国家站年平均最低气温的差值绝对值最大可达2.7℃。

图1 乌当区各乡镇2010-2020年平均气温、平均最高气温、平均最低气温分布Fig.1 Distribution of average temperature, average maximum temperature, and average minimum temperature of each town in Wudang District from 2010 to 2020

2.2.2 历年各月气温可视化分析

乌当区地处亚热带湿润性季风气候,四季分明,一般1月最冷,7月最热,以春、夏、秋、冬来代表对季节性气温特征进行详细的数据分析。

其中,据气象资料统计,乌当区的春季(3~5月)十年平均温度分布区间是主城区14.3~17.7℃、水田镇12.7~16.2℃、羊昌镇12.5~15.9℃、新场镇12.1~16.0℃、下坝镇13.7~17.1℃、偏坡乡13.7~16.6℃、东风镇14.5~18.1℃、百宜镇12.3~15.5℃、新堡乡12.9~17.9℃。

而在夏季(6~8月),乌当的近十年平均温度分布区间大概:主城区22.6~24.3℃、水田镇21.2~22.9℃、羊昌镇21.3~22.7℃、新场镇20.6~22.9℃、下坝镇21.9~23.9℃、偏坡乡21.9~23.4℃、东风镇22.3~24.9℃、百宜镇20.2~22.0℃、新堡乡21.3~23℃。从乌当区各地气温分布来看,温度最高值出现在2013年,主城区以及水田镇分别在2013年及2016年达到近年最高值,在近十年全区的极大最高温度出现在东风镇(24.9℃)。新场及下坝镇的最低气温出现在2012年,主城区和水田镇近十年的最低气温分别出现在2012和2015年,羊昌镇、百宜镇、东风镇、偏坡布依族乡以及新堡布依族乡等地区温度最低值出现在2015年;主城区、水田镇夏季平均气温最高分别出现在2013和2016年,新场镇夏季平均气温最高温度在2016年,而中北部乡镇(羊昌、百宜、东风、下坝、偏坡、新堡)夏季的平均最高气温出现在2013年。

秋季(9~11月)的乌当区近十年平均温度区间分布为:主城区15.4~17.5℃、水田镇13.9~16.0℃、羊昌镇13.4~15.7℃、新场镇13.3~18.9℃、百宜镇12.0~15.3℃、东风镇15.5~17.8℃、下坝镇14.7~16.9℃、偏坡乡14.1~16.8℃、新堡乡13.5~16.0℃。从乌当区各地气温分布来看,秋季气温整体在19℃以下,整体极端最高温度出现在新场2015年18.8℃,其余乡镇大多最高温度出现在2011年,呈现南部温度较高,北部气温偏低的形势。

乌当区全区冬季(12月至来年2月)的近十年平均温度分布区间主要体现在2012年(如图2)所示,极端最低平均气温是百宜镇(0.8℃);各乡镇的近十年最高平均温度出现在2017年,平均气温最高出现在东风镇(8.5℃)。近10年来,乌当区冬季平均温度分布区间主要在:主城区3.2~8.2℃、水田镇2.5~6.9℃、羊昌镇1.2~6.4℃、新场镇1.2~6.5℃、百宜镇0.7~5.6℃、东风镇4.3~8.6℃、下坝镇2.5~7.7℃、偏坡乡3.1~7.5℃、新堡乡4.1~6.7℃。

图2 乌当区各乡镇2010-2020年冬季气温折线图Fig.2 The broken line graph of the winter temperature from 2010 to 2020 in the towns of Wudang District

3 结论

在利用Python及第三方扩展包进行数据可视化分析后,我们可以比较清晰直观的看出乌当区这近10年来的气候特征,也为以后开展自然灾害风险普查取得一定的参考价值,从可视化结果来看,乌当区整体平均气温南北地差异比较显明,四季南北气温值都有着相似的分布比例,主要分析出现2个原因:(1)乌当区北部乡镇海拔普遍高于南部乡镇;(2)中南部乡镇离主城区较近,从一定程度上受到了城市效应影响。

猜你喜欢
乌当区新场各乡镇
图片新闻
南江县:“三述三质三讲”问计于民
美丽的新场古镇
爱情永恒(组诗)
乌当区委离退局举办健身气功培训班
大战将军山
贵阳市乌当区地下水问题及防治
乌当区举办社区老年人“欢乐人生 幸福唱歌”歌咏比赛
乌当区委离退局迎“国庆”象棋赛圆满落幕
罗甸县各乡镇实测降雨量分析及应用研究