Dask groupby по фьючерсам - PullRequest
       5

Dask groupby по фьючерсам

0 голосов
/ 10 января 2020

Я разбросал данные по кластеру и отправил задачу. Как мне подождать, пока все фьючерсы не закончатся, и сделать групповку на фьючерсах. я не хочу собирать все фьючерсы обратно клиенту, так как они большие. Я хочу, чтобы все большие фьючерсы оставались в кластере и возвращали результат из группы в клиент. Я попробовал pandas групповой синтаксис на фьючерсах, но он говорит, что это не метод на фьючерсах. Я смотрю на использование submit, но не могу понять синтаксис.

Спасибо

def repeat (df, number):
    df=pd.DataFrame(np.repeat(df.values,number,axis=0))
    return df

data = pd.DataFrame(np.random.random_sample((100,), columns=["test"])
data = client.scatter(data)
futures = client.submit(repeat, data, 1000)
data = client.gather(futures)

Пока это нормально. Но теперь я хочу, чтобы результаты остались на рабочих местах и ​​выполняли следующие операции: pandas:

data["ids"] = data.groupby(["test"]).cumcount()
total = data.groupby(["test"]).sum()
P10 = data.groupby(["test"]).quantile(0.1)

Я хотел бы сделать это, потому что данные в Dataframe очень велики и подходят только для нескольких работников. Все, что я хотел вернуть, - это совокупность данных (т. Е. Groupby)

Благодаря столбцу EDIT id является счетчик сгруппированного тестового столбца. В основном я хотел бы сделать симуляцию Монте-Карло на нескольких точках. Начальный df содержит строку, соответствующую каждой точке. Затем он отправляется в dask, каждая строка умножается в 1000 раз, чтобы смоделировать 1000 испытаний моделирования. Идентификаторы должны отслеживать номер испытания (1000 из них), и позже я могу сгруппировать их по идентификатору, чтобы получить совокупные результаты для каждого испытания по всем точкам вместе. На данный момент пример кода показывает групповой тест, который является совокупностью для каждой строки (точки данных). т.е. среднее значение и P10 для каждой точки в этой 1000 испытаний

...