You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中对预统计DataFrame计算均值与标准差?

计算预统计评分数据的均值与标准差

你的DataFrame以评分作为列名,对应选择该评分的人数作为值,这种结构需要用加权统计的方式计算均值和标准差,以下是具体实现方法:

方法一:先转换数据格式(更直观)

先把宽格式的原始数据重塑为「评分-人数」的长格式,便于理解和计算:

import pandas as pd

# 原始预统计数据
df = pd.DataFrame({1:4, 2:10, 3:125, 4:85, 5:25})
# 转换为长格式
df_long = df.T.reset_index()
df_long.columns = ['评分', '人数']

转换后的数据结构:

评分人数
14
210
3125
485
525

计算加权均值

完全匹配你手动计算的逻辑:

mean = (df_long['评分'] * df_long['人数']).sum() / df_long['人数'].sum()
print(f"均值:{mean:.2f}")  # 输出:3.47

计算加权标准差

先计算加权方差,再取平方根:

# 加权方差
variance = (df_long['人数'] * (df_long['评分'] - mean)**2).sum() / df_long['人数'].sum()
# 标准差
std_dev = variance ** 0.5
print(f"标准差:{std_dev:.4f}")  # 输出:0.7354

方法二:直接基于原始数据计算(更简洁)

无需转换格式,直接提取评分和对应人数计算:

import pandas as pd

df = pd.DataFrame({1:4, 2:10, 3:125, 4:85, 5:25})
# 提取评分(转换为整数)和人数
scores = df.columns.astype(int)
counts = df.iloc[0].values

# 计算均值
mean = (scores * counts).sum() / counts.sum()
# 计算标准差
variance = (counts * (scores - mean)**2).sum() / counts.sum()
std_dev = variance ** 0.5

print(f"均值:{mean:.2f}")
print(f"标准差:{std_dev:.4f}")

内容的提问来源于stack exchange,提问作者MatMorPau22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:40:57