Pandas:如何将 dropna() 与 thresh 一起使用


您可以使用dropna()函数从 pandas DataFrame 中删除包含缺失值的行。

您还可以使用thresh参数来指定 DataFrame 中必须保留行或列的非 NaN 值的最小数量。

以下是在实践中使用阈值参数的最常见方法:

方法 1:仅保留非 NaN 值数量最少的行

 #only keep rows with at least 2 non-NaN values
df. dropna (thresh= 2 )

方法 2:仅保留非 NaN 值百分比最小的行

 #only keep rows with at least 70% non-NaN values
df. dropna (thresh= 0.7 * len (df. columns ))

方法 3:仅保留非 NaN 值数量最少的列

 #only keep columns with at least 6 non-NaN values
df. dropna (thresh= 6 ,axis= 1 )

方法 4:仅保留非 NaN 值百分比最小的列

 #only keep columns with at least 70% non-NaN values
df. dropna (thresh= 0.7 * len (df), axis= 1 )

以下示例展示了如何在实践中使用以下 pandas DataFrame 的每种方法:

 import pandas as pd
import numpy as np

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
                   ' points ': [18, np.nan, 19, 14, 14, 11, 20, np.nan],
                   ' assists ': [5, np.nan, np.nan, 9, np.nan, 9, 9, 4],
                   ' rebounds ': [11, np.nan, 10, 6, 6, 5, 9, np.nan]})

#view DataFrame
print (df)

  team points assists rebounds
0 A 18.0 5.0 11.0
1 B NaN NaN NaN
2 C 19.0 NaN 10.0
3D 14.0 9.0 6.0
4 E 14.0 NaN 6.0
5 F 11.0 9.0 5.0
6G 20.0 9.0 9.0
7H NaN 4.0 NaN

示例 1:仅保留非 NaN 值数量最少的行

我们可以使用以下语法仅保留 DataFrame 中至少有 2 个非 NaN 值的行:

 #only keep rows with at least 2 non-NaN values
df. dropna (thresh= 2 )

	team points assists rebounds
0 A 18.0 5.0 11.0
2 C 19.0 NaN 10.0
3D 14.0 9.0 6.0
4 E 14.0 NaN 6.0
5 F 11.0 9.0 5.0
6G 20.0 9.0 9.0
7H NaN 4.0 NaN

请注意,索引位置1处的行已被删除,因为它在整行中只有一个非 NaN 值。

示例 2:仅保留非 NaN 值百分比最小的行

我们可以使用以下语法仅保留 DataFrame 中至少有 70% 非 NaN 值的行:

 #only keep rows with at least 70% non-NaN values
df. dropna (thresh= 0.7 * len (df. columns ))

        team points assists rebounds
0 A 18.0 5.0 11.0
2 C 19.0 NaN 10.0
3D 14.0 9.0 6.0
4 E 14.0 NaN 6.0
5 F 11.0 9.0 5.0
6G 20.0 9.0 9.0

请注意,索引位置17处的行已被删除,因为这些行不包含至少 70% 的非 NaN 值。

示例 3:仅保留非 NaN 值数量最少的列

我们可以使用以下语法仅保留 DataFrame 中至少有 6 个非 NaN 值的列:

 #only keep columns with at least 6 non-NaN values
df. dropna (thresh= 6 ,axis= 1 )

        team points rebounds
0 A 18.0 11.0
1 B NaN NaN
2 C 19.0 10.0
3D 14.0 6.0
4E 14.0 6.0
5 F 11.0 5.0
6G 20.0 9.0
7 H NaN NaN

请注意,“assists”列已被删除,因为该列中不包含至少 6 个非 NaN 值。

示例 4:仅保留非 NaN 值百分比最小的列

我们可以使用以下语法仅保留 DataFrame 中至少有 70% 非 NaN 值的列:

 #only keep columns with at least 70% non-NaN values
df. dropna (thresh= 0.7 * len (df), axis= 1 )

        team points rebounds
0 A 18.0 11.0
1 B NaN NaN
2 C 19.0 10.0
3D 14.0 6.0
4E 14.0 6.0
5 F 11.0 5.0
6G 20.0 9.0
7 H NaN NaN

请注意,“support”列已被删除,因为该列不包含至少 70% 的非 NaN 值。

注意:您可以在此处找到 pandas dropna()函数的完整文档。

其他资源

以下教程解释了如何在 pandas 中执行其他常见任务:

Pandas:如何在使用 dropna() 后重置索引
Pandas:如何将 dropna() 与特定列一起使用
Pandas:如何根据多个条件删除行

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注