Как распараллелить групповую работу в Python? - PullRequest
1 голос
/ 17 октября 2019

У меня есть исходный размер кадра 4779657 (rows) and 26(columns).

Пожалуйста, найдите код для примера кадра данных

df = pd.DataFrame({
'subject_id':[1,1,1,1,2,2,2,2,3,3,4,4,4,4,4],
'readings' : ['READ_1','READ_2','READ_1','READ_3','READ_1','READ_5','READ_6','READ_8','READ_10','READ_12','READ_11','READ_14','READ_09','READ_08','READ_07'],
'val' :[5,6,7,11,5,7,16,12,13,56,32,13,45,43,46],
})

Пример кадра данных выглядит так, как показано ниже

enter image description here

Я хотел бы выполнить следующую операцию (от длинной до широкой). Из 26 столбцов (в реальных данных) я пытаюсь использовать предложение 3 columns in groupby. спасибо @jezrael за помощь в достижении этого уровня

df1 = (df.groupby(['subject_id','readings'])['val']
    .describe()
    .unstack()
    .swaplevel(0,1,axis=1)
    .reindex(df['readings'].unique(), axis=1, level=0))
df1.columns = df1.columns.map('_'.join)
df1 = df1.reset_index()

Приведенный выше код выдает результат, подобный показанному ниже, который соответствует моему ожидаемому результату. Единственная проблема - производительность на большом наборе данных

enter image description here

Прошло более получаса, и код все еще выполняется. Моя системная информация 8 GB installed RAM и процессор Intel Core i5-2500 CPU@3.30 GHZ, если вы знаете, что это может помочь в любом случае

Можете ли вы помочь мне сделать этот код эффективным?

...