气象数据处理

气象数据处理

一、获取气象数据网站

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

听白老师的课的学习笔记,如有侵权联系速删

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值