当前位置: 首页 > 知识库问答 >
问题:

如何计算python中每列中缺少的数据?

侯英达
2023-03-14

我有一个85列的大数据框。丢失的数据已编码为NaN。我的目标是获得每列中缺少的数据量。所以我写了一个for循环来创建一个列表来获取金额。但它不起作用。

以下是我的代码:

headers = x.columns.values.tolist() 
nans=[]
for head in headers:
    nans_col = x[x.head == 'NaN'].shape[0]
    nan.append(nans_col)

我尝试使用循环中的代码,通过将head更改为某一列的名称,来生成该列缺少的值的数量,然后代码运行并给出该列缺少的数据的数量。

因此,我不知道如何更正for循环代码。有人能帮我吗?我非常感谢你的帮助。

共有3个答案

饶元章
2023-03-14

如果下面有多个dataframe,则该函数用于使用百分比计算每列中缺少的值的数量

def miss_data(df):
    x = ['column_name','missing_data', 'missing_in_percentage']
    missing_data = pd.DataFrame(columns=x)
    columns = df.columns
    for col in columns:
        icolumn_name = col
        imissing_data = df[col].isnull().sum()
        imissing_in_percentage = (df[col].isnull().sum()/df[col].shape[0])*100
        
        missing_data.loc[len(missing_data)] = [icolumn_name, imissing_data, imissing_in_percentage]
    print(missing_data) 
赵华彩
2023-03-14

只需使用Dataframe.info,非空计数可能是您想要的,甚至更多。

>>> pd.DataFrame({'a':[1,2], 'b':[None, None], 'c':[3, None]}) \
.info(verbose=True, null_counts=True)

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2 entries, 0 to 1
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   a       2 non-null      int64    
 1   b       0 non-null      object
 2   c       1 non-null      float64
dtypes: float64(1), int64(1), object(1)
memory usage: 176.0+ bytes
姚棋
2023-03-14

对于pandas(python数据分析库)中的列,可以使用:

In [3]: import numpy as np
In [4]: import pandas as pd
In [5]: df = pd.DataFrame({'a':[1,2,np.nan], 'b':[np.nan,1,np.nan]})
In [6]: df.isnull().sum()
Out[6]:
a    1
b    2
dtype: int64

对于单个列或sereis,可以按如下所示计算缺少的值:

In [1]: import numpy as np
In [2]: import pandas as pd
In [3]: s = pd.Series([1,2,3, np.nan, np.nan])

In [4]: s.isnull().sum()
Out[4]: 2

参考

 类似资料:
  • 我有一个如下的数据帧 我想以通用方式替换缺少的值,即。为此,我创建了一个函数,如下所示 当我应用这个函数时,如下所示 我得到的数据帧如下 因此,它实际上正确地删除了列,但未能删除列。我知道过去有关于这个话题的讨论(这里)。我还是可能错过了什么?

  • 下面有一段代码,它创建了数据框中每列中缺失值的汇总表。我希望我可以构建一个类似的表来计算唯一的值,但是DataFrame没有唯一的()方法,只有每一列是独立的。 (资料来源:https://stackoverflow.com/a/39734251/7044473) 如何为唯一值实现相同的功能?

  • 有没有办法用熊猫来计算某个值在每一列中出现的次数? 数据= pd。DataFrame({'userID':['Luis ',' Mike ',' Harvey'],' category1':[True,False,True],' category2': [True,True,False],' category3':[False,False,False]}) 假设我想计算每个类别中“真”布尔值的数量

  • 问题内容: 我正在尝试编写一个脚本,该脚本将显示每列中非空值的数量以及表中的总行数。 我发现了几种方法可以做到这一点: 和 但是这些要求我手动输入每个列名称。有没有一种方法可以对每个列执行此操作而不列出它们? 问题答案: 正如Paolo所说,但这是一个示例:

  • 我有一张类似“ 我想创建一个新的列,在那里它将计数在最后4列中有值的列数。 我如何在Python中做到这一点? 提前道谢。

  • 问题内容: 就像这样说: http://web.archive.org/web/20090624083829/http://mail.python.org/pipermail/python- list/2003-May/206149.html Python中不存在函数重载。 就我而言,这也是一种面向对象的语言,因此对我来说是一个很大的障碍。最初,我发现无法区分参数类型很困难,但是Python的动态