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

514 阅读3分钟

在Python中,NaN意味着Not A Number。它表示具有NaN值的条目要么没有定义,要么从数据集中丢失。它是一个浮点值,不能转换为任何其他数据类型。

NaN值是不可取的,特别是在机器学习模型中,因为它们会导致训练一个不准确的模型。这些值可以由一个计算术语代替,如平均数、中位数或任何其他基于数据集的合适值。

本教程将探讨如何在Pandas数据框中用0替换NaN值。让我们首先创建一个数据框来开始。


创建一个潘达斯数据框

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.fillna()

你可以通过参考这个了解更多关于**replace()函数的信息,通过参考篇文章了解fillna()**函数。


用0替换NaN值的例子

让我们从几个替换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():用0替换单列中的NaN值

在上面的代码中,我们应用replace() 函数在数据框架的'Rating'列中用0来替换NaN值。结果,这一列现在有了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()。用0替换整个数据框架中的NaN值

在这种情况下,我们将整个数据框中的所有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():用0替换单列中的NaN值

在这里,我们用0替换了'Rating'列中的所有NaN值。

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():用0替换整个数据框中的NaN值

在这个案例中,我们使用fillna() 函数将数据框架中的所有NaN值一次性替换为0。


总结

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