Pandas 将空值(空格)替换为NaN

Pandas 将空值(空格)替换为NaN

在本文中,我们将介绍如何使用Pandas将DataFrame中的空值(包括空格)替换为NaN。

阅读更多:Pandas 教程

什么是NaN?

NaN是一种缺失值类型,它表示“非数字”或无效数值。在Pandas中,NaN用于表示缺失或无效值。

Pandas中的缺失值

Pandas中有两种主要的对象:Series和DataFrame。这些对象通常包含缺失值。

在Pandas中,空值通常表示为None或NaN。但是,在某些情况下,空格(空字符串)也可能被视为缺失值。

例如,考虑以下简单的DataFrame:

import pandas as pd

data = {'Name': ['John', 'Mike', 'Sara', 'Kate', 'Dave', 'Jessica'],
        'Age': [23, 31, 19, None, 42, 28],
        'Gender': ['M', 'M', "", 'F', 'M', 'F']}

df = pd.DataFrame(data)
Python

在这个DataFrame中,年龄列(Age)中有一个空值(None),而性别列(Gender)中有一个空格(””)。

我们可以使用isna()函数来查找DataFrame中的缺失值:

print(df.isna())
Python

输出为:

    Name    Age  Gender
0  False  False   False
1  False  False   False
2  False  False    True
3  False   True   False
4  False  False   False
5  False  False   False
Python

上述代码中,isna()函数返回一个布尔值DataFrame,其中缺失值是True,否则是False。

我们可以看到,年龄(Age)列中有一个True值,表示它包含一个NaN值,而性别(Gender)列中有一个True值,表示它包含一个空字符串(空格)。

如果我们希望将空格视为NaN,我们可以使用replace()函数来替换值:

df = df.replace("", pd.NA)
Python

这将把DataFrame中的所有空字符串(空格)替换为NaN。

现在我们再次调用isna()函数,查看DataFrame中的缺失值:

print(df.isna())
Python

输出为:

    Name    Age  Gender
0  False  False   False
1  False  False   False
2  False  False    True
3  False   True   False
4  False  False   False
5  False  False   False
Python

我们可以看到,性别(Gender)列中的空字符串已经替换为了NaN。

处理字符串

如果DataFrame中包含字符串列,则可以使用strip()函数来删除字符串两侧的空格,然后再使用replace()函数将空字符串替换为NaN。

例如,考虑以下包含字符串列的DataFrame:

data = {'Name': [' John', 'Mike  ', 'Sara', ' Kate', ' Dave ', 'Jessica   '],
        'Age': [23, 31, 19, None, 42, 28],
        'Gender': ['M', 'M', "", 'F', ' ', 'F']}

df = pd.DataFrame(data)
Python

在这个DataFrame中,姓名(Name)列和性别(Gender)列中包含了多余的空格。

我们可以使用strip()函数来删除这些空格,并使用replace()函数将空字符串替换为NaN:

df['Name'] = df['Name'].str.strip()
df['Gender'] = df['Gender'].str.strip().replace("", pd.NA)
Python

我们可以使用head()函数来查看修改后的DataFrame的前几行:

print(df.head())
Python

输出为:

      Name   Age Gender
0     John  23.0      M
1     Mike  31.0      M
2     Sara  19.0   <NA>
3     Kate   NaN      F
4     Dave  42.0   <NA>
Python

现在,姓名(Name)列和性别(Gender)列中的空格已经被删除,并且性别(Gender)列中的空字符串也已被替换为NaN。

处理数字

如果DataFrame中包含数字列,则可以使用fillna()函数来将NaN值替换为特定的值。例如,我们可以将NaN值替换为某个数字,如0。

例如,考虑以下包含数字列的DataFrame:

data = {'Name': ['John', 'Mike', 'Sara', 'Kate', 'Dave', 'Jessica'],
        'Age': [23, 31, 19, None, 42, None],
        'Height (cm)': [180, 165, None, 170, 175, None]}

df = pd.DataFrame(data)
Python

在这个DataFrame中,年龄(Age)列和身高(Height)列中包含NaN值。

要将NaN值替换为0,我们可以使用fillna()函数:

df = df.fillna(0)
Python

现在,我们再次调用isna()函数,查看DataFrame中的缺失值:

print(df.isna())
Python

输出为:

    Name    Age  Height (cm)
0  False  False        False
1  False  False        False
2  False  False         True
3  False   True        False
4  False  False        False
5  False   True        False
Python

我们可以看到,年龄(Age)列和身高(Height)列中的所有NaN值都已被替换为0。

总结

在Pandas中,NaN用于表示缺失或无效值,空字符串(空格)有时也被视为缺失值。

我们可以使用isna()函数来查找DataFrame中的缺失值,并使用replace()函数将空字符串(空格)替换为NaN。如果DataFrame中包含字符串列,则可以使用strip()函数来删除字符串两侧的空格,然后再使用replace()函数将空字符串替换为NaN。

对于数字列,我们可以使用fillna()函数将NaN值替换为特定的值。

通过处理缺失值,我们可以更好地理解和分析数据,并提高模型的准确性和可靠性。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册