首页 > 解决方案 > 在计算数据框中包含缺失值的列的平均值期间

问题描述

让我们举个例子。假设我们有一个列名为“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 的值总数)

另外,解释一下为什么?提前致谢

标签: pythonpandasstatisticsdata-sciencemissing-data

解决方案


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

推荐阅读