В научных приложениях и приложениях для анализа данных часто необходимо агрегировать почасовые данные в средние дневные значения. Xarray, мощная библиотека Python для работы с помеченными массивами, предоставляет несколько удобных методов для эффективного расчета средних значений за день на основе почасовых данных. В этой статье мы рассмотрим различные подходы с примерами кода, которые помогут вам эффективно решить эту задачу.
Метод 1: повторная выборка
Один простой метод — использовать функцию resampleв Xarray. Этот метод позволяет указать желаемую временную частоту (например, «D» для ежедневного использования) и функцию агрегирования (например, «среднее» для расчета среднего значения). Вот пример:
import xarray as xr
# Load hourly data into an Xarray Dataset
data = xr.open_dataset('hourly_data.nc')
# Resample hourly data to daily frequency and calculate the mean
daily_data = data.resample(time='D').mean(dim='time')
Метод 2: группировка и индексация по времени.
Другой подход — использовать функцию groupbyв сочетании с индексацией по времени. Этот метод предполагает группировку почасовых данных по дням и последующий расчет среднего значения для каждого дня. Вот пример:
import xarray as xr
# Load hourly data into an Xarray Dataset
data = xr.open_dataset('hourly_data.nc')
# Group data by day and calculate the mean
daily_data = data.groupby('time.day').mean(dim='time')
Метод 3: скользящее окно
Метод скользящего окна предполагает использование скользящего окна из 24 часовых точек данных и расчет среднего значения в каждом окне. Этот подход обеспечивает гибкость при обработке неравномерно расположенных данных. Вот пример:
import xarray as xr
# Load hourly data into an Xarray Dataset
data = xr.open_dataset('hourly_data.nc')
# Calculate rolling mean with a window size of 24
daily_data = data.rolling(time=24, center=True).mean().dropna('time')
Метод 4: пользовательская функция
Если у вас есть особые требования или вам необходимо выполнить дополнительные вычисления в процессе агрегирования, вы можете определить пользовательскую функцию и применить ее к почасовым данным с помощью Xarray apply_ufuncфункция. Вот пример:
import xarray as xr
import numpy as np
# Load hourly data into an Xarray Dataset
data = xr.open_dataset('hourly_data.nc')
# Define custom function for calculating daily average
def daily_average(data):
return np.mean(data)
# Apply custom function to calculate daily average
daily_data = xr.apply_ufunc(daily_average, data, input_core_dims=[['time']], output_core_dims=[[]])
В этой статье мы рассмотрели несколько эффективных методов расчета средних дневных значений на основе почасовых данных с помощью Xarray. Функция resampleобеспечивает простой подход, а groupbyи методы индексации времени, прокручивающегося окна и пользовательские функции обеспечивают гибкость для различных требований к данным. Используя эти методы, вы можете легко анализировать и суммировать почасовые данные в значимые средние значения за день.