NOAA气象数据整理-各站点年月均降水量(2000-2022年)

原始数据包括各站点逐日数据、全球站点数据

NOAA气象数据整理-各站点年月均降水量(2000-2022年)_第1张图片

1.获取国内站点历史数据(1333)

NOAA气象数据整理-各站点年月均降水量(2000-2022年)_第2张图片

2.清洗数据-筛选出6h雨水监测数据

import pandas as pd
import numpy as np
import os

columns=['year','month','day','hour','air_temperature',
                          'dew_point_temperature','sea_level_pressure','wind_direction',
                          'wind_speed_rate','sky_coverage','rain_1h','rain_6h']
file_name=[]

#遍历文件夹保存文件名
for i in os.listdir('data/2021'):    #根据文件夹修改时间即可
    file_name.append(i)

rain_site=pd.DataFrame(columns=['site','rain']) 
#遍历文件读取数for f in file_name:
for f in file_name:
    name=f[:6]      #将站点编号保存
    data=pd.read_csv(f'data/2021/{f}',header=None)    # #根据文件夹修改时间即可

    col=pd.DataFrame(columns=columns)
    for i in range(len(data)):
        row=data.loc[i,0]
        all=pd.DataFrame(row.split()).T
        all.columns=columns
        col=pd.concat([col,all])

    rain=col[['year','month','day','rain_6h']]
    rain=rain.astype(float)
    rain=rain.reset_index()
    rain=rain[['year','month','day','rain_6h']]

    #将合并后的数据-9999转化为空值并舍弃
    for j in range(len(rain)):
        if rain.loc[j,'rain_6h']== -9999.0:
            rain.loc[j,'rain_6h']=None

    final=rain.dropna()
    month=pd.DataFrame(final.groupby(['month']).sum())    #计算每月的降水总量
    value=month['rain_6h'].mean()

    #将name和value值保存在字典中
    rain_site_example=pd.DataFrame({'site': [name],'rain': [value]})
    #保存数据
    rain_site=pd.concat([rain_site,rain_site_example])
    print(rain_site)
rain_site.to_csv('rain_site.csv')

3.将筛选后的站点与国内站点历史数据匹配

这一步是将含有数据的坐标拼接,并在地图上可视化

(提供的数据是WGS1984坐标系下的,地图底图是CGCS2000,为了方便转换,因此筛选数据的时候将高程值加入,这样在ArcMap中可以直接重新定义投影)

import pandas as pd

year=[2015,2016,2017,2018,2019,2020,2021]
for y in year:
    rain_site=pd.read_csv(f'{y}_rain.csv')
    site_code=pd.read_csv('data/china_site.csv')
    rain_site.columns=['miss','USAF','rain']
    sum=pd.merge(rain_site,site_code)
    file=sum.dropna()
    file=file[['LAT','LON','rain','ELEV(M)']]
    file['Year']=2015
    file=file.set_index('Year')
    file.to_csv(f'china_{y}.csv')
NOAA气象数据整理-各站点年月均降水量(2000-2022年)_第3张图片

4.利用Kriging插值获得2015年全国范围内的年月均降水数

2015年全国的年月均降水量自东南向西北有一个明显的降低趋势

NOAA气象数据整理-各站点年月均降水量(2000-2022年)_第4张图片

你可能感兴趣的:(pandas,python,数据分析)