背向NCL,面向对象
首先这不是一篇告诉你如何抛弃NCL的推送,而是告诉你如何更好的使用Python!
作为曾经地球科学领域最炙手可热脚本语言之一的NCL已经进入维护模式,不再更新。NCAR将使用Python作为地球科学领域的主要数据处理和可视化工具。
NCAR对NCL进行了“封装”,构成了PyNGL和PyNIO,随后可能还会开发一款工具,囊括NCL中大多数函数。PyNGL和PyNIO中的函数和绘图方式与NCL是非常类似的,可以非常顺畅的从NCL转到Python。
但遗憾的是PyNGL和PyNIO仍不支持Windows系统(除了Win10的 Linux子系统外)。既然已经从NCL转到Python了,那么为什么一定要执着于PyNGL和PyNIO呢,今天就抛开PyNGL和PyNIO,介绍Python中其他常用库,实现真正的跨平台切换。
数据处理
NetCDF格式 :
netCDF4-python
,h5py
,h5netcdf
,xarray
等。 除了上述简单的数据处理库之外,python还提供了NCO
和CDO
工具的封装,pynco
和cdo
,提供了更多的便捷操作。Grib格式:
xarray
,Iris
,pygrib
等,有些仅支持类Unix系统。 ECWMF提供了cfgrib
工具可将grib格式转换为NetCDF格式,cfgrib
库支持Mac,Linux和windows系统。csv, xlsx等格式:
pandas
你值得拥有,无论是气象还是其他领域的类似格式数据,使用pandas
可以解决你的常用操作。HDF格式:
pandas
和h5py
可以处理hdf5格式,PyHDF
可以处理hdf4格式。二进制:
numpy
可以处理二进制数据,同时借助python内置struct
模块可以非常方便的处理二进制格式数据。
上述介绍的一些库,很多仅支持简单的数据读取和写入操作,不支持更多计算操作。如果要对空间数据进行插值,可能就无法满足了。
数据插值
xESMF
和ESMPy
:气象数据空间插值,尤其是对于模式网格数据而言,提供了一些便捷的命令可对网格数据进行一些列插值操作python-stratify
:针对大气和海洋数据进行垂直插值scipy.interpolate
模块提供了大量插值函数python-geotiepoints
:针对地理网格数据的空间插值
说到地球科学领域的数据处理,最离不开的应该也是模式输出数据了。Python中有很多处理模式输出的库,功能都比较完善。
模式输出处理
wrf-python
:对于使用WRF模式的来说使用最为频繁的模式输出后处理工具之一。salem
:这个库包含了数据处理和可视化几乎所有功能,就放这里吧,毕竟也提供了不少WRF模式后处理和前处理的函数。CESM_postprocessing
:针对CESM
地球模式的后处理工具CAMxTools
:提供了CAMx和CMAQ模型的前处理和后处理功能PseudoNetCDF
:类似处理NetCDF的工具,可用于处理CMAQ等模式输出结果MONET
:模式和观测评估工具
雷达和卫星数据处理
PyART
,wradlib
可用于处理国外常见格式的雷达数据。改进后的PyART和PyART提供国内常用的S波段雷达数据处理方式,还有这个PyCINRAD。此外,Python中还提供了不少雷达数据处理和反演库。satpy
,PyCAMA
,pys5p
,pyresample
等库可处理常见的卫星数据
说到数据处理,当然少不了Micaps的多种数据格式了,下面介绍一款国内大神基于Python开发的Micaps数据处理和可视化库:
Micaps数据处理
PyMICAPS
:PyMICAPS是由国内某气象局一位大神开源的Micaps输出处理和可视化工具(发布在知名同性 交友平台–Github),功能相对齐全,而且也在不断完善。感兴趣的可以下载使用,并反馈意见,帮助持续完善(打个广告~~)。
数据处理完成之后,当然是要进一步进行分析,python中提供了相当多的分析工具,以下仅列出一小部分:
数据分析
EOFS
:Python EOF分析库statsmodels
:Python统计分析库,提供了大量的统计分析函数scikit-learn
:Python中较为热门的机器学习库,其中也提供了相当多的统计学方法metpy
,sharppy
,atmos
等库可计算大气科学领域常用的一些参数,其中metpy
还提供了一些可视化和数据处理函数。
数据处理完成后,当然也要画图看一下了,要不然怎么发paper呢<手动狗头>?
数据可视化
matplotlib
:matplotlib
可以说是python中最为基础的绘图库了seaborn
:针对统计分析的可视化库Basemap
和Cartopy
:针对地理信息的可视化库EarthSim
:针对环境模拟(比如水文气象等)的后处理可视化工具,包含了交互式可视化。calmap
:可以绘制日历图
还有一些库不知道该怎么分类,就放到这边吧:
geopandas
:地理空间数据处理和可视化神器pyshp
,fiona
等可处理常规的shapefile文件,常在画图的时候添加海岸线和边界线使用
上述介绍的可视化库大多是非交互式可视化库,关于Python中更多的可视化库分类,见Python可视化工具概览画图当然少不了配色,以下介绍一些Python中的配色库:
cmocean
:海洋科学领域的配色库,除了python版之外,还有matlab及其他版本colorcet
,palettable
,colour
:提供了很多可选的colormapcolormap
:提供了一些颜色转换基础操作和创建colormap的函数cmaps
:提供了NCL中所有的colormap
除了上面提到的之外,Python中还有很多可用的库,比如网络数据获取requests
和bs4
等,而且很多国外很多机构都提供了python版的获取数据的API接口工具。
机器学习
sklearn
:前面已经介绍,可以用这个框架完成常用的机器学习流程,从数据预处理,特征工程,建模到评估,非常方便,但不支持深度学习的模型。TensorFlow
:大家都耳熟能详的深度学习框架,是Google brain 开发和维护的,在工业界和学术界都有广泛的使用。Pytorch
:与TensorFlow相比,Pytorch更加方便实现简单灵活的实验,它的前身是Torch,用的是lua语言,从Torch到Pytorch可以看成是lua到python的迁移。Keras
:是建立在 Tensorflow 和 Theano 之上的更高级的 封装,非常容易上手,适合进行简单的试验。具体可以看铁柱同学的系列文章。XGBoost
:被称为机器学习大杀器的XGBoost(eXtreme Gradient Boosting),想必大家都有所耳闻,很多比赛的top solutions大多数都用了这个算法。lightgbm
:微软推出的gbm算法模型,更加轻量,一些测试表明其可以实现类似xgboost的效果,但是可以极大节约时间成本。CatBoost
:CatBoost是Yandex在17年开源的机器学习框架,对类别特征支持较好,可以理解为基于类别特征优化的GBM算法。Hyperopt
:强大的调参库,支持贝叶斯优化。
上面仅对仅列出了一些气象或者机器学习常用库,当然还有很多库有待挖掘。当你有一个想法的时候,可以在Google或者Github搜索一下,说不定Python就能满足你呢!
- 点赞
- 收藏
- 关注作者
评论(0)