Python — стандартное отклонение выбранных строк в каждом столбце

#python #pandas #dataframe #loops

Вопрос:

Я хотел бы рассчитать стандартное отклонение для каждого столбца во фрейме данных, но только для выбранных строк. Я хотел бы отразить эту формулу в Excel (вычисляет стандартное отклонение только для выделенных ячеек и перемещает один индекс вниз по каждому столбцу).

из таблицы в excel

Не могли бы вы, пожалуйста, посоветовать мне, как я должен построить свой цикл, чтобы сделать это? Спасибо.

Комментарии:

1. Вам нужно лучше объяснить свою проблему и опубликовать код, который вы пробовали до сих пор

Ответ №1:

Для этого я бы использовал numpy:

пример ввода:

 >>> df = pd.DataFrame(np.arange(50).reshape(10,5,order='F')).add_prefix('m')
>>> df
   m0  m1  m2  m3  m4
0   0  10  20  30  40
1   1  11  21  31  41
2   2  12  22  32  42
3   3  13  23  33  43
4   4  14  24  34  44
5   5  15  25  35  45
6   6  16  26  36  46
7   7  17  27  37  47
8   8  18  28  38  48
9   9  19  29  39  49
 

вывод (здесь используется 5 строк):

 >>> pd.Series(np.c_[[np.diagonal(df.values, offset=-i) for i in range(5)]].std(axis=0), index=df.columns)
m0    1.414214
m1    1.414214
m2    1.414214
m3    1.414214
m4    1.414214
 

Это работает путем создания промежуточного массива:

 >>> np.c_[[np.diagonal(df.values, offset=-i) for i in range(5)]]
array([[ 0, 11, 22, 33, 44],
       [ 1, 12, 23, 34, 45],
       [ 2, 13, 24, 35, 46],
       [ 3, 14, 25, 36, 47],
       [ 4, 15, 26, 37, 48]])
 

импорт:

 import pandas as pd
import numpy as np