爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 2585|回复: 4

[求助] 多个nc文件求逐日平均气温,求大佬指教,有没有更简单的方式

[复制链接]

新浪微博达人勋

发表于 2023-6-14 09:57:20 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
# NC文件,计算月平均值
# 需求: 2021年1-12月逐小时数据,求逐日每日4个时次(2,8,14,20)的平均

import xarray as xr
import netCDF4 as nc
import datetime as dt
import pandas as pd
import numpy as np

timefile = 'E:/xinzheng2021-2022/2021-12(beijingtime).nc'
data = xr.open_dataset(timefile)
data1 = data.Temperature_height_above_ground
# 提取每日4个时次  6,7,8月份提取
datatime = data1.loc[(data.time.dt.hour.isin([2,8,14,20]))&(data.time.dt.month.isin([6,7,8]))]
# 按照月份分组
data = datatime.groupby('time.month')tinydict1 = {
                "mon_6" : list(data)[0][1],
                "mon_7" : list(data)[1][1],
                "mon_8" : list(data)[2][1]
}
file_new=[]
i=5
for key, value in tinydict1.items():
    i=i+1
    print(i)
    tsc = value.groupby('time.day').mean(dim="time")
    lat = tsc.lat
    lon = tsc.lon
    sttime = "2021" + "/" + str(i) + "/" +"1"
    print(sttime)
    time = pd.date_range(sttime, periods=len(tsc.day), freq='D')
    tsc = xr.DataArray(tsc, coords=[time, lat, lon], dims=['time', 'lat', 'lon'])
    file_new.append(tsc)

da = xr.concat(file_new, dim='time')
da.to_netcdf('E:/xinzheng2021-2022/2021-12(beijingtime)-678monthdaymean.nc')


密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2023-6-14 15:06:39 | 显示全部楼层
datatime = data1.loc[(data.time.dt.hour.isin([2,8,14,20]))&(data.time.dt.month.isin([6,7,8]))]
这一步完了,直接datatime .resample(time='D').mean()应该就可以了,如果datatime 是xr.DataArray对象的话
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-6-14 15:08:42 | 显示全部楼层
或者
data1 = data.Temperature_height_above_ground
data2 = data1.sel(time=data.time.dt.hour.isin([2,8,14,20])).sel(time=data.time.dt.month.isin([6,7,8]))
data_mean = data2.resample(time='D).mean()
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-6-14 17:24:58 | 显示全部楼层
多个nc计算日平均或者月平均啥的,真是刚需啊,蹲楼主这儿学习了哈
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2023-6-17 08:37:13 来自手机 | 显示全部楼层
似乎你挑出数据后又新造了一个nc,感觉可以直接使用ds.sel做切片会好很多,后面造nc的步骤可以省略。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表