日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

panda提取时间戳中的日期_CMIP6数据提取---Python实现方案

發布時間:2023/12/31 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 panda提取时间戳中的日期_CMIP6数据提取---Python实现方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個月前寫了一篇“使用Arcgis處理CMIP6(netCDF)數據的流程”后,一直收到朋友們的私信,也幾乎天天都有交流。說來慚愧,后來我放棄了使用Arcgis進行處理這一條路,而是直接采用Python提取柵格點的時間序列數據,進行處理。

目前忙著降尺度的工作,可能會減少在知乎上的交流,因此在這里我會把目前掌握的部分數據提取方法分享出來,希望能幫到大家。


不用寫代碼的方法:

這個方法是我后面才發現的,優點就四個字:簡單粗暴!,缺點是輸出格式死板,需要就格式問題調整很久。

首先,你需要在電腦上裝有java的環境(別皺眉,只要有環境就行,不需要coding);

然后,點擊下面鏈接,下載panoply(這個軟件也有制圖的功能,并且成圖操作非常簡單友好);

https://www.giss.nasa.gov/tools/panoply/?www.giss.nasa.gov

下載好之后打開這個軟件,選擇nc文件,右邊可以看到數據描述性信息,選中要輸出的變量,如PR,右鍵選擇export csv,然后等著就行。

不知道為什么一直上傳圖片失敗,圖先欠著,下同...

輸出之后的csv文件普遍非常大,我示例中最大的一個達到了6g以上。它的數據輸出后是這樣的,每個時間點的全球數據作為一個矩陣,每一列是同一經度下,每一行是同一緯度下,以分辨率360*720為例,這個矩陣的大小就是(360,720),它是月尺度的,從1850-2014一共165年,1980個月,所以一共有1980個這樣的矩陣,綜上,PR的數據形態就是(1980,360,720)。

但是這樣的數據形式我們不好應用,下面介紹使用python的方法提取。


默認大家都擁有配置好的python3環境,我們需要的庫有:netCDF4,numpy,pandas。

其中netCDF4用來查看數據,了解數據信息,制定提取策略。numpy和pandas用于提取數據,并按我們需要的格式輸出。

主要是查看數據的shape:

for

然后你會看到我在前面提過的(t,x,y)這個形式,可以理解為一個三維矩陣(t,(x,y)),(x,y)代表數據的分辨率,如(360,720),就意味著一共有360*760個柵格點,對應到緯度和經度后,我們就可以知道這個數據是0.5度*0.5度的柵格,即50km分辨率。

那么現在我們要做的就是提取我們想要的數據了。很多朋友都在問我怎么按區域提取數據,我沒有做這個工作,我是按照手里有的實測站點位置來檢索柵格點并下載數據的,按區域下載的思路我放在最后說。

pr

首先定義一個函數用來找到我們所需經緯度點最近的柵格點:

import

現在寫一個for循環,提取出某個點的時間序列數據到一個list中:

for

同理,通過循環嵌套就可以提取出所有的點的時間序列數據。

這時,有的朋友可能會發現輸出的結果里沒有時間這一列。這是因為我發現nc文件中的時間格式如果直接導出的話看起來類似于時間戳,但是轉化后會發現對不上,所以我采取了自己生成日期序列的笨辦法(月尺度的還好,日尺度的很麻煩,因為大多數模型都沒有閏年這個概念,即沒有2月29日,生成日尺度日期序列時要避開這一坑),把list轉為數據框后,加上日期序列這一index,再輸出為csv即可。不過,如果做多模型,并且后續處理分析也在python中完成的話,我覺得完全沒必要將中間數據輸出。

如果要做月變化的對比,可以采取切片的方式,將list按12步長切片,每一片都是一年的12條數據。

def

數據提取暫且說這么多,開頭提到的按區域提取數據的思路,我的想法是:通過目標區域的外多邊形坐標經緯度點集,然后做一個遍歷判斷,把在多邊形內的點篩選出來,得到符合要求的點的索引號,然后把這些點的數據輸出。但是因為這段時間太忙,還沒有動手嘗試過,大家有思路的話,也歡迎在評論區交流。

總結

以上是生活随笔為你收集整理的panda提取时间戳中的日期_CMIP6数据提取---Python实现方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。