这是一篇告诉你如何更好的使用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模式后处理和前处理的函数。除此以外还是做掩膜的利器,之前的文章也有提到python绘图 | salem一招解决所有可视化中的掩膜(Mask)问题。•CESM_postprocessing
:针对CESM
地球模式的后处理工具•CAMxTools
:提供了CAMx和CMAQ模型的前处理和后处理功能•PseudoNetCDF
:类似处理NetCDF的工具,可用于处理CMAQ等模式输出结果•MONET
:模式和观测评估工具,然而我非常喜欢的一款类似工具还没有python版==
•PyART
,wradlib
可用于处理国外常见格式的雷达数据。改进后的PyART[1]和PyART[2]提供国内常用的S波段雷达数据处理方式,还有这个PyCINRAD[3]。此外,Python中还提供了不少雷达数据处理和反演库。•satpy
,PyCAMA
,pys5p
,pyresample
等库可处理常见的卫星数据
说到数据处理,当然少不了Micaps的多种数据格式了,下面介绍一款国内大神基于Python开发的Micaps数据处理和可视化库:
•PyMICAPS
:PyMICAPS[4]是由国内某气象局一位大神开源的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就能满足你呢!
之前和朋友们整合了这些资源,觉得对大家还是很有帮助的,不过新来的小伙伴可能没看到过,所以再发一次,希望对大家有所帮助,了解过的盆友们就当温故而知新吧。
另外因为开源库总是在不断更新,好的工具总在不断出现,为此在Github上开了一个项目https://github.com/MeteoAI/awesome-atmos,大家可以把自己觉得有用的库一起加进来不断丰富整个项目。
作为一个伪程序猿,竟然越来越喜欢没有代码的推送了