美国国家气候数据中心(NCDC)数据下载与处理
1、數(shù)據(jù)下載網(wǎng)址:
ftp://ftp.ncdc.noaa.gov/pub/data/noaa/isd-lite/
注:用Google Chrome瀏覽器打開
數(shù)據(jù)源為NCDC(美國國家氣候數(shù)據(jù)中心,National Climatic Data Center),隸屬于NOAA(美國國家海洋及大氣管理局,National Oceanic and Atmospheric Administration)
2、所需站點ID篩選
站點ID在isd-history里根據(jù)所屬國家進行查詢,中國的縮寫為CH,將中國區(qū)的站點ID、經(jīng)緯度全部篩選出,導(dǎo)入arcgis中顯示為點數(shù)據(jù)NCDC_station.shp,用研究區(qū)邊界對NCDC_station.shp進行裁剪,得到研究區(qū)內(nèi)的站點分布,打開屬性表導(dǎo)出,得到自己所需的站點ID,根據(jù)站點ID在網(wǎng)站進行對應(yīng)下載,如下圖所示。
3、站點數(shù)據(jù)下載
網(wǎng)站上為1901年~最新年份的數(shù)據(jù),按年份分文件夾,每個年份的文件夾內(nèi)為.gz格式的站點數(shù)據(jù),站點文件命名格式為××××××(站點ID)-99999-××××(年份),找到自己所需的站點,點擊即可下載。
4、數(shù)據(jù)格式解讀
下載的數(shù)據(jù)沒有表頭,網(wǎng)站有對于各列數(shù)據(jù)含義的解讀文件 isd-lite-format.txt
其中各列數(shù)據(jù)的中文含義分別是年、月、日、小時、氣溫、露點溫度、氣壓、風(fēng)向、風(fēng)速、云量、累積降雨量-1小時、累積降雨量-6小時
5、為數(shù)據(jù)添加表頭并輸出為excel文件
用python對站點數(shù)據(jù)進行處理,代碼引自他人教程
import pandas as pd import numpy as npdata = pd.read_table('自己的文件路徑/592871-99999-2022',header=None) ''' 原始數(shù)據(jù)中以空格分隔的12列數(shù)據(jù),分別為: 年、月、日、小時、溫度、露點溫度、氣壓、風(fēng)向、風(fēng)速、云量、1小時降雨量和6小時降雨量。 ''' # 構(gòu)建空列表用于存放提取出來的各列數(shù)據(jù) data_list = [] for line in data.values:line_temp = [int(x) for x in line[0].split(' ') if x != '']data_list.append(line_temp)df = pd.DataFrame(data_list,columns=['年','月','日','小時','溫度','露點溫度','氣壓','風(fēng)向','風(fēng)速','云量','1小時雨量','6小時雨量'])# 對數(shù)據(jù)中-9999的缺失值進行NaN替換 df = df.replace(-9999,np.nan) # 數(shù)據(jù)說明文檔中表示原始數(shù)據(jù)中溫度、露點溫度、氣壓、風(fēng)速、降雨量的換算系數(shù)為10,所以要對原始數(shù)據(jù)中的對應(yīng)數(shù)據(jù)除以10,進行換算。 df['溫度'] = df['溫度']/10 df['露點溫度'] = df['露點溫度']/10 df['氣壓'] = df['氣壓']/10 df['風(fēng)速'] = df['風(fēng)速']/10 df['1小時雨量'] = df['1小時雨量']/10 df['6小時雨量'] = df['6小時雨量']/10 # 為了便于后續(xù)重采樣分析數(shù)據(jù),給數(shù)據(jù)增加一個DataFrame列 df['Date'] = pd.PeriodIndex(year=df['年'],month=df['月'],day=df['日'],hour=df['小時'],freq='H') df = df.set_index(df['Date']) df.drop(columns= 'Date',inplace=True) print(df) # 保存為同名excel df.to_excel('想輸出的文件路徑592871-99999-2022.xlsx')6、將數(shù)據(jù)進行重采樣,逐小時變?yōu)橹鹑?/h2>
用python的數(shù)據(jù)重采樣將逐小時數(shù)據(jù)處理成逐日數(shù)據(jù),
import pandas import pandas as pd data1=pd.read_excel('自己的文件路徑578530-99999-2022.xlsx',usecols=['Date','溫度']) data1['Date']=pd.to_datetime(data1['Date']) data1=data1.set_index('Date') T1_mean = data1.resample('d').mean() #mean取日均溫,若處理降雨數(shù)據(jù)則為sum,日總降雨量 T1_max = data1.resample('d').max() #max取日最高溫 T1_min = data1.resample('d').min() #min取日最低溫 daily_T1 = pandas.concat([T1_mean,T1_max,T1_min]) print(daily_T1) data2=pd.read_excel('F:/NOAA_NCDC_2022/2022download/578660-99999-2022.xlsx',usecols=['Date','溫度']) data2['Date']=pd.to_datetime(data2['Date']) data2=data2.set_index('Date') T2_mean = data2.resample('d').mean() T2_max = data2.resample('d').max() T2_min = data2.resample('d').min() daily_T2 = pandas.concat([T2_mean,T2_max,T2_min]) print(daily_T2) data3=pd.read_excel('F:/NOAA_NCDC_2022/2022download/579720-99999-2022.xlsx',usecols=['Date','溫度']) data3['Date']=pd.to_datetime(data3['Date']) data3=data3.set_index('Date') T3_mean = data3.resample('d').mean() T3_max = data3.resample('d').max() T3_min = data3.resample('d').min() daily_T3 = pandas.concat([T3_mean,T3_max,T3_min]) print(daily_T3) #將excel寫入對象writer writer = pd.ExcelWriter(r"想輸出的路徑.xlsx", engine='xlsxwriter') # 分別將表T1、T2、T3寫入Excel中的sheet1、sheet2、sheet3 # 命名為daily_T1、daily_T2、daily_T3 daily_T1.to_excel(writer, sheet_name='daily_T1') daily_T2.to_excel(writer, sheet_name='daily_T2') daily_T3.to_excel(writer, sheet_name='daily_T3') # 保存讀寫的內(nèi)容 writer.save()總結(jié)
以上是生活随笔為你收集整理的美国国家气候数据中心(NCDC)数据下载与处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Lync Server 2010不同规模
- 下一篇: 技术改变生活——用HanLP来协助处理现