首页 > 解决方案 > Python - 每列中所选行的标准偏差

问题描述

我想计算数据框中每一列的标准偏差,但仅限于选定的行。我想从 Excel 中反映这个公式(仅计算突出显示的单元格的标准偏差,并将每列向下移动一个索引)

excel中的公式

你能告诉我我应该如何构建我的循环来做到这一点吗?谢谢你。

标签: pythonpandasdataframeloops

解决方案


我会为此使用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

推荐阅读