大數據採集: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 

相關文章
相關標籤/搜索