Как рассчитать среднее / среднее / стандартное отклонение нескольких матриц в словаре? - PullRequest
1 голос
/ 13 января 2020

Не могли бы вы дать некоторые решения или предложения по следующей проблеме?

Если у меня есть словарь, который содержит три pandas кадра данных, как мне рассчитать среднее / среднее / стандартное отклонение трех данных в словарь?

df1 = pd.DataFrame(np.random.randint(10, size=(3,4)))
df2 = pd.DataFrame(np.random.randint(10, size=(3,4)))
df3 = pd.DataFrame(np.random.randint(10, size=(3,4)))
df_dict = {'a': df1, 'b': df2, 'c':df3}

(выходная матрица все еще должна быть матрицей 3x4)

(df1+df2+df3)/3
          0         1         2         3
0  5.666667  5.000000  3.333333  3.000000
1  4.000000  1.666667  6.666667  4.333333
2  3.000000  3.666667  4.666667  4.333333

Поскольку у меня есть словарь, содержащий в действительности более 50 кадров данных, эффективный подход приветствуется. Надеюсь, не просто l oop.

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 13 января 2020

IIU C, попробуйте:

(pd.concat(df_dict).groupby(level=1)
                   .agg(['mean','median','std'])
                   .swaplevel(0,1, axis=1)
                   .sort_index(level=0, axis=1))

Вывод:

       mean                               median                std                              
          0         1         2         3      0  1  2  3         0         1         2         3
0  5.333333  4.333333  8.666667  4.666667      4  5  9  4  2.309401  2.081666  0.577350  4.041452
1  3.333333  5.666667  3.333333  4.666667      3  5  3  4  0.577350  1.154701  3.511885  2.081666
2  4.333333  2.000000  2.666667  8.333333      4  1  2  8  3.511885  2.645751  2.081666  0.577350
1 голос
/ 13 января 2020

Попробуйте:

(pd.DataFrame({k:v.stack() for k,v in df_dict.items()} )
   .T.agg(['mean','std','median'])
   .T.unstack()
)
...