背向NCL,面向对象

转自:
http://www.meteoai.cn/post/2019-03-26-E8%83%8C%E5%90%91ncl_%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1/

首先这不是一篇告诉你如何抛弃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:提供了很多可选的colormap
colormap:提供了一些颜色转换基础操作和创建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就能满足你呢!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值