Pandas中的dropna – 存储删除行
在Pandas中,DataFrame经常需要进行数据清洗,其中一个很常用的操作就是删除缺失值。Pandas中的dropna就是非常常用且方便的一个方法,本文将介绍如何通过Pandas的dropna方法来删除缺失值并将删除的行存储下来。
阅读更多:Pandas 教程
dropna方法简介
dropna是DataFrame的一个方法,它接受一些参数来进行缺失值的删除操作。默认情况下,dropna方法将只从行中删除包含缺失值的行,但是你也可以通过修改参数来控制。以下是dropna方法的一些重要参数:
– axis: 沿着行或列删除缺失值。默认值为0,即删除包含缺失值的行;
– how: 指定要删除的行或列中包含缺失值的比例,可以设置为’all’或’any’;
– thresh: 一行或一列中需要至少有多少个非缺失值才不会被删除;
– subset: 指定要删除行或列的子集。
将这些参数的值设置为适当的值,dropna方法就会删除DataFrame中包含缺失值的行或列。
dropna方法示例
我们来使用一个简单的示例来演示该方法的使用。首先,请先创建一个包含缺失值的DataFrame:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A':[1, 2, np.nan, 4], 'B':[5, np.nan, 7, 8], 'C':[np.nan, 10, 11, 12]})
print(df)
输出如下:
A B C
0 1.0 5.0 NaN
1 2.0 NaN 10.0
2 NaN 7.0 11.0
3 4.0 8.0 12.0
该DataFrame包含缺失值。现在,使用dropna方法可以轻松删除这些缺失值。
df.dropna()
输出:
A B C
3 4.0 8.0 12.0
在这个例子中,使用默认的dropna方法只删除了包含缺失值的行。在这种情况下,只有第2行具有缺失值,因此该行被删除了,剩下的所有行都没有被删除。请注意,由于我们没有在方法中传递任何参数,因此Pandas使用了默认值。
下面再看几个示例:
删除所有包含缺失值的列
df.dropna(axis=1)
输出:
Empty DataFrame
Columns: []
Index: [0, 1, 2, 3]
在这个例子中,我们将axis参数设置为1,这意味着我们要删除包含缺失值的列。由于所有的列都包含缺失值,因此整个DataFrame被删除了。
删除至少有2个非缺失值的行
df.dropna(thresh=2)
输出:
A B C
0 1.0 5.0 NaN
1 2.0 NaN 10.0
3 4.0 8.0 12.0
在这个例子中,我们将thresh参数设置为2,这意味着我们要删除至少有一个非缺失值的行。由于第2行只有1个非缺失值,因此该行被删除了,而其他行具有至少2个非缺失值,因此保留了它们。
删除指定的列
df.dropna(subset=['B'])
输出:
A B C
0 1.0 5.0 NaN
2 NaN 7.0 11.0
3 4.0 8.0 12.0
在这个例子中,我们将subset参数设置为’B’,这意味着我们要删除包含缺失值的列’B’。由于第1列和第2列包含缺失值,因此它们都被删除了。
存储删除的行
有时候,我们需要将删除的行单独保存下来,以便以后进行分析或使用。我们可以通过在dropna方法中传递index或labels参数来实现这一点。这些参数允许我们将删除的行或列存储到一个新的DataFrame中。
deleted_rows = df.dropna().reset_index(drop=True)
在这个例子中,deleted_rows将存储从原始DataFrame中删除的行。我们使用reset_index方法来重置索引,这样可以保证删除的行按顺序储存到结果DataFrame中。
总结
使用Pandas中的dropna方法可以方便地删除DataFrame中的缺失值。该方法提供了许多参数来控制要删除的行和列以及删除的条件。通过在dropna中添加参数,我们可以将删除的行或列存储到一个新的DataFrame中,以供后期分析使用。
极客笔记