#python #pandas #dataframe #loops
Вопрос:
Я хотел бы рассчитать стандартное отклонение для каждого столбца во фрейме данных, но только для выбранных строк. Я хотел бы отразить эту формулу в 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