📌  相关文章
📜  pandas 替换 nan - Python (1)

📅  最后修改于: 2023-12-03 15:18:15.179000             🧑  作者: Mango

Pandas 替换 NaN - Python

Pandas 是一个广泛使用的 Python 包,它提供了高效的数据结构和数据分析工具。在 Pandas 中,NaN(Not a Number)是指无效或缺失的值。如果数据集中包含缺失值,则需要进行替换或填充等数据清理操作。本文将介绍如何使用 Pandas 替换 NaN 值。

检查 NaN 值

Pandas 包含一个 isna() 函数,用于检查数据集中的 NaN 值。例如:

import pandas as pd

data = pd.DataFrame({'a': [1, 2, 3, None], 'b': [4, None, 6, 7]})
print(data.isna())

结果将输出每个元素是否为 NaN:

       a      b
0  False  False
1  False   True
2  False  False
3   True  False

可以看到,在 data 的第三行第二列存在一个 NaN 值。

替换 NaN 值

Pandas 中的 fillna() 函数可用于替换 NaN 值。例如,我们可以使用平均值来替换 NaN 值:

import numpy as np

data = pd.DataFrame({'a': [1, 2, 3, None], 'b': [4, None, 6, 7]})
mean = np.mean(data['a'])
data = data.fillna(value=mean)
print(data)

结果将输出填充完成后的 data

     a    b
0  1.0  4.0
1  2.0  5.0
2  3.0  6.0
3  2.0  7.0

可以看到,原本的 NaN 值已经被平均值所替换。

替换指定列的 NaN 值

如果要替换指定列的 NaN 值,可以使用 Pandas 中的 fillna() 函数的 subset 参数。例如,我们可以只替换 dataa 列的 NaN 值:

import numpy as np

data = pd.DataFrame({'a': [1, 2, 3, None], 'b': [4, None, 6, 7]})
mean = np.mean(data['a'])
data = data.fillna(value=mean, subset=['a'])
print(data)

结果将输出只替换 a 列 NaN 值后的 data

     a    b
0  1.0  4.0
1  2.0  NaN
2  3.0  6.0
3  2.0  NaN
替换指定行的 NaN 值

如果要替换指定行的 NaN 值,可以使用 Pandas 中的 fillna() 函数的 inplace 参数。例如,我们可以只替换 data 中第二行的 NaN 值:

import numpy as np

data = pd.DataFrame({'a': [1, 2, 3, None], 'b': [4, None, 6, 7]})
mean = np.mean(data['a'])
data.loc[1].fillna(mean, inplace=True)
print(data)

结果将输出只替换 data 中第二行 NaN 值后的 data

     a    b
0  1.0  4.0
1  2.0  2.0
2  3.0  6.0
3  NaN  7.0
总结

在本文中,我们介绍了如何使用 Pandas 替换 NaN 值。使用 Pandas 中的 isna() 函数检查 NaN 值,使用 fillna() 函数替换 NaN 值。使用 subset 参数和 inplace 参数替换指定列和指定行的 NaN 值。Pandas 提供了高效的数据结构和数据分析工具,可以帮助处理包含 NaN 值的数据集。