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