如何用 0 替换 Pandas 数据框中的 NaN 值?

在 Python 中,NaN 表示非数字它表示具有 NaN 值的条目未定义或在数据集中丢失。它是浮点值,无法转换为任何其他数据类型。

NaN 值是不可取的,尤其是在机器学习模型中,因为它们可能导致训练不准确的模型。这些值可以替换为计算项,如平均值、中位数或基于数据集的任何其他合适的值。

另请阅读:如何用空字符串替换 Pandas 中的 NAN 值?

本教程将介绍如何在Pandas 数据框中将 NaN 值替换为 0 。让我们首先创建一个数据框。


创建 Pandas 数据框

import pandas as pd
import numpy as np
 
data = {
    'Mobile Model Number': [6, np.nan, 2, np.nan, 7, 3, 5,
                            np.nan, 21, 12, np.nan],
    'Price': [30000, 5200, 6000, np.nan, np.nan, 15000, 36000,
              np.nan, 4500, np.nan, 2300],
    'Rating': [3.1, 3.0, np.nan, 4.6, np.nan, np.nan, 2.8, 4.7,
               np.nan, 3.0, np.nan]
}
 
df = pd.DataFrame(data)
 
df
数据框

上面是一个数据框,由 3 列组成:手机型号价格评级到目前为止,所有这些列都包含一些 NaN 值。


用于替换 NaN 值的 Python 函数

Python中主要有两个函数可以用来替换NaN值:
1. replace()
2.关于replace()函数可以参考这篇文章,关于fillna()函数可以参考这篇文章来fillna()

了解更多


将 NaN 值替换为 0 的示例

让我们从一些替换 NaN 值的示例开始,并了解它在代码中的工作原理。

使用replace()函数:

A。使用replace()将单列中的NaN值替换为0

data = {
    'Mobile Model Number': [6, np.nan, 2, np.nan, 7, 3, 5,
                            np.nan, 21, 12, np.nan],
    'Price': [30000, 5200, 6000, np.nan, np.nan, 15000, 36000,
              np.nan, 4500, np.nan, 2300],
    'Rating': [3.1, 3.0, np.nan, 4.6, np.nan, np.nan, 2.8, 4.7,
               np.nan, 3.0, np.nan]
}
 
# applying the replace method on a single column
df['Rating'] = df['Rating'].replace(np.nan, 0)
 
df
Replace():将单列中的 NaN 替换为 0

在上面的代码中,我们应用该replace()函数将数据帧的“Rating”列中的 NaN 值替换为 0。因此,该列现在用 0 代替了之前的 NaN 值。

b. 使用replace()将整个数据框中的NaN值替换为0

data = {
    'Mobile Model Number': [6, np.nan, 2, np.nan, 7, 3, 5,
                            np.nan, 21, 12, np.nan],
    'Price': [30000, 5200, 6000, np.nan, np.nan, 15000, 36000,
              np.nan, 4500, np.nan, 2300],
    'Rating': [3.1, 3.0, np.nan, 4.6, np.nan, np.nan, 2.8, 4.7,
               np.nan, 3.0, np.nan]
}
 
# applying the replace method on the entire dataframe
df = df.replace(np.nan, 0)
 
df
Replace():将整个Dataframe中的NaN替换为0

在本例中,我们一次性将整个数据帧中的所有 NaN 值替换为 0。


使用 fillna() 函数:

此示例将使用我们之前探索过的fillna() 函数。

A。使用 fillna() 将单列中的 NaN 值替换为 0

data = {
    'Mobile Model Number': [6, np.nan, 2, np.nan, 7, 3, 5,
                            np.nan, 21, 12, np.nan],
    'Price': [30000, 5200, 6000, np.nan, np.nan, 15000, 36000,
              np.nan, 4500, np.nan, 2300],
    'Rating': [3.1, 3.0, np.nan, 4.6, np.nan, np.nan, 2.8, 4.7,
               np.nan, 3.0, np.nan]
}
 
# applying the fillna method on a single column
df['Mobile Model Number'] = df['Mobile Model Number'].fillna(0)
 
df
fillna():将单列中的 NaN 替换为 0

在这里,我们将“Rating”列中的所有 NaN 值替换为 0。

b. 使用 fillna() 将整个数据帧中的 NaN 值替换为 0

data = {
    'Mobile Model Number': [6, np.nan, 2, np.nan, 7, 3, 5,
                            np.nan, 21, 12, np.nan],
    'Price': [30000, 5200, 6000, np.nan, np.nan, 15000, 36000,
              np.nan, 4500, np.nan, 2300],
    'Rating': [3.1, 3.0, np.nan, 4.6, np.nan, np.nan, 2.8, 4.7,
               np.nan, 3.0, np.nan]
}
# applying the fillna method on the entire dataframe
df.fillna(0)
 
df
fillna():将整个Dataframe中的NaN替换为0

在本例中,我们使用该fillna()函数将数据帧中的所有 NaN 值一次性替换为 0。


概括

因此,我们已经了解了如何在数据帧中用 0 替换 NaN 值。要了解有关 Pandas 和其他 Python 相关概念的更多信息,请查看我们的其他博客!


参考