Pandas 系列中如何删除NaN

Pandas 系列中如何删除NaN

在本文中,我们将介绍如何在Pandas系列中删除NaNNaN是“不是数字”(Not a Number)的缩写,表示缺失或无效的值。在数据分析中,我们经常需要清理这些缺失的数据,以便正确地分析和建模。

阅读更多:Pandas 教程

创建包含NaN的Pandas系列

要演示如何删除NaN,我们需要先创建一个包含NaN的Pandas系列。Pandas是Python数据分析库,它提供了一些数据结构来处理序列、块和面板数据。我们可以使用Pandas中的Series()方法创建一个系列,并使用numpy模块中的nan来添加NaN

import pandas as pd
import numpy as np

data = pd.Series([1, 2, np.nan, 4])
print(data)
Python

输出:

0    1.0
1    2.0
2    NaN
3    4.0
dtype: float64
Python

删除单个NaN

要删除单个NaN,我们可以使用Pandasdropna()方法。默认情况下,dropna()将删除任何包含 NaN 的行:

clean_data = data.dropna()
print(clean_data)
Python

输出:

0    1.0
1    2.0
3    4.0
dtype: float64
Python

删除NaN所在的整行

我们还可以通过传递参数axis=0来删除包含NaN的整行。

clean_data = data.dropna(axis=0)
print(clean_data)
Python

输出:

0    1.0
1    2.0
3    4.0
dtype: float64
Python

删除NaN所在的整列

如果数据的行数远大于列数,删除包含NaN的整列可能更有帮助。可以通过传递参数axis=1来删除包含NaN的整列:

data = pd.DataFrame({'A': [1, np.nan, 3], 'B': [4, np.nan, 6], 'C': [7, 8, 9]},
                    columns=['A', 'B', 'C'])

clean_data = data.dropna(axis=1)
print(clean_data)
Python

输出:

   C
0  7
1  8
2  9
Python

删除多个NaN

如果我们只想删除多个NaN,我们可以使用thresh参数来设置要求非空值(非NaN)的数量。如果行或列中至少有指定数量的非NaN值,则保留该行或列,否则删除。

在下面的示例中,我们指定了要求2个非NaN值,保留了第二行。而第一行和第三行包含的非NaN值没有达到要求,被删除了。

data = pd.DataFrame({'A': [1, np.nan, np.nan], 'B': [4, 5, np.nan], 'C': [7, 8, 9]},
                    columns=['A', 'B', 'C'])

clean_data = data.dropna(thresh=2)
print(clean_data)
Python

输出:

     A    B  C
1  NaN  5.0  8
Python

可以看到,只有第二行的非NaN值达到要求,所以只有这一行被保留下来了。

填充NaN

最后,我们探讨一下怎样用特定的值填充NaN。我们可以使用fillna()方法,传递一个值作为参数来填充所有NaN。

data = pd.Series([1, 2, np.nan, 4])
clean_data = data.fillna(0)
print(clean_data)
Python

输出:

0    1.0
1    2.0
2    0.0
3    4.0
dtype: float64
Python

总结

在本文中,我们介绍了如何删除包含NaN的行和列,并通过指定至少存在指定数量的非NaN值来删除多个NaN。还学习了如何用特定的值填充NaN。这些方法在数据分析和建模中都是很有用的。如果想了解更多关于Pandas的内容,可以查看Pandas官方文档

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册