气象数据处理
一、获取气象数据网站
NOAA官网
站点数据:https://www.ncei.noaa.gov/data/global-hourly
卫星格点数据:https://psl.noaa.gov/data/gridded/index.html
欧洲气象中心
卫星格点数据:https://cds.climate.copernicus.eu/cdsapp#!/dataset/reanalysis-era5-land?tab=form
二、批量文件下载
站点数据下载:
for stid in `cat china_stid`
do
for i in `seq 1961 2021`
do
wget https://www.ncei.noaa.gov/data/global-hourly/access/2021/${stid}.99999.csv
done
done
三、站点数据简单处理
def deal(yearmin,yearmax):
long_term=pd.DataFrame()
for iyear in range(yearmin,yearmax)[:]:
try:
ifile=str(iyear)+"_52203099999.csv"
df=pd.read_csv(ifile)
df2=df[['STATION', 'DATE', 'LATITUDE', 'LONGITUDE', 'ELEVATION','NAME', 'WND', 'CIG','VIS', 'TMP']] #选取需要的量
# df2=df.drop(columns=[ 'SOURCE','AJ1', 'AY1', 'AY2', 'NAME', 'REPORT_TYPE', 'CALL_SIGN', 'QUALITY_CONTROL', 'GA1', 'GE1', 'GF1', 'IA2', 'KA1', 'KA2', 'MA1', 'MD1', 'MW1', 'OC1','OD1', 'REM', 'EQD']) #或删去不需要的量
tmp=df2["TMP"].str.split(",",expand=True).iloc[:,0] #读取变量
tmp2=tmp.astype("float")/10 #处理单位
tmp2[np.where(tmp2>100)[0]]=np.nan #去除异常、缺测值
##解决时间序列的缺测问题
itime=df2["DATE"]
itime2=itime.str.replace("T"," ")
itime3=pd.to_datetime(itime2.astype('datetime64[ns]'),format='%Y-%m-%d %H:%M:%S')
##DataFrame合并
tmp3=pd.DataFrame(tmp2,index=itime3,columns=["t2m"])
##加到总data
long_term=long_term.append(tmp3)
except:
pass
听白老师的课的学习笔记,如有侵权联系速删