如何计算DataFrame中salary列各向量的标准差
计算DataFrame中salary列每个向量的标准差
给定如下DataFrame:
| 部门名称 | salary |
|---|---|
| 销售部 | [30, 36] |
| 财务部 | [10, 98] |
| 市场部 | [20, 22] |
| 信息技术部 | [40, 90] |
解决方案
用pandas结合numpy即可实现,核心是通过apply方法对salary列的每个列表单独计算标准差:
- 导入依赖库:
import pandas as pd import numpy as np
- 构造示例DataFrame:
df = pd.DataFrame({ "部门名称": ["销售部", "财务部", "市场部", "信息技术部"], "salary": [[30, 36], [10, 98], [20, 22], [40, 90]] })
- 计算标准差:
# 计算总体标准差(分母为样本数量n,默认ddof=0) df["salary_std"] = df["salary"].apply(lambda x: np.std(x)) # 若需计算样本标准差(分母为n-1),修改参数: # df["salary_std"] = df["salary"].apply(lambda x: np.std(x, ddof=1))
- 最终结果示例:
执行后DataFrame会新增标准差列,具体数值如下:
| 部门名称 | salary | 总体标准差 | 样本标准差 |
|---|---|---|---|
| 销售部 | [30, 36] | 3.0 | 4.2426 |
| 财务部 | [10, 98] | 44.0 | 62.2254 |
| 市场部 | [20, 22] | 1.0 | 1.4142 |
| 信息技术部 | [40, 90] | 25.0 | 35.3553 |
说明
np.std()默认计算总体标准差,如果是抽样数据需要用ddof=1切换为样本标准差- 也可以用
statistics.stdev()直接计算样本标准差,但numpy在批量处理时效率更高
内容的提问来源于stack exchange,提问作者Khalil Fall
相关产品推荐
相关产品推荐

