python推薦 | 面向地學領域的Python庫匯總

2021-02-21 好奇心Log

這是一篇告訴你如何更好的使用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數據處理和可視化庫:

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,大家可以把自己覺得有用的庫一起加進來不斷豐富整個項目。

作為一個偽程序猿,竟然越來越喜歡沒有代碼的推送了

相關焦點

  • 推薦一些相見恨晚的 Python 庫 「二」
    上一篇文章 推薦一些相見恨晚的 Python 庫 「一」對 Awesome Python 做了個簡單的介紹,同時匯總了一部分優秀的
  • 推薦一些能提高生產力的 Python 庫
    當然在這裡並不是說 Python 的庫真的就全的不要不要的,它在某些領域或者項目的生態還是有待完善的。正好昨天刷到知乎一個問題「你見過哪些相見恨晚的 Python 庫?」,其意就是想了解下有哪些非常好用的提高生產力的 Python 庫。
  • 十六本python入門學習書籍推薦,python入門新手必看
    它不僅從計算機教學和計算機科學的角度講解了初學者如何才能更有效地去學習Python,而且特別強調用Python解決生活中的實際問題,精心組織了大量來源於生活中不同領域的與數值計算和數據處理相關的案例。通過《Python入門經典:以解決計算問題為導向的Python編程實踐》,讀者不僅能系統掌握Python編程相關的知識,而且還能掌握利用Python處理各種與數據相關的問題。
  • 學python能找到女朋友嗎(python基礎教程)
    girlFirend>girlFirend gf(){return New girlFriend("生日","三圍","體重","身高","血型","性格");}void main(){那麼學python
  • 為什麼我要推薦你學Python
    如果你是計算機相關專業,建議你去學Python!   如果你想學點東西沒有方向,建議你去學Python!   如果你對目前的工作不滿意,建議你去學Python!   說了這麼多,到底什麼是Python?
  • Python自動化用這些知識點就夠了!
    這可能是很多非IT職場人士面臨的困惑,想把python用到工作中,卻不知如何下手?python在自動化辦公領域越來越受歡迎,批量處理簡直是加班族的福音。python基礎能做這些的前提是會使用Python,最起碼要熟悉基本語法,可以編寫小腳本。對於python語法的要求,你可以對照python基礎教程的部分查看需要學那些,找個免費視頻教程跟著學,然後多敲代碼練習。如果習慣看書的話,可以買本python入門書備查。
  • 人生苦短,我用Python,那麼問題來了,普通人要學python嗎?
    python簡介   Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷蘭國家數學和計算機科學研究所設計出來的。它的標準實現是由C語言完成的。   Python 是一種解釋型, 交互式,面向對象的語言。
  • 為什麼學Python?一文看懂Python主要應用領域和就業前景
    Python容易學麼?工資高麼?技術小白適合學習麼?。。。。。。本篇文章將一 一為大家解答Python是一門面向對象的程式語言,編譯速度超快,從誕生到現在已經25個年頭了。它具有豐富和強大的庫,常被稱為「膠水語言」,能夠把用其他語言編寫的各種模塊(尤其是C/C++)很輕鬆地聯結在一起。
  • Python常用庫大全
    pathlib – (Python3.4+ 標準庫)跨平臺的、面向對象的路徑操作庫。 python-magic- 文件類型檢測的第三方庫 libmagic 的 Python 接口。 restless – 框架無關的 REST 框架 ,基於從 Tastypie 學到的知識。 ripozo – 快速創建 REST/HATEOAS/Hypermedia APIs。 驗證實現驗證方案的庫。
  • python基礎--math庫
    收錄於話題 #python python的強大不在於它的語法簡單,而在於它強大的生態系統,據查python有12萬以上的第三方庫,除了全面覆蓋IT領域外,還有其它諸如物理、化學等領域的第三方庫
  • 每個python人都離不開的12個python庫
    如果說python能取得今天的成就,一方面是它簡介的語法,更重要的一方面就是它豐富的第三方庫,可以毫不誇張的說,只要你能想到的任何一個功能模塊,都有對應的python庫,可以說正是因為有了豐富的python庫,python才發展得如此迅速,下面我們來看看python人最常用的20個python
  • 史丹福大學教授推薦兩本Python入門書籍
    今天給大家分享自己學習的python的入門書籍。曾經我們讀書的時候,對編程能力特別感興趣,可是我本身發展不是學計算機的,所以進行編程技術只能看視頻通過自學。那時候,我接觸到的第一門語言是C++,就是一個學了很久,但是由於這門藝術語言教育太過深奧,我學了幾個月,連一些企業基本的圖形設計開發也實現不了,後來我果斷放棄使用編程了。在後來偶然因素之間相互接觸了解到python這門專業語言,給我打開了一扇新的大門。因為python實在太簡單了,直接在命令行打」1+1「,回車就出來結果了,交互性也是非常強。
  • 推薦收藏!2天學全Python面試基礎(1)
    Python是一個廣泛的領域,因此有必要保持最新狀態。通過列出30個python面試問題和答案,本文涵蓋在Python面試中經常問到的問題。如果您是該行業的新手,本基礎篇將極大地幫助您。我們衷心希望這篇文章在準備面試時會有所幫助。
  • 2019 必知的 10 大頂級 python 庫
    在本文中,我們將討論一些 python 中的頂級庫,開發人員可以使用這些庫在現有的應用程式中應用、清洗和表示數據,並進行機器學習研究。然而,最重要的一點是它有大量的庫供用戶使用。python 的簡單性吸引了許多開發人員為機器學習創建新的庫。由於有大量的庫,python 在機器學習專家中變得非常流行。所以,這裡要介紹的第一個庫是 TensorFlow。
  • 為什麼入門大數據選擇Python而不是Java?
    Java語言作為靜態面向對象程式語言的代表,極好地實現了面向對象理論,允許程式設計師以優雅的思維方式進行複雜的編程。Java具有簡單性、面向對象、分布式、健壯性、安全性、平臺獨立與可移植性、多線程、動態性等特點 。Java可以編寫桌面應用程式、Web應用程式、分布式系統和嵌入式系統應用程式等。
  • 介紹一下什麼是python(瘋狂Python)
    很高興能夠在百家號中,每日更新5篇文章了,能夠這麼快的從百家號新人轉正,全靠之前的每日更新躺著學英語語法的文章,能夠轉正全靠百度好友們針對我的普通人,非專業搞編程的人,也能快速上手,也許你會問我python能幹什麼用,它的用處可多了:比如web開發(django,flask等),網絡爬蟲(scrapy等),數據分析(numpy,pandas,matplotlib庫等),人工智慧(Tenseflow等)等等應用的地方很多。那麼就讓我們從一個小白學起吧!1. Python是一種電腦程式設計語言。
  • opencv-python獲取圖像:面向對象與面向過程
    讀取圖片學過數字圖像處理的小夥伴應該很熟悉,在數字圖像處理課上,這是一張標準的測試圖片。Lena圖像在科研領域流行的原因:1.該圖適度的混合了細節、平滑區域、陰影和紋理,從而能很好的測試各種圖像處理算法。2.Lenna是個美女,對於圖像處理界的研究者(大部分都是男性)來說,美女圖可以有效地吸引他們來做研究。
  • 講一講我是如何通過Python實現辦公自動化的
    對於python語法的要求,你可以對照python基礎教程的部分查看需要學那些,找個免費視頻教程跟著學,然後多敲代碼練習。如果習慣看書的話,可以買本python入門書備查。>錯誤和異常 try/except語句面向對象 簡單掌握面向對象概念即可語法是關鍵,一定要理解python編程的基本概念,再去學其他的工具庫。
  • 開課吧:Python是什麼意思?為什麼有那麼多人學Python?
    PythonPython 是一個高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言。python非常容易上手,而且能幹很多事情,WEB開發,機器學習人工智慧,數據分析,量化投資,爬蟲等,基本可以應用到各行各業,而且大家都在做基於PYTHON的庫,使得PYTHON語言變成一門直接拿來就能用的語言,更像一種工具了,比如機器學習,可能理論很複雜,但是實際在PYTHON中僅僅幾行代碼就能實現,不用花太多時間用在碼代碼上面,python 現在是越來越火
  • 如何自學成 Python 大神?這裡有些建議
    想要解決一個問題,你需要非常清楚地了解問題本身。我的意思是你需要了解輸入、輸出、約束條件、規則和許多其他的東西。以下是我推薦的一些步驟: 了解 Python 的基礎知識掌握任何一門程式語言的基礎都是非常重要的。你至少首先應該明白如何輸入和輸出。