【问题标题】:How to deal with missing values in Pandas DataFrame?如何处理 Pandas DataFrame 中的缺失值?
【发布时间】:2019-02-10 16:01:20
【问题描述】:

我有一个包含一些缺失值的 Pandas 数据框。我想用不影响我将对数据进行的统计的东西来填充缺失的值。

例如,如果在 Excel 中尝试对包含 5 的单元格和一个空单元格进行平均,则平均值将为 5。我希望在 Python 中也有同样的结果。

我尝试用NaN 填充,但是如果我对某个列求和,例如,结果是NaN。 我也尝试用 None 填充,但我得到一个错误,因为我正在对不同的数据类型求和。

有人可以帮忙吗?先感谢您。

【问题讨论】:

  • 你可以做dataframe.fillna(0)。
  • 那会影响平均值,dropna()会更好

标签: python python-3.x pandas dataframe missing-data


【解决方案1】:

您的两个问题有很多答案。

这是您的第一个解决方案:

如果您希望在 Dataframe 中的 NaN 条目中插入一个不会改变统计信息的特定值,那么我建议您使用该数据的平均值。

例子:

df # your dataframe with NaN values

df.fillna(df.mean(), inplace=True)

第二个问题:

如果您需要检查数据框中的描述性统计信息,并且描述性统计信息不应受到 NaN 值的影响,这里有两种解决方案: 1)

df # your dataframe with NaN values

df.fillna(df.mean(), inplace=True)

df.mean()
df.std()

# or even:

df.describe()

2) 选项 2:

我建议你使用 numpy nan 函数,例如 (numpy.nansum, numpy.nanmean, numpy.nanstd)...

df.apply(numpy.nansum)

df.apply(numpy.nanstd) #...

【讨论】:

  • 由于某种原因,昨天没有添加评论。顺便说一句,谢谢,这回答了我的问题!
【解决方案2】:

您的问题的答案是缺失值在 Pandas 中的工作方式与在 Excel 中的工作方式不同。您可以阅读here 的技术原因。基本上,没有什么神奇的数字可以用来填充 df,这会导致 Pandas 忽略它。根据我们的需要,我们有时会选择填充缺失的值,有时会删除它们(永久或在计算期间),或者有时使用可以处理它们的方法(例如numpy.nansum,如 Philipe Riskalla Leal 提到)。

【讨论】:

    【解决方案3】:

    您可以使用 df.fillna()。下面是一个示例,说明您可以如何做到这一点。

    import pandas as pd
    import numpy as np
    df = pd.DataFrame([[np.nan,2,1,np.nan],
                  [2,np.nan,3,4],
                  [4,np.nan,np.nan,3],
                  [np.nan,2,1,np.nan]],columns=list('ABCD'))
    df.fillna(0.0)
    

    通常用 0 之类的值填充值会影响您对数据进行的统计。 因此,请获取数据的平均值,以确保它不会影响您的统计数据。 因此,请改用 df.fillna(df.mean())

    【讨论】:

      【解决方案4】:

      如果您想为任何统计操作更改缺失值填充为“nan”的任何特定列的数据类型,您可以简单地使用下面的代码行,它将该列的所有值转换为数字类型,并且所有缺失值自动替换为“nan”,不会影响您的统计操作。

      df['column_name'] = pd.to_numeric(df['column_name'], errors='coerce')
      

      如果您想对数据框中的所有列执行相同操作,可以使用:

      for i in df.columns:
         df[i] = pd.to_numeric(df[i], errors='coerce')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-17
        • 1970-01-01
        • 1970-01-01
        • 2015-12-22
        相关资源
        最近更新 更多