Может кто-нибудь объяснить разницу между методами asfreq и resample в pandas? Когда нужно использовать что?
Разница между asfreq и resample
Ответ 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
Что касается того, когда использовать либо: это зависит от проблемы, которую вы имеете в виду... заботиться о том, чтобы поделиться?