![](/img/trans.png)
[英]fastest way for searching and updating values for every rows in 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.nan
的sum
和长度轻松计算缺失值的百分比。 您可以使用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.