【问题标题】:Dealing with missing value in a column using pandas使用熊猫处理列中的缺失值
【发布时间】:2019-01-02 11:06:05
【问题描述】:

我正在使用 Auto MPG 数据集,该数据集在 horsepower 列/属性中以? 字符的形式包含缺失值。

因此当我使用代码时-

data.isnull.values.any()

或

data["horsepower"].isnull.values.any()

它们都返回False,因为这些代码适用于 NaN 值或空白值。

我如何找到这些包含特殊字符的缺失值,在我的例子中恰好是 ? 而不是传统的 NaN 值。

谢谢!

【问题讨论】:

  • 用NaN 替换? 使用df.horsepower.replace('?',np.NaN, inplace=True) 然后照常进行
  • 如果您从 csv 文件中读取数据,请在 read_csv 中提供 na_values 作为 ?。更多详情请访问pandas.pydata.org/pandas-docs/stable/generated/…
  • @MohamedThasinah 我在发布之前已经验证了我的答案。它正在工作。

标签: python pandas missing-data


【解决方案1】:

在检查NaNs 之前使用replace:

data["horsepower"].replace('?',np.nan).isnull().values.any()

如果DataFrame 是由read_csv 创建的,则添加参数na_values 用于将? 转换为NaNs:

data = pd.read_csv(path, na_values=["?"])
data["horsepower"].isnull().values.any()

【讨论】:

    【解决方案2】:

    您可以将na_values 定义为? 或使用以下内容:

    df.replace(r'[\W]',np.nan,regex=True)
    

    \W 查找任何不是字母、数字或下划线字符的字符。

    【讨论】:

      【解决方案3】:

      您需要先将? 转换为NaN。 之后你就可以去里面找空值了。

      1) 将? 转换为NaN:

      data.replace('?',np.NaN)
      

      2) 查找空值:

      pd.isna(data['horsepower'])
      

      它将返回带有True/False系列的数据框。

      【讨论】:

        猜你喜欢
        • 2020-10-20
        • 2014-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-20
        相关资源
        最近更新 更多