繁体   English   中英

获取 Pandas Dataframe 中每个特征的值不正确的行百分比的最快方法

[英]Fastest way to get Percent of rows with incorrect values for each feature in a Pandas Dataframe

下面的代码是我所拥有的。 似乎适用于?, '''但不适用于np.NaN 有什么建议?

另外,我是 Pandas/Python 的新手,因此想知道是否有更快的方法来做到这一点

如果超过 X%(比如 5%)的行有缺失值,我正在考虑将特征视为可疑。 您经常使用的任何其他数据清理初始检查

for col in df.columns:
  pcnt_missing = df[df[col].isin(['?','',' ',np.NaN])][col].count() * 100.0 / df[col].count()
  if pcnt_missing > 1:
    print(f"Col = {col}, Percent missing ={pcnt_missing:.2f}")

如果可以替换值? ''' '使用np.nan ,您可以使用数据np.nansum和长度轻松计算缺失值的百分比。 您可以使用apply替换缺失值:

import pandas as pd
import numpy as np

df = pd.DataFrame({'a': [1,2,3,4], 'b': [2, '', '?', 4], 'c': [' ', np.nan, '', 5]})

def replace(x):
    idx = x.isin(['', ' ', '?'])
    x[idx] = np.nan
    return x

replaced = df.apply(replace, axis=1) % Values are replaced here

现在,您可以使用以下命令计算每列缺失值的百分比:

replaced.isna().sum(axis=0) * 100 / len(replaced)

Output:

a     0.0
b    50.0
c    75.0
dtype: float64

使用布尔逻辑与isna ,使用@Ricardo埃里克森设置:

df = pd.DataFrame({'a': [1,2,3,4], 'b': [2, '', '?', 4], 'c': [' ', np.nan, '', 5]})

(df.isna() | df.isin(['?','',' '])).mean()

输出:

a    0.00
b    0.50
c    0.75
dtype: float64

使用isna检查 NaN 并使用| , OR 布尔运算符,并使用isin ,另外您可以使用mean来查找缺失的百分比。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM