ITPub博客

首页 > 大数据 > 数据分析 > 大数据采集:fillna函数

大数据采集:fillna函数

数据分析 作者:阿布多abu 时间:2019-08-19 16:59:57 0 删除 编辑

大数据采集fillna函数(空白值的填充)

1.为什么用fillna函数 在数据确实比较多的情况下可以直接滤除,而缺失数据比较少的时候,进行数据填充是很有必要的。 因此掌握fillna函数的用法就很重要,他就是解决如何处理一个DataFrame中的Nan值? 2.以下是它最简单的2个用法(没耐心的朋友,只需要看完这2个也够你用了): 1.空白值替换为缺省值:

df = df.fillna(0)   大数据采集:fillna函数 2.空白值按列替换为缺省值:

你可以传入一个字典,但不能传入一个list。

df.fillna({'temperature':10,'windspeed':2,'weather':'sunny'}) 大数据采集:fillna函数 3.创建一个DataFrame,来练习下fillna函数 pd是我定义的pandas的别名,DataFrame是它的一个数据类型,可以理解为一个数据库表。

首先通过pd.DataFrame()定义好一个数据库表,注意它是一个二维的数组,所以是[[ ]]定义。输出一下可以看到,有很多空值,接下来我们就操作这个df对象。

df = pd.DataFrame([[np.nan,2,np.nan,0], [3,4,np.nan,1], [np.nan,np.nan,np.nan,5], [np.nan,3,np.nan,4]], columns=list('ABCD')) df

Out[60]: A B C D 0 NaN 2.0 NaN 0 1 3.0 4.0 NaN 1 2 NaN NaN NaN 5 3 NaN 3.0 NaN 4 大数据采集:fillna函数

text 4.fillna函数每个参数的含义(重要): 【value】 表示我给NaN位置填充一个值(比如0),或者我给每个索引(对于Series其实就是一行,只不过没这个概念)或者列(对于DataFrame就是按列来替换空值。)   value可以是:默认值为None,变量、字典、Series、DataFrame,就是不能是list。

【method 】表示:这几个参数的默认值都是None,使用方法来填充NaN值。

其中

backfill和bfill:是用每一列后面的值填充前面的空白(back后面)

pad和ffill:都是用前面的值填充后面的空白(front前面)

None:指定一个值去替换缺省值(默认方式,其实还是用value)

【limit】表示:我要填充几个空白值

【inplace】表示:True or False (注意别写成true or false)

True:直接修改原对象

False:创建一个副本,修改副本,原对象不变(缺省默认)·

如果这个属性不写,也不会有默认值False,但如果写出来不赋值就是False了,那你需要用一个新变量来接收fillna函数的执行结果。

【axis】表示:修改填充方向

{0 or ‘index’, 1 or ‘columns’} 0也表示按行填充,1也表示按列填充。必须和method配合使用。

【downcast】表示:dict, 默认是 None; 如果可能的话,把 item->dtype 的字典将尝试向下转换为适当的相等类型的字符串(例如,如果可能的话,从float64到int64)【说实话,所有参数里就这个没看懂,网上也没搜到例子。由于搜索的时间成本太高,我先放弃这个参数了。downcast的英文看起来是向下转型。】

【**kwargs】表示:*args大家都知道代表数组, kwargs其实就是字典。这只是形参,真正有意义的是 两个星号就代表字典。

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

大数据采集:fillna函数 5.fillna函数的全部例子

例子1:NaN值全替换为0

df.fillna(0) A B C D 0 0.0 2.0 0.0 0 1 3.0 4.0 0.0 1 2 0.0 0.0 0.0 5 3 0.0 3.0 0.0 4 例子2:向前或向后传播

df.fillna(method='ffill')

Out[62]: A B C D 0 NaN 2.0 NaN 0 1 3.0 4.0 NaN 1 2 3.0 4.0 NaN 5 3 3.0 3.0 NaN 4

//和原来的对比,看看是不是用前面的值填上了后面的空白。

Out[60]: A B C D 0 NaN 2.0 NaN 0 1 3.0 4.0 NaN 1 2 NaN NaN NaN 5 3 NaN 3.0 NaN 4

例子3:用字典来替换每一列的空白值

values = {'A': 0, 'B': 1, 'C': 2, 'D': 3}

df.fillna(value=values) Out[64]: A B C D 0 0.0 2.0 2.0 0 1 3.0 4.0 2.0 1 2 0.0 1.0 2.0 5 3 0.0 3.0 2.0 4

例子4:limit限定填充几个空白值

df.fillna(value=values, limit=1)

//只替换第一个空白值 Out[65]: A B C D 0 0.0 2.0 2.0 0 1 3.0 4.0 NaN 1 2 NaN 1.0 NaN 5 3 NaN 3.0 NaN 4

例子5:axis属性改变填充方向

df2.fillna(method="ffill", limit=1, axis=1)

//试了半天发现,不可以给一个字典,然后axis改变填充方向,那样机器分析不出来要怎么填,它会觉得你给的都是确定的,没办法改变填充方向。只有当你用method指定填充方法时,才可以改变填充方向。

运行结果

text

廉洁:h.................e................m..................a...........c.............o.............m


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69903461/viewspace-2654168/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-12-21

  • 博文量
    17
  • 访问量
    7396