Python 如何加快xarray重采样(比pandas重采样慢得多)
这里是一个MWE,用于在Python 如何加快xarray重采样(比pandas重采样慢得多),python,pandas,python-xarray,Python,Pandas,Python Xarray,这里是一个MWE,用于在xarray与pandas中对时间序列进行重新采样。10Min重采样在xarray中需要6.8秒,在pandas中需要0.003秒。有没有办法让大熊猫在沙雷加速?熊猫的重采样似乎与周期无关,而沙雷则随周期而变化 将numpy导入为np 将xarray作为xr导入 作为pd进口熊猫 导入时间 def制造商(频率): 尺寸=100000 时间=局部放电日期范围('2000-01-01',周期=大小,频率=频率) ds=xr.Dataset({ “foo”:xr.DataArr
xarray
与pandas
中对时间序列进行重新采样。10Min
重采样在xarray
中需要6.8秒,在pandas
中需要0.003秒。有没有办法让大熊猫在沙雷加速?熊猫的重采样似乎与周期无关,而沙雷则随周期而变化
将numpy导入为np
将xarray作为xr导入
作为pd进口熊猫
导入时间
def制造商(频率):
尺寸=100000
时间=局部放电日期范围('2000-01-01',周期=大小,频率=频率)
ds=xr.Dataset({
“foo”:xr.DataArray(
数据=np.随机。随机(大小),
dims=[“时间”],
coords={'time':times}
)})
返回ds
对于f in[“1s”、“1Min”、“10Min”]:
ds=制造(f)
开始=时间。时间()
ds_r=ds.resample({'time':“1H”}).mean()
打印(f,'xr',str(time.time()-start))
开始=时间。时间()
ds_r=ds.to_dataframe().重采样(“1H”).平均值()
打印(f,'pd',str(time.time()-start))
根据
xarray
这是一个实施问题。解决方案是在其他代码中进行重采样(实际上是GroupBy
)。我的解决方案是使用快速熊猫重采样,然后重建xarray数据集:
df_h = ds.to_dataframe().resample("1H").mean() # what we want (quickly), but in Pandas form
vals = [xr.DataArray(data=df_h[c], dims=['time'], coords={'time':df_h.index}, attrs=ds[c].attrs) for c in df_h.columns]
ds_h = xr.Dataset(dict(zip(df_h.columns,vals)), attrs=ds.attrs)
目前,还将xarray作为bug提交:
df_h = ds.to_dataframe().resample("1H").mean() # what we want (quickly), but in Pandas form
vals = [xr.DataArray(data=df_h[c], dims=['time'], coords={'time':df_h.index}, attrs=ds[c].attrs) for c in df_h.columns]
ds_h = xr.Dataset(dict(zip(df_h.columns,vals)), attrs=ds.attrs)