Как рассчитать среднее значение для каждой ячейки в матрице, если каждая ячейка содержит список с этими значениями - PullRequest
0 голосов
/ 08 февраля 2020

У меня есть фрейм данных размером 20x20 (типа pandas .core.frame.DataFrame). Каждая из 400 ячеек в кадре данных содержит LIST со значениями. Я хочу рассчитать среднее значение для каждого списка (ячейки) отдельно. Фрейм данных выглядит следующим образом:

      x          y       z ...
x [1,2,4,3] [1,2,4,3] [1,2,4,3]

y [8,2,6,4] [1,2,4,3] [1,2,4,3]

z [1,2,4,9] [1,2,4,3] [1,2,4,3]
.
.
.

И я хочу получить такой результат:

    x    y   z ...                       x     y    z ...
x [10] [10] [10]                       x 10    10   10
                                       y 20    10   10
y [20] [10] [10]       or this:        z 16    10   10
                                       .
z [16] [10] [10]                       .
.                                      .
.

Мой вопрос заключается в том, как рассчитать среднее значение для каждой ячейки / списка со значениями в матрица?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2020

Вот способ использования applymap для применения функции к каждой ячейке кадра данных:

import numpy as np

dfmean = df.applymap(np.mean)
print(dfmean)

   col1  col2  col3
0   2.5   2.5   2.5

Пример данных

df = pd.DataFrame({'col1': [[1,2,4,3]], 'col2': [[1,2,4,3]],  'col3': [[1,2,4,3]]})
0 голосов
/ 08 февраля 2020

Под матрицей, если вы подразумеваете pandas DataFrame, и под ячейками 400, я предполагаю, что вы имеете в виду 400 столбцов и строк (или один из них). В pandas (python) вы можете вычислить среднее значение следующим образом:

dataframe['x'] = dataframe['x'].apply(lambda x: sum(x)/len(x)) 

Здесь .apply () позволяет применять функцию ко всему столбцу или фрейму данных, лямбда позволяет перебирать каждую строку. значение x является ячейкой (списком), в которой вы можете использовать python функции, такие как sum () и len () для вычисления среднего / среднего.

Есть несколько других способов тоже, но дайте мне знать, если это поможет.

ОБНОВЛЕНИЕ ДЛЯ ВСЕХ КОЛОНН:

Быстрый способ сделать это для всех ваших столбцов в фрейме данных: :

for column in dataframe.columns:
    dataframe[column] = dataframe[column].apply(lambda x: sum(x)/len(x))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...