python批量将多年降水的nc数据处理为季节性平均降水量或年降水量

 本代码目的:

1.批量读取nc降水数据集。

2.按照季节平均来粗略绘制降水量图。

3.保存所有处理后的数据集,以备下次精细化绘图。

原始数据请见美国2013-2021年每日降水的nc数据集资源-优快云文库

 

##1.导入需要的库和函数
import xarray as xr
import os
from netCDF4 import Dataset

##2.指定文件路径,实现批量读取满足条件的文件.(批量读取多个nc文件)
path = r"D:/baseCode/raw/"
#file = os.listdir(path)
#print(file)   #输出nc文件列表

##3.创建一个空的数据集来存储结果
result = xr.DataArray()

##4.遍历文件夹下的nc文件
for root_dir, sub_dir, files in os.walk(path):
    for file in files:
        if file.endswith('.nc'):                    
            file_name=os.path.join(root_dir, file)                    
            #print(file_name)    #读取nc文件路径   
            
            ##5.通过xarray读取nc数据                  
            f1=xr.open_dataset(file_name)                
            #print(f1)
            #print(f1.dims)         #返回一个字典类型。维度包括time,lat,lon。              
            #print(f1.variables)    #查看nc文件中的变量。
            dims =['time', 'lat', 'lon']
            #for dim in dims:
                #print('%s:%s' %(dim, f1.dims[dim]))
                
            ##6.读取nc数据中的经纬度和时间以及其他变量
            lat=f1.variables['lat'][:]             
            lon=f1.variables['lon'][:]            
            time=f1.variables['time'][:]
            
            
            #print(time.attrs)
            #print(time[90:270])
            precip=f1['precip']
            
            ##7.计算年降水量
            f1_season_sum = precip.groupby('time.year').sum(dim='time')
            print(type(f1_season_sum))
            #print(f1_season_sum)
            
            ##8.计算季节性降水平均值
            f1_season_mean = precip.groupby('time.season').mean(dim='time')
            
            #绘制并导出季节性平均降水量图。
            #f1_season_mean.plot(col='season')
            #plt.savefig(path+'season_figure.png', dpi=300)
            
            
            ##9.将计算结果添加到结果数据集中
            result = xr.concat([result, f1_season_sum], dim='file')

#print(result)   #查阅合并的数据集。


##10.将结果数据导出到path路径下。
result.to_netcdf(path+'f1_season_sum_eachyear.nc')

【资源介绍】 课程大作业基于Python爬取各省降水量数据及可视化分析源码+项目说明+超详细注释. 因为相关课程的缘故,需要在1个月内速成python,故选取了python最常用的爬虫作为实操训练 同时,还添加了可视化和GUI入门的内容使爬取的内容应用更丰富 在具体数据的选取上,我爬取的是各省份降水量实时数据 ###### *话不多说,开始实操* ### 正文 1. 爬取数据 - 使用python爬虫,爬取中国天气网各省份24时整点气象数据 - 由于降水量为动态数据,以js形式进行存储,故采用selenium方法经xpath爬取数据 ps:在进行数据爬取时,最初使用的方法是漂亮汤法(beautifulsoup)法,但当输出爬取的内容(<class = split>时,却空空如也。在源代码界面Ctrl+Shift+F搜索后也无法找到降水量,后查询得知此为动态数据,无法用该方法进行爬取 - 使用循环和分类的方式爬取省份不同、网址相似的降水量数据,顺带记录数据对应的城市 - f—string: ```python url_a= f'http://www.weather.com.cn/weather1dn/101{a}0101.shtml' ``` *f-string 用大括号 {} 表示被替换字段,其中直接填入替换内容* - 将城市和降水量相对应后存入字典再打印 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,也适用于小白学习入门进阶。当然也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,者热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载,沟通交流,互相学习,共同进步!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值