如何用平均值填充空值
Posted
技术标签:
【中文标题】如何用平均值填充空值【英文标题】:How to fill null values with mean 【发布时间】:2018-01-16 22:03:32 【问题描述】:我有数据:
print (df)
Sex Age SbSp Parch
0 male 22 1 0
1 female 38 1 0
2 female NAN 0 0
有一些 NAN 值。我想填写平均值。
我确实用过
df1 = df["Age"].fillna(value=df["Age"].mean()
但这并没有影响我的数据集。
什么问题?
【问题讨论】:
欢迎来到 Stack Overflow。请先阅读帮助中心,如何在这个论坛上提出一个好的问题:***.com/help/how-to-ask。这样我们可以更好地理解您的问题,并可以帮助您解决问题。 你是从 csv 读取这个吗? 【参考方案1】:我认为有问题NAN
不是np.nan
值(缺失),而是字符串NAN
s。所以需要replace
然后转换成float
:
df['Age'] = df['Age'].replace('NAN':np.nan).astype(float)
df["Age"] = df["Age"].fillna(value=df["Age"].mean())
另一个更通用的解决方案是通过to_numeric
和errors='coerce'
将非数字转换为NaNs
:
df['Age'] = pd.to_numeric(df['Age'], errors='coerce')
df["Age"] = df["Age"].fillna(value=df["Age"].mean())
print (df)
Sex Age SbSp Parch
0 male 22.0 1 0
1 female 38.0 1 0
2 female 30.0 0 0
如果使用 read_csv 添加参数na_values
将NAN
s 转换为np.nan
:
df = pd.read_csv(file, na_values='NAN')
【讨论】:
如果我这样做我得到这个错误 TypeError: Cannot compare types 'ndarray(dtype=float64)' and 'str' 对不起,我重写了解决方案。 如果我的回答对您有帮助,请不要忘记accept - 点击答案旁边的复选标记 (✓
) 将其从灰色切换为已填充。谢谢。跨度>
以上是关于如何用平均值填充空值的主要内容,如果未能解决你的问题,请参考以下文章