Как использовать group by description с операцией unstack в python dask? - PullRequest
2 голосов
/ 17 октября 2019

Я пытаюсь использовать функцию describe() and unstack() в dask для получения сводной статистики данных.

Однако я получаю сообщение об ошибке, как показано ниже

import dask.dataframe as dd
df = dd.read_csv('Measurement_table.csv',assume_missing=True)
df.describe().compute() #this works but when I try to use `unstack`, i get an error

На самом деле яя пытаюсь заставить приведенный ниже код Python-панд работать быстрее с помощью dask

df.groupby(['person_id','measurement_concept_id','visit_occurrence_id'])['value_as_number']
    .describe()
    .unstack()
    .swaplevel(0,1,axis=1)
    .reindex(df['readings'].unique(), axis=1, level=0)

Я пытался добавить compute() к каждому выходному каскаду, как показано ниже

df1 = df.groupby(['person_id','measurement_concept_id','visit_occurrence_id'])['value_as_number'].describe().unstack().swaplevel(0,1,axis=1).reindex(df['readings'].unique(), axis=1, level=0).compute()

Я получаюошибка ниже, но same works well in pandas

enter image description here

Может кто-нибудь помочь мне решить эту проблему?

1 Ответ

2 голосов
/ 17 октября 2019

В сумме unstack не реализовано, но describe возможно использовать с apply:

df = (sd.groupby(['subject_id','readings'])['val']
        .apply(lambda x: x.describe())
        .reset_index()
        .rename(columns={'level_2':'func'})
        .compute()
        )
print (df)
    subject_id readings   func        val
0            1   READ_1  count   2.000000
1            1   READ_1   mean   6.000000
2            1   READ_1    std   1.414214
3            1   READ_1    min   5.000000
4            1   READ_1    25%   5.500000
..         ...      ...    ...        ...
51           4  READ_09    min  45.000000
52           4  READ_09    25%  45.000000
53           4  READ_09    50%  45.000000
54           4  READ_09    75%  45.000000
55           4  READ_09    max  45.000000

[112 rows x 4 columns]
...