您的位置:

Python使用dropna删除NaN值示例

介绍

在数据处理过程中,缺失数据或NaN值是比较常见的情况。在 Pandas 中,我们可以使用 dropna() 方法删除包含 NaN 值的行或列,来减少数据异常值对于统计分析、建模以及预测的影响。

正文

一、什么是 NaN 值

NaN 值是表示缺少数据或不适用数据的一种标签。常见的情况是数据没有被观测或没有被记录。在 Pandas 中,NaN表示Not a Number,可以用 np.NaN 或 pd.NaT 表示。

二、使用 dropna 删除包含 NaN 值的行

import pandas as pd
import numpy as np

df = pd.DataFrame([[np.nan, 2, np.nan, 0], [3, 4, np.nan, 1], [np.nan, np.nan, np.nan, 5], [8, 7, 6, 4], [5, np.nan, np.nan, np.nan]],
                  columns=list('ABCD'))
# 删除包含 NaN 值的行
df.dropna()

上述示例中,我们创建了一个包含 NaN 值的 DataFrame,其中又包含一些 NaN 值。于是我们使用 dropna() 方法将包含 NaN 值的行删除。

三、使用 dropna 删除包含 NaN 值的列

import pandas as pd
import numpy as np

df = pd.DataFrame([[np.nan, 2, np.nan, 0], [3, 4, np.nan, 1], [np.nan, np.nan, np.nan, 5], [8, 7, 6, 4], [5, np.nan, np.nan, np.nan]],
                  columns=list('ABCD'))
# 删除包含 NaN 值的列
df.dropna(axis=1)

上述示例中,我们使用 dropna() 方法将包含 NaN 值的列删除。需要注意的是,在调用 dropna() 方法时,默认为 axis=0,即删除行,若需要删除列,则需要将 axis 设置为 1。

四、使用 thresh 参数删除包含 NaN 值的行或列

import pandas as pd
import numpy as np

df = pd.DataFrame([[np.nan, 2, np.nan, 0], [3, 4, np.nan, 1], [np.nan, np.nan, np.nan, 5], [8, 7, 6, 4], [5, np.nan, np.nan, np.nan]],
                  columns=list('ABCD'))
# 删除列中非 NaN 值小于 3 的列
df.dropna(thresh=3, axis=1)

在某些情况下,可能需要删除一些非 NaN 值较少的行或列。这时可以使用 thresh 参数来控制删除条件。例如,上述示例中,我们使用了 thresh=3,即删除列中非 NaN 值小于 3 的列。

五、使用 inplace 参数直接在原数据上删除

import pandas as pd
import numpy as np

df = pd.DataFrame([[np.nan, 2, np.nan, 0], [3, 4, np.nan, 1], [np.nan, np.nan, np.nan, 5], [8, 7, 6, 4], [5, np.nan, np.nan, np.nan]],
                  columns=list('ABCD'))
# 直接在原数据上删除所有包含 NaN 值的行
df.dropna(inplace=True)

通过设置 inplace 参数为 True,可以直接在原数据上进行删除操作,且不会返回一个新的 DataFrame。

结论

使用 dropna() 方法可以快速有效地删除包含 NaN 值的行或列,从而避免统计分析、建模以及预测等过程中,缺失数据对结果产生的干扰。