【问题标题】:what will be the mean of a column if there are missing values in the column?如果列中存在缺失值,该列的平均值是多少?
【发布时间】:2021-11-19 21:06:37
【问题描述】:

示例数据

ID Name Phone
1 x +212
2 y NaN
3 xy NaN

df 是数据集的名称 下面的代码给出了没有缺失值的列的名称。

no_nulls = set(df.columns[df.isnull().mean()==0])

isnull() 会将数据集转换成这样的东西

ID Name Phone
False False False
False False True
False False True

有人可以解释均值如何作用于非整数吗?

我用过这个,它有效,但我对平均值很好奇

no_nulls = set(df.columns[df.notnull().all()]) 

【问题讨论】:

    标签: python pandas dataframe statistics data-science


    【解决方案1】:

    您的情况,.mean() 正在处理一个布尔值的数据帧,其中只有 TrueFalse 值。在这种情况下,.mean()False 视为 0 并将 True 视为 1。因此,如果您查看df.isnull().mean() 的结果,您将看到:

    df.isnull().mean()
    
    ID       0.000000
    Name     0.000000
    Phone    0.666667
    dtype: float64
    

    在这里,由于列 IDName 具有所有 False 值,.mean() 会将所有值视为零并获得零平均值。对于列Phone,您有一个False 和2 个True,因此,平均值相当于取0、1、1 的平均值,即0.666667

    因此,当您检查 df.isnull().mean()==0 时,只有前 2 列将是 True,因此,{'ID', 'Name'} 的结果是 no_nulls

    参考official document of DataFrame.mean,您将从参数numeric_only= 中得到一些提示,并注意其默认设置下的默认行为:

    参数

    numeric_only 布尔型,默认无

    仅包括 float、int、boolean 列。 如果没有,将尝试使用所有内容,然后仅使用 数字数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-15
      • 2016-04-05
      • 2018-07-12
      • 2019-12-15
      • 1970-01-01
      • 2020-06-07
      • 2016-04-16
      相关资源
      最近更新 更多