pandas 过滤nan

pandas 过滤nan

pandas 过滤nan

在处理数据时,经常会遇到一些缺失值(NaN)。在pandas库中,我们可以通过一些方法来过滤这些NaN值,使得数据处理更加准确和方便。

什么是NaN?

NaN是”Not a Number”的缩写,表示缺失值或者不可用值。在pandas中,NaN通常用来表示缺失值。

创建包含NaN的DataFrame

让我们首先创建一个包含NaN值的DataFrame,以便于我们后续的操作。我们可以使用字典的方式来创建DataFrame,例如:

import pandas as pd
import numpy as np

data = {'A': [1, 2, np.nan, 4],
        'B': [np.nan, 5, 6, np.nan],
        'C': [7, 8, 9, 10]}

df = pd.DataFrame(data)
print(df)
Python

运行以上代码,我们将得到如下输出:

     A    B   C
0  1.0  NaN  7
1  2.0  5.0  8
2  NaN  6.0  9
3  4.0  NaN  10
Python

上述DataFrame包含了一些NaN值,我们接下来将介绍如何处理这些NaN值。

检测NaN值

在处理含有NaN值的数据时,首先我们需要了解哪些位置存在NaN值。我们可以使用isnull()方法来检测DataFrame中的NaN值:

print(df.isnull())
Python

运行以上代码,得到输出如下:

       A      B      C
0  False   True  False
1  False  False  False
2   True  False  False
3  False   True  False
Python

此时,我们可以看到哪些位置存在NaN值。

删除含有NaN值的行

如果我们希望删除含有NaN值的行,我们可以使用dropna()方法。默认情况下,dropna()会删除包含任何NaN值的行:

df_filtered = df.dropna()
print(df_filtered)
Python

运行以上代码,得到如下输出:

     A    B   C
1  2.0  5.0  8
Python

可以看到,只有第二行的数据被保留,而其他含有NaN值的行被删除了。

删除含有NaN值的列

类似地,如果我们想删除含有NaN值的列,我们可以通过设置axis=1参数来实现:

df_filtered = df.dropna(axis=1)
print(df_filtered)
Python

运行以上代码,得到如下输出:

    C
0   7
1   8
2   9
3  10
Python

可以看到,只有列’C’被保留下来,而其他含有NaN值的列被删除了。

填充NaN值

有时候,我们并不想删除含有NaN值的行或列,而是希望用某个特定的值来填充这些NaN。我们可以使用fillna()方法来实现这一目的。

df_filled = df.fillna(value=0)
print(df_filled)
Python

运行以上代码,得到如下输出:

     A    B   C
0  1.0  0.0  7
1  2.0  5.0  8
2  0.0  6.0  9
3  4.0  0.0  10
Python

通过填充NaN值,我们将NaN值替换为了0。

仅对某一列填充NaN值

有时候,我们只想对某一列进行NaN值填充。我们可以通过指定列名来实现这一目的。

# 对列'A'填充为100
df['A'] = df['A'].fillna(value=100)
print(df)
Python

运行以上代码,得到的输出如下:

       A    B   C
0    1.0  NaN   7
1    2.0  5.0   8
2  100.0  6.0   9
3    4.0  NaN  10
Python

可以看到,只有列’A’中的NaN值被填充为了100。

其他处理NaN值的方法

除了上述介绍的方法外,pandas还提供了一些其他处理NaN值的方法,比如interpolate()方法可以根据已有数据进行插值填充。此外,我们还可以使用replace()方法来替换特定值为NaN值。

总的来说,处理NaN值是数据处理中的常见任务,我们需要根据具体情况选择合适的处理方式,使得数据分析和建模更加准确和有效。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册