У меня есть фрейм данных, и я хочу groupby
некоторых атрибутов и вычислить среднее значение rolling
для числового столбца в Dask.Я знаю, что в Dask нет реализации для groupby rolling
, но я прочитал вопрос SO, который показывает, что это возможно.
Функция прокрутки Dask по групповому синтаксису
Когда яЯ использую тот же синтаксис из поста, я получаю сообщение об ошибке:
UnpicklingError: invalid load key, '�'.
Я не понимаю, почему я получаю ошибку удаления.Может кто-нибудь помочь мне сделать эту работу?
df.groupby(by=path)[metric].apply(lambda df_g: df_g[metric].rolling(5).mean(), meta=(metric, 'f8')).compute()
, где path
- список столбцов атрибутов, а metric
- числовой столбец.
Я также попробовал следующее:
def moving_avg(partition):
return partition.rolling(5).mean()
df.groupby(by=path)[metric].apply(moving_avg, meta='f8').compute()
Я использую функцию скользящего среднего в Pyspark, где я определяю разделы по группам, а затем накидываю на них окно.
Пример данных:
CATEGORY_NAME MKT ... Growth Sales
Date ...
2017-01-07 TP SIMS ... 0.0000 17280
2017-01-07 TP TOPRITE ... -0.4566 1825
2017-01-07 TP GIANT HYPER ... 0.0874 18417
2017-01-07 TP GIANT HYPER ... -0.1359 10914
2017-01-07 TP GIANT HYPER ... 0.2245 4422
2017-01-07 TP TOPRITE ... 0.1084 1444
2017-01-07 TP GIANT HYPER ... 0.0542 18412
2017-01-07 TP FENCER ... 0.2766 25184
2017-01-07 TP GIANT HYPER ... -0.0572 19466
2017-01-07 TP TOPRITE ... 0.1795 1503
2017-01-07 TP GIANT HYPER ... 0.0770 13615
СкажитеЯ хочу сгруппировать ["CATEGORY_NAME", "MKT"]
и взять скользящее среднее Sales
.