pandas如何删掉dataframe内的nan空值行
在数据分析和处理中,经常会遇到数据表中包含空值(NaN)的情况,如果不处理这些空值,会影响到数据分析的准确性和结果。在 pandas 中,可以使用 dropna() 方法来删除包含空值的行。
下面将详细介绍如何使用 pandas 删除 dataframe 内的 NaN 空值行。
创建包含空值的 dataframe
首先,让我们创建一个包含空值的 dataframe,以便后续演示如何删除这些空值行。我们使用 pandas 的 DataFrame() 方法来创建一个包含 NaN 空值的数据表。
import pandas as pd
import numpy as np
data = {
'A': [1, 2, np.nan, 4],
'B': [np.nan, 5, 6, np.nan],
'C': [7, np.nan, 9, 10]
}
df = pd.DataFrame(data)
print(df)
运行以上代码,我们可以得到以下包含空值的 dataframe:
A B C
0 1.0 NaN 7.0
1 2.0 5.0 NaN
2 NaN 6.0 9.0
3 4.0 NaN 10.0
删除包含空值的行
接下来,我们使用 dropna() 方法删除包含空值的行。默认情况下,dropna() 方法会删除所有包含空值的行(即任何字段包含 NaN 的行)。
df.dropna(inplace=True)
print(df)
运行以上代码,我们可以看到删除包含空值的行后的 dataframe:
A B C
可以看到,原先包含空值的行已经被删除了。
指定删除空值的条件
除了默认删除所有包含空值的行外,我们还可以根据需求指定删除空值的条件。dropna() 方法提供了一些参数来帮助我们做出这样的设定。
首先,我们可以使用 how 参数来指定删除的条件,可选的值有 ‘any’ 和 ‘all’。’any’ 表示只要有一个字段包含空值就删除该行,’all’ 表示所有字段都包含空值才删除。
df.dropna(how='any', inplace=True)
print(df)
运行上述代码,我们可以得到与默认情况下相同的结果。因为默认情况下 how 参数即为 ‘any’。
接着,我们通过设置 thresh 参数来指定行内非空值的最少数量。只有行内非空值数量少于该阈值时,才会被删除。
df = pd.DataFrame(data)
df.dropna(thresh=2, inplace=True)
print(df)
上述代码中,我们设定 thresh=2,即只有至少有2个非空值的行才会被保留。运行后,结果如下:
A B C
0 1.0 NaN 7.0
1 2.0 5.0 NaN
2 NaN 6.0 9.0
3 4.0 NaN 10.0
可以看到,在该示例中,没有行符合 thresh=2 的条件,因此没有行被删除。
最后,我们可以通过 subset 参数来指定在哪些列中查找空值并删除相应的行。
df.dropna(subset=['A', 'B'], inplace=True)
print(df)
在上述代码中,我们指定只在 ‘A’ 列和 ‘B’ 列中查找空值并删除相应的行。运行后,结果如下:
A B C
1 2.0 5.0 NaN
可以看到,只有包含 ‘A’ 列或 ‘B’ 列中有空值的行被删除了。
总结
本文详细介绍了如何使用 pandas 删除 dataframe 内的 NaN 空值行。通过 dropna() 方法,我们可以方便地删除包含空值的行,并且可以根据需要指定删除的条件,使数据处理更加灵活和准确。