我目前正在分析从NetCDF文件中提取的一些降雨数据,提取数据后,我生成了一个时间序列,显示从 1979-2020
年期间每小时最大降雨量:
import glob
import numpy as np
from netCDF4 import Dataset
import pandas as pd
import xarray as xr
all_years = []
for file in glob.glob('*.nc'):
#print(file)
data = Dataset(file, 'r')
time = data.variables['time']
year = time.units[11:16]
all_years.append(year)
year_start = '01-01-1979'
year_end = '31-12-2021'
date_range = pd.date_range(start = str(year_start),
end = str(year_end),
freq = 'H')
df = pd.DataFrame(0.0,columns = ['tp'], index = date_range)
lat_freetown = 8.4657
lon_freetown = 13.2317
all_years.sort()
for yr in range(1979,2021):
data = Dataset('era5_year' + str(yr)+ '.nc', 'r')
lat = data.variables['latitude'][:]
lon = data.variables['longitude'][:]
sq_diff_lat = (lat - lat_freetown)**2
sq_diff_lon = (lon - lon_freetown)**2
min_index_lat = sq_diff_lat.argmin()
min_index_lon = sq_diff_lon.argmin()
tp = data.variables['tp']
start = str(yr) + '-01-01'
end = str(yr) + '-12-31'
d_range = pd.date_range(start = start,
end = end,
freq = 'H')
for t_index in np.arange(0, len(d_range)):
print('Recording the value for: ' + str(d_range[t_index])+str(tp[t_index, min_index_lat, min_index_lon]))
df.loc[d_range[t_index]]['tp'] = tp[t_index, min_index_lat, min_index_lon]
daily = df.resample('D').max()`
现在,我需要分析这个持续2小时的系列数据。我认为我可以再次使用"2H"来重新采样:
df.resample('2H').max()
但是我需要以滑动比例的方式分析数据,例如:
- 从下午1点到下午3点的数据
- 从下午2点到下午4点的数据
- 从下午3点到下午5点的数据 ......等等
如果任何人知道我可以以这种方式分析我的时间序列,在2小时间隔内分析中间的时间,那么任何帮助都将不胜感激!
rolling
而不是resample
。 - Vishnudev Krishnadas