【小白从小学Python、C、Java】
【Python全国计算机等级考试】
【Python数据分析考试必会题】
● 标题与摘要
Python中缺失值的填充
fillna()函数

● 选择题
以下关于df.fillna(10,inplace=True)语句说法正确的是:
A 用10填补缺失值,df不发生改变
B 用10填补缺失值,df发生改变
C 该语句返回填补缺失值后的df
D 该语句的返回值为True

● 问题解析
1.df.fillna()函数的功能:该函数的功能是用指定的值去填充dataframe中的缺失值。
2.df.fillna()函数的基本语法:df.fillna(a,[inplace=False]),其中参数a表示的是常数或字典,若a为常数,则用常数a填充缺失值,若a为字典,则表示第key列的缺失值用key对应的value值填充,如:df.fillna({0:10,1:20}),表示用10去填充第0列的缺失值,用20去填充第1列的缺失值;inplace为可选参数,默认为False,表示不修改原对象,若指定inplace=True,则直接修改原对象。
3.df.fillna()函数的返回值:若指定inplace=True,则函数返回值为None,若未指定,则函数返回填充缺失值后的数据。
4.df.fillna()函数的用法补充:
4.1 指定method参数:
(1)method='ffill'或'pad',表示用前一个非缺失值去填充该缺失值,语法为df.fillna(method='ffill');
(2)method ='bflii'或'backfill',表示用下一个非缺失值填充该缺失值,语法为df.fillna(method='bflii');
4.2 指定limit参数和axis参数:limit参数用于指定每列或每行缺失值填充的数量,默认按列操作,axis参数用于指定对行还是对列操作。若axis=0,则对各行数据进行填充,若axis=1,则对各列数据进行填充,如:df.fillna(method='ffill', limit=1,axis=1)表示用上一个非缺失值填充该缺失值,且每行中只有一列被填充,因为method='ffill'并且limit=1,所以每行中只有最先出现缺失值的一列被填充,如附图2所示。
5.本题中:df.fillna(0,inplace=True)语句表示用0填补缺失值,因为指定inplace=True,所以df发生了改变,返回值为None。

​● 附图
图1 df.fillna()函数的基本语法

图2 df.fillna()函数的用法补充

● 附图代码

import pandas as pd

import numpy as np

from numpy import nan as NaN

df1=pd.DataFrame([[1,2,3],[NaN,NaN,2],

[NaN,NaN,NaN],[3,4,NaN]])

df1

df1.fillna(10) #用常数填充

df1.fillna({0:10,1:20,2:30}) #用字典填充

re =df1.fillna(10,inplace=True) #指定inplace=True

print(re)

df1

df2 = pd.DataFrame([[1,2,3],[1,NaN,2],

[3,NaN,NaN],[4,3,3]])

df2

df2.fillna(method='ffill') #用前一个非缺失值去填充该缺失值

df2.fillna(method='bfill') #用后一个非缺失值去填充该缺失值

df2.fillna(method='bfill',limit=1) #指定填充的缺失值数量

df2.fillna(method="ffill", limit=1, axis=1) #指定对行操作

● 正确答案
B

● 温馨期待
期待大家提出宝贵建议,互相交流,收获更大,助教:qmy

欢迎大家转发,一起传播知识和正能量,帮助到更多人。期待大家提出宝贵改进建议,互相交流,收获更大。辛苦大家转发时注明出处(也是咱们公益编程交流群的入口网址),刘经纬老师共享知识相关文件下载地址为:http://liujingwei.cn

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐