如何使用.count()函数计算Pandas中Y列的样本方差?
Pandas计算Y列样本方差问题解决
问题场景
正在完成Pandas相关作业,需要计算数据中Y列的样本方差(公式:平方差之和除以样本元素数量减一),要求使用dframe.count()方法辅助实现。
现有代码如下:
import pandas as pd datafile='/Users/austinite/Desktop/Assignment1Data.csv' frame = pd.read_csv(datafile) yMean = frame['Y'].mean() frame['Diff'] = frame['Y'] - yMean frame['DiffSqr'] = frame['Diff'].pow(2) sumSqrDiff = frame['DiffSqr'].sum() sampleVariance = sumSqrDiff / (frame.count(axis='columns') - 1)
遇到的问题:
- 执行后返回300个相同值的列表,不符合预期
- 尝试使用
axis='Y'时提示Y未定义;改用axis='columns'虽能运行,但结果错误
错误原因
frame.count(axis='columns')是按行统计每行的非空值数量,返回的是一个与数据行数等长的Series。用平方差总和除以这个Series时,会对每个行的计数做除法,最终得到列表而非单个样本方差值。我们需要的是Y列的有效样本总数,而非每行的非空值数。
修正方案
单独统计Y列的有效样本数量,再代入公式计算:
n = frame['Y'].count() sampleVariance = sumSqrDiff / (n - 1)
这样就能得到单个正确的样本方差数值。
内容的提问来源于stack exchange,提问作者Austinite
相关产品推荐
相关产品推荐

