Pandas中的dropna – 存储被删除的行

Pandas中的dropna – 存储被删除的行

在数据分析中,原始数据往往不够完整和规范,这时候我们需要先对它们进行一些数据清洗和预处理,以便进行后续的分析和处理。而其中一个非常基础和常用的操作就是删除缺失值。在Pandas中,dropna()方法就是专门用来删除缺失值的。而如果我们需要在删除缺失值的同时存储被删除的行,那么该怎么做呢?接下来我们就来一起学习一下。

阅读更多:Pandas 教程

Pandas中的dropna方法

在Pandas中,我们可以通过调用dataframe的dropna()方法来删除包含缺失值的行或列。其基本语法为:

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

其中,各参数的含义如下:

  • axis:默认值为0,表示按行删除;设置为1则表示按列删除。
  • how:默认为’any’,表示若某行或某列存在缺失值,则删除该行或该列;若设置为’all’,则表示当整个行或列所有值都为缺失值时才被删除。
  • thresh:整型变量,表示保留至少有thresh个非缺失值的行或列。
  • subset:列表或数组,表示保留特定的行或列。
  • inplace:是否在原地修改DataFrame。

例如,我们有一个包含12行4列的数据框,其中存在缺失值。

import pandas as pd
import numpy as np

df = pd.DataFrame({
    'A': [1, np.nan, 3, np.nan, 5, 6, np.nan, 8, 9, 10, 11, 12],
    'B': [13, 14, 15, np.nan, 17, np.nan, 19, 20, 21, np.nan, 23, np.nan],
    'C': [24, 25, np.nan, 27, 28, 29, np.nan, 31, np.nan, 33, 34, 35],
    'D': [36, np.nan, 38, np.nan, 40, 41, 42, 43, 44, 45, np.nan, 47]
})

print(df)

则我们可以使用如下代码删除缺失值。

df.dropna()

运行结果如下:

      A     B     C     D
0   1.0  13.0  24.0  36.0
2   3.0  15.0   NaN  38.0
4   5.0  17.0  28.0  40.0
5   6.0   NaN  29.0  41.0
7   8.0  20.0  31.0  43.0
8   9.0  21.0   NaN  44.0
10 11.0  23.0  34.0   NaN

我们可以看到,缺失值所在的行被删除了。

存储被删除的行

有时候我们需要在删除缺失值的同时,将被删除的行另存为另一个数据框。这时候,我们可以在dropna()方法中使用subset参数来实现。

df_dropped = df.dropna(subset=['A'])

运行结果如下:

      A     B     C     D
0   1.0  13.0  24.0  36.0
2   3.0  15.0   NaN  38.0
4   5.0  17.0  28.0  40.0
5   6.0   NaN  29.0  41.0
7   8.0  20.0  31.0  43.0
8   9..0  21.0   NaN  44.0
10 11.0  23.0  34.0   NaN
11 12.0   NaN  35.0  47.0

上述代码中,我们设置subset参数为[‘A’],表示只保留’A’列中非缺失值的行,即保留第0行到第11行。同时,我们将被删除的行存储在了名为df_dropped的新数据框中,该数据框中仅包含第一行和第九行。

总结

在本文中,我们介绍了Pandas中dropna()方法的使用,其可以用来删除包含缺失值的行和列,同时我们也讲解了如何在删除缺失值的同时将被删除的行存储下来。当进行数据清洗和预处理的时候,我们需要经常使用到该方法来处理缺失值,使得数据更加完整和规范,以便进行后续的分析和处理。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程