大数据采集:fillna函数

1.为何用fillna函数 在数据确实比较多的状况下能够直接滤除,而缺失数据比较少的时候,进行数据填充是颇有必要的。 所以掌握fillna函数的用法就很重要,他就是解决如何处理一个DataFrame中的Nan值?html

 2.如下是它最简单的2个用法(没耐心的朋友,只须要看完这2个也够你用了): 1.空白值替换为缺省值:数据库

df = df.fillna(0) 数组

 大数据采集:fillna函数 函数

2.空白值按列替换为缺省值:大数据

你能够传入一个字典,但不能传入一个list。.net

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

首先经过pd.DataFrame()定义好一个数据库表,注意它是一个二维的数组,因此是[[ ]]定义。输出一下能够看到,有不少空值,接下来咱们就操做这个df对象。cdn

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')) dfhtm

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

做者:望隐少年 来源:CSDN 

原文:https://blog.csdn.net/u011495642/article/details/82859124 

相关文章
相关标签/搜索