Pandas fillna()方法 - 完整指南

2,537 阅读2分钟

数据分析已经成为我们日常生活中的一个重要组成部分。我们每天都要处理来自不同领域的不同类型的数据。数据分析的主要挑战之一是数据中存在的缺失值或(NA)。在这篇文章中,我们将学习如何在fillna()方法的帮助下处理数据集中的缺失值。让我们开始吧!

什么是Pandas fillna()方法,为什么它有用?

Pandas Fillna()是一个用来填补数据集中的缺失值或不完整值的方法。你可以填补缺失的值,如0或输入一个值。当你在处理CSV或Excel文件时,这个方法通常会派上用场。

不要与dropna()方法混淆,在该方法中我们要删除缺失的值。在这种情况下,我们将用零或用户的输入值来替换缺失的值。

让我们来看看fillna()函数的语法

DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)

让我们看看下面的例子,看看你如何在不同的情况下使用fillna()方法。

Pandas DataFrame fillna()方法

在下面的例子中,我们将用零来填补NAN值的位置。

import pandas as pd
import numpy as np

df = pd.DataFrame([[np.nan, 300, np.nan, 330],
                     [589, 700, np.nan, 103],
                     [np.nan, np.nan, np.nan, 675],
                     [np.nan, 3]],
                    columns=list('abcd'))
print(df)

#Filling the NaN values with zeros.
print("\n")
print(df.fillna(0))

输出

   a      b   c      d
0    NaN  300.0 NaN  330.0
1  589.0  700.0 NaN  103.0
2    NaN    NaN NaN  675.0
3    NaN    3.0 NaN    NaN


       a      b    c      d
0    0.0  300.0  0.0  330.0
1  589.0  700.0  0.0  103.0
2    0.0    0.0  0.0  675.0
3    0.0    3.0  0.0    0.0

只对一列应用fillna()方法

df = pd.DataFrame([[np.nan, 300, np.nan, 330],
                     [589, 700, np.nan, 103],
                     [np.nan, np.nan, np.nan, 675],
                     [np.nan, 3]],
                    columns=list('abcd'))

print(df)

#Filling the NaN value 
print("\n")
newDF = df['b'].fillna(0)
print(newDF)

输出

 a      b   c      d
0    NaN  300.0 NaN  330.0
1  589.0  700.0 NaN  103.0
2    NaN    NaN NaN  675.0
3    NaN    3.0 NaN    NaN


0    300.0
1    700.0
2      0.0
3      3.0
Name: b, dtype: float64

你也可以使用limit方法来指定你要填充NAN值的行。

import pandas as pd
import numpy as np
df = pd.DataFrame([[np.nan, 300, np.nan, 330],
                     [589, 700, np.nan, 103],
                     [np.nan, np.nan, np.nan, 675],
                     [np.nan, 3]],
                    columns=list('abcd'))


print(df)

# Filing the NaN value 
print("\n")
print(df.fillna(0, limit=2))

输出

a      b   c      d
0    NaN  300.0 NaN  330.0
1  589.0  700.0 NaN  103.0
2    NaN    NaN NaN  675.0
3    NaN    3.0 NaN    NaN


       a      b    c      d
0    0.0  300.0  0.0  330.0
1  589.0  700.0  0.0  103.0
2    0.0    0.0  NaN  675.0
3    NaN    3.0  NaN    0.0

在上面的方法中,我们应用了limit=2,这意味着我们只替换了前两行的NAN值。

总结

综上所述,我们学习了不同的方法来填充DataFrame中的NAN值。所有这些方法将在你的任何数据分析项目中派上用场。