python - 在计算数据框中包含缺失值的列的平均值期间
问题描述
让我们举个例子。假设我们有一个列名为“f1”的数据框
f1 : {2, 4, NaN, 1, NaN, 15}
当我们对其应用平均插补时,我们会编写这样的代码
dataframe['f1'].fillna(dataframe['f1'].mean())
所以我的疑问是当它在dataframe['f1'].mean()期间计算 f1 的平均值时,我知道它在求和过程中排除了 NaN 值(在分子中),因为它们不能相加,但我想知道除以值的总数时,它是否可以包含在分母中。
意思是这样计算
mean(f1) = (2+4+1+15)/6(包括 NaN 的值总数)
或者这样
mean(f1) = (2+4+1+15)/4(不包括 NaN 的值总数)
另外,解释一下为什么?提前致谢
解决方案
pd.Series.mean
仅计算非 NaN 值的平均值,因此对于上述数据,均值是(2+4+1+15)/4=5.5
,4 是非 NaN 值的数量,这是计算的默认行为mean
。如果您想使用分母的所有行包含给定系列的平均值,您可以fillna(0)
在调用之前mean()
:
直接调用mean()
:
df['f1'].fillna(df['f1'].mean())
0 2.0
1 4.0
2 5.5 <------
3 1.0
4 5.5 <------
5 15.0
Name: f1, dtype: float64
mean()
之后调用fillna(0)
:
df['f1'].fillna(df['f1'].fillna(0).mean())
0 2.000000
1 4.000000
2 3.666667 <------
3 1.000000
4 3.666667 <------
5 15.000000
Name: f1, dtype: float64
推荐阅读
- c# - 如何正确检查 maskedtextbox 中的实数掩码是否完成?
- docker - Docker 卷数据未保存在本地
- react-native - ListView 已从 ReactNative 中移除
- python - Apache Beam / Dataflow 作业中是否可以有非并行步骤?
- javascript - 如何设置 Atom 编辑器以仅使用 react-native-community eslint-config?
- angularjs - 将 Vue 应用程序集成到 Angular js 应用程序中
- javascript - 使用 Javascript 处理 HTML 和 Swift 之间的交互
- c# - 如何比较两个文本并识别哪些词被添加和哪些被删除
- html - 我想将页脚设置到窗口底部,但它与我的其他 div 重叠?
- mongodb - MongoDB,NodeJs。由于目标机器主动拒绝,无法建立连接。: