【问题标题】:Python - isnull().sum() vs isnull().count()Python - isnull().sum() 与 isnull().count()
【发布时间】:2020-02-16 15:01:10
【问题描述】:

所以我目前正在完成有关泰坦尼克数据集 (https://www.kaggle.com/c/titanic/data) 的教程。 现在我正在尝试一些可能相关的新事物。

它的信息是: 891 个条目(红色星号),以及 具有 NaN 值的列(蓝色短划线)


当我去查找缺失值的小摘要时,我被.sum().count() 弄糊涂了:

在上面的代码中,.sum() 每出现一个空值就加一。因此,输出似乎是数据框中每列缺少多少条目的值。 (这是我想要的)


然而如果我们使用.count(),无论我们使用.isnull().count() 还是.notnull().count(),每列都会得到891。

所以我的问题是:

.count() 在这种情况下是什么意思?

我认为它会计算所需方法的每个实例(在这种情况下,每个实例都是 null 或非 null 条目;基本上是 .sum() 所做的)。

还有;我对如何使用.sum() 的“定义”,对吗?

【问题讨论】:

标签: python null nan notnull


【解决方案1】:

data.isnull().count() 返回总行数,与缺失值无关。您需要使用data.isnull().sum()

【讨论】:

    【解决方案2】:

    只要把train_df.isnull()的数据打印出来,就可以看到了。

    # data analysis and wrangling
    import pandas as pd
    import numpy as np
    
    # visualization
    import seaborn as sns
    import matplotlib.pyplot as plt
    %matplotlib inline
    
    train_df = pd.read_csv('train.csv')
    print(train_df.isnull())
    

    结果:

        PassengerId  Survived  Pclass   Name    Sex    Age  SibSp  Parch  Ticket  \
        0          False     False   False  False  False  False  False  False   False   
        1          False     False   False  False  False  False  False  False   False   
        2          False     False   False  False  False  False  False  False   False   
        3          False     False   False  False  False  False  False  False   False   
        4          False     False   False  False  False  False  False  False   False   
        ..           ...       ...     ...    ...    ...    ...    ...    ...     ...   
        886        False     False   False  False  False  False  False  False   False   
        887        False     False   False  False  False  False  False  False   False   
        888        False     False   False  False  False   True  False  False   False   
        889        False     False   False  False  False  False  False  False   False   
        890        False     False   False  False  False  False  False  False   False 
    

    它有 891 行,全是真假。

    1. 当你使用sum()时,它会返回每一列的和,将trues(=1)和false(=0)相加。像这样
    print(False+False+True+True)
    
        2
    
    1. 当您使用 count() 时,它只返回 行数

    当然,无论使用 .isnull().count() 还是 .notnull().count(),每列都会得到 891。

    【讨论】:

      猜你喜欢
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 2017-12-04
      • 2010-12-26
      • 1970-01-01
      相关资源
      最近更新 更多