python - 使用 pandas 丢弃超过 25% 的缺失数据
问题描述
我有一个超过 30K 行的 csv 文件。其中一些行包含 NA 值,我想丢弃缺失值超过 25% 的行。我尝试过使用 pandas 命令 dropna(),但我只能使用命令“any”或“all”。我应该使用哪一行代码来区分缺失值超过 25% 的行?
谢谢
解决方案
更新:基于类似问题的一行答案:
df = df[ df.isna().mean(axis=1) <= 0.25 ]
假设你有这个数据框:
df = pd.DataFrame(dict(
keep=dict(a=1, b=2, c=3, d=4),
drop=dict(a=None, b=None, c=10, d=20),
keep_2=dict(a=None, b=4, c=2, d=1),
drop_2=dict(a=None, b=None, c=None, d=None)
)).T
您可以使用 计算行中空值的数量df.isna().sum(axis=1)
。轴 1 用于显示您在行中添加项目,而不是在列中。然后你可以检查哪些行有超过 25% 的 nans 并选择所有其余的:
NANS_THRESHOLD = 0.25
nans_count_in_line = df.isna().sum(axis=1)
total_columns = len(df.columns)
is_too_many_nans = nans_count_in_line / total_columns > NANS_THRESHOLD
df[ ~is_too_many_nans ]
结果:
a b c d
keep 1 2 3 4
keep_2 NaN 4 2 1
推荐阅读
- ios - 在 iOS 中安装 Jmeter 证书
- c# - 本地开发的具有依赖项目的 nuget
- java - 给定一个 Spring Data Rest URI,你如何找到关联的目标存储库?
- c++ - 调用线程会在 thread.join() 之后看到对局部变量的修改吗?
- android - 如何使用 Google Vision 裁剪检测到的数字 (OCR) 区域?
- python-3.x - 如果它出现在 pytorch&&tqdm __init__() 中可能会出现问题,缺少 1 个必需的位置参数:'code'
- java - 如何检查按下按钮时检查了哪些单选按钮
- android - 来自 Play 商店的 Android 应用程序更新
- php - 电子邮件始终采用 `if` 而不是 `else if`/`else` 路径
- swift - 一次将多个图像快速保存到文件系统,高 CPU