Подтвердить что ты не робот

Разница между asfreq и resample

Может кто-нибудь объяснить разницу между методами asfreq и resample в pandas? Когда нужно использовать что?

4b9b3361

Ответ 1

resample более общий, чем asfreq. Например, используя resample, я могу передать произвольную функцию для выполнения binning над объектом Series или DataFrame в ящиках произвольного размера. asfreq - это сжатый способ изменения частоты объекта DatetimeIndex. Он также обеспечивает функциональность дополнений.

Как говорится в документации pandas, asfreq - это тонкая оболочка вокруг вызова date_range + вызова reindex. См. здесь для примера.

Примером resample, который я использую в своей повседневной работе, является вычисление числа спайков нейрона в 1-секундных бункерах путем передискретизации большого булевого массива, где True означает "всплеск" и False означает "нет" Спайк". Я могу сделать это так же просто, как large_bool.resample('S', how='sum'). Вид аккуратный!

asfreq может использоваться, если вы хотите изменить DatetimeIndex на другую частоту, сохраняя при этом те же значения в текущем индексе.

Здесь пример, где они эквивалентны:

In [6]: dr = date_range('1/1/2010', periods=3, freq=3 * datetools.bday)

In [7]: raw = randn(3)

In [8]: ts = Series(raw, index=dr)

In [9]: ts
Out[9]:
2010-01-01   -1.948
2010-01-06    0.112
2010-01-11   -0.117
Freq: 3B, dtype: float64

In [10]: ts.asfreq(datetools.BDay())
Out[10]:
2010-01-01   -1.948
2010-01-04      NaN
2010-01-05      NaN
2010-01-06    0.112
2010-01-07      NaN
2010-01-08      NaN
2010-01-11   -0.117
Freq: B, dtype: float64

In [11]: ts.resample(datetools.BDay())
Out[11]:
2010-01-01   -1.948
2010-01-04      NaN
2010-01-05      NaN
2010-01-06    0.112
2010-01-07      NaN
2010-01-08      NaN
2010-01-11   -0.117
Freq: B, dtype: float64

Что касается того, когда использовать либо: это зависит от проблемы, которую вы имеете в виду... заботиться о том, чтобы поделиться?