You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何删除缺失值数量达指定阈值或比例的数据集行?

删除含指定数量/占比缺失值的行解决方案

假设你用Python的pandas库处理这份表格数据(这是处理这类结构化数据最常用的工具),我会一步步帮你实现需求:

1. 先把原始数据转换成DataFrame

首先我们把你给出的数据集加载成pandas的DataFrame格式:

import pandas as pd
import numpy as np

# 构建你的数据集
data = {
    'A': [0.46, 0.65, np.nan, 0.50, 0.45, np.nan, 0.32, 0.82, 0.65, 0.36],
    'B': [0.23, 0.48, 1.00, 0.97, 0.44, 0.39, 0.87, 0.67, np.nan, 0.23],
    'C': [np.nan, 0.07, 0.79, 0.07, 0.23, np.nan, 0.73, 0.73, np.nan, 1.00],
    'D': [0.41, 0.15, 0.09, 0.55, 0.41, 0.31, 0.57, 0.19, 0.81, 0.51]
}
df = pd.DataFrame(data)

原始数据的输出样式:

A     B     C     D
0  0.46  0.23   NaN  0.41
1  0.65  0.48  0.07  0.15
2   NaN  1.00  0.79  0.09
3  0.50  0.97  0.07  0.55
4  0.45  0.44  0.23  0.41
5   NaN  0.39   NaN  0.31
6  0.32  0.87  0.73  0.57
7  0.82  0.67  0.73  0.19
8  0.65   NaN   NaN  0.81
9  0.36  0.23  1.00  0.51

2. 两种方式实现删除逻辑

方式一:删除包含2个及以上缺失值的行

用pandas内置的dropna()方法,通过thresh参数指定至少需要多少个非缺失值的行才会被保留。你的数据有4列,要删除含2个及以上缺失值的行,意味着只保留非缺失值≥3的行,所以设置thresh=3

# 保留至少3个非缺失值的行(即缺失值≤1的行)
filtered_df = df.dropna(thresh=3)

方式二:删除缺失值占比超过50%的行

如果需要按缺失值占比来过滤,先计算每行的缺失值占比,再保留占比≤50%的行(对你的4列数据来说,50%就是2个缺失值,和方式一效果一致):

# 计算每行缺失值占比,筛选占比不超过50%的行
filtered_df = df[df.isna().mean(axis=1) <= 0.5]

3. 最终处理结果

运行上述任意一种代码后,得到的结果如下:

A     B     C     D
0  0.46  0.23   NaN  0.41
1  0.65  0.48  0.07  0.15
2   NaN  1.00  0.79  0.09
3  0.50  0.97  0.07  0.55
4  0.45  0.44  0.23  0.41
6  0.32  0.87  0.73  0.57
7  0.82  0.67  0.73  0.19
9  0.36  0.23  1.00  0.51

可以看到第5行和第8行(都包含2个缺失值)已经被成功删除,完全符合你的需求。

内容的提问来源于stack exchange,提问作者michael0196

火山引擎 最新活动