python中fillna函数的用法

fillna函数是Python中pandas库中的一个重要函数,用于填充数据中的缺失值。在数据处理和分析过程中,经常会遇到数据缺失的情况,这时fillna函数就能派上用场。

_x000D_

fillna函数的基本语法如下:

_x000D_

`python

_x000D_

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

_x000D_ _x000D_

其中,各参数的含义如下:

_x000D_

- value:用于填充缺失值的值,可以是一个标量值,也可以是一个字典或Series,用于根据索引对不同的列填充不同的值。

_x000D_

- method:用于指定填充缺失值的方法,可选的值有'backfill'、'bfill'、'pad'、'ffill',默认为None。'backfill'或'bfill'表示使用后一个非缺失值填充,'pad'或'ffill'表示使用前一个非缺失值填充。

_x000D_

- axis:用于指定填充的方向,可选的值有0或'index'、1或'columns',默认为None。当axis为0或'index'时,表示按列填充;当axis为1或'columns'时,表示按行填充。

_x000D_

- inplace:用于指定是否在原数据上进行修改,可选的值有True或False,默认为False。

_x000D_

- limit:用于指定连续缺失值的最大填充次数。

_x000D_

- downcast:用于指定数据类型的转换,可选的值有None、'infer'、'integer'、'signed'、'unsigned'、'float'。

_x000D_

**示例**:

_x000D_

假设有一个包含缺失值的数据表df:

_x000D_

`python

_x000D_

import pandas as pd

_x000D_

import numpy as np

_x000D_

df = pd.DataFrame({'A': [1, 2, np.nan, 4, 5],

_x000D_

'B': [6, np.nan, 8, np.nan, 10],

_x000D_

'C': [11, 12, 13, np.nan, 15]})

_x000D_ _x000D_

我们可以使用fillna函数对缺失值进行填充,示例如下:

_x000D_

`python

_x000D_

df.fillna(0)

_x000D_ _x000D_

执行上述代码后,会将df中的缺失值用0进行填充,得到的结果如下:

_x000D_ _x000D_

A B C

_x000D_

0 1.0 6.0 11.0

_x000D_

1 2.0 0.0 12.0

_x000D_

2 0.0 8.0 13.0

_x000D_

3 4.0 0.0 0.0

_x000D_

4 5.0 10.0 15.0

_x000D_ _x000D_

从结果可以看出,原先的缺失值被填充为了0。

_x000D_

**问:fillna函数如何处理不同列的缺失值?**

_x000D_

答:fillna函数可以根据字典或Series的方式,对不同的列填充不同的值。例如,假设有一个包含缺失值的数据表df:

_x000D_

`python

_x000D_

import pandas as pd

_x000D_

import numpy as np

_x000D_

df = pd.DataFrame({'A': [1, 2, np.nan, 4, 5],

_x000D_

'B': [6, np.nan, 8, np.nan, 10],

_x000D_

'C': [11, 12, 13, np.nan, 15]})

_x000D_ _x000D_

我们可以使用fillna函数对不同列的缺失值进行填充,示例如下:

_x000D_

`python

_x000D_

df.fillna({'A': 0, 'B': 999})

_x000D_ _x000D_

执行上述代码后,会将df中列'A'的缺失值用0进行填充,列'B'的缺失值用999进行填充,得到的结果如下:

_x000D_ _x000D_

A B C

_x000D_

0 1.0 6.0 11.0

_x000D_

1 2.0 999.0 12.0

_x000D_

2 0.0 8.0 13.0

_x000D_

3 4.0 999.0 NaN

_x000D_

4 5.0 10.0 15.0

_x000D_ _x000D_

从结果可以看出,列'A'的缺失值被填充为了0,列'B'的缺失值被填充为了999。

_x000D_

**问:fillna函数如何处理连续缺失值?**

_x000D_

答:fillna函数可以通过设置limit参数来指定连续缺失值的最大填充次数。例如,假设有一个包含连续缺失值的数据表df:

_x000D_

`python

_x000D_

import pandas as pd

_x000D_

import numpy as np

_x000D_

df = pd.DataFrame({'A': [1, np.nan, np.nan, 4, 5],

_x000D_

'B': [6, np.nan, np.nan, np.nan, 10],

_x000D_

'C': [11, 12, np.nan, np.nan, 15]})

_x000D_ _x000D_

我们可以使用fillna函数对连续缺失值进行填充,示例如下:

_x000D_

`python

_x000D_

df.fillna(0, limit=2)

_x000D_ _x000D_

执行上述代码后,会将df中的连续缺失值用0进行填充,但每列最多只填充2次,得到的结果如下:

_x000D_ _x000D_

A B C

_x000D_

0 1.0 6.0 11.0

_x000D_

1 0.0 0.0 12.0

_x000D_

2 0.0 0.0 0.0

_x000D_

3 4.0 NaN NaN

_x000D_

4 5.0 10.0 15.0

_x000D_ _x000D_

从结果可以看出,df中的连续缺失值被填充为了0,但每列最多只填充了2次。

_x000D_

**问:fillna函数如何在原数据上进行修改?**

_x000D_

答:fillna函数可以通过设置inplace参数为True,在原数据上进行修改。例如,假设有一个包含缺失值的数据表df:

_x000D_

`python

_x000D_

import pandas as pd

_x000D_

import numpy as np

_x000D_

df = pd.DataFrame({'A': [1, 2, np.nan, 4, 5],

_x000D_

'B': [6, np.nan, 8, np.nan, 10],

_x000D_

'C': [11, 12, 13, np.nan, 15]})

_x000D_ _x000D_

我们可以使用fillna函数在原数据上填充缺失值,示例如下:

_x000D_

`python

_x000D_

df.fillna(0, inplace=True)

_x000D_ _x000D_

执行上述代码后,会将df中的缺失值用0进行填充,并直接修改原数据df,得到的结果如下:

_x000D_ _x000D_

A B C

_x000D_

0 1.0 6.0 11.0

_x000D_

1 2.0 0.0 12.0

_x000D_

2 0.0 8.0 13.0

_x000D_

3 4.0 0.0 0.0

_x000D_

4 5.0 10.0 15.0

_x000D_ _x000D_

从结果可以看出,原数据df中的缺失值被填充为了0。

_x000D_

通过上述的介绍,我们了解了fillna函数的基本用法,以及其在处理不同列的缺失值、连续缺失值和在原数据上进行修改时的一些技巧。掌握了fillna函数的用法,我们能更加灵活地处理数据中的缺失值,提高数据处理和分析的效率。

_x000D_
申请14天超长免费试听资格
获取500G教程资料
姓名
电话
课程
立即申请