大資料採集:fillna函式
大資料採集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函式
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指定填充方法時,才可以改變填充方向。
執行結果
廉潔:h.................e................m..................a...........c.............o.............m
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69903461/viewspace-2654168/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料採集知識分享|4大資料採集方式都有什麼?大資料
- 大資料技術之資料採集篇大資料
- 定製化大規模網路資料採集企業級資料採集一站式解決方案
- 大資料如何採集資料?大資料的資料從何而來?大資料
- 玩轉大資料系列之一:資料採集與同步大資料
- 資料分析的根基:資料採集的4大基本特徵特徵
- 【Python資料採集】國家自然科學基金大資料知識管理服務門戶資料採集Python大資料
- 分散式及高可用後設資料採集原理分散式
- 網路分流器-移動信令採集裝置-大資料採集方案大資料
- 亮資料:高效率資料採集,加速大模型訓練!大模型
- 談談大資料採集和常見問題大資料
- 大資料採集之後,怎麼分析才好呢?大資料
- 工商資訊資料採集思路
- amazon產品採集資料
- phpQuery採集網站資料PHP網站
- 資料採集實驗四
- 資料採集作業3
- 資料採集作業二
- 資料採集作業四
- 資料採集作業4
- 資料採集作業2
- vivo大資料日誌採集Agent設計實踐大資料
- 地圖資料採集,包括百度地圖採集,高德地圖採集,360地圖採集地圖
- 鑲嵌資料集工具小結(十)函式鏈函式
- 每秒採集幾十萬資料的大規模分散式爬蟲是如何煉成的?分散式爬蟲
- 【大資料開發】Hive——Hive函式大全大資料Hive函式
- 遊戲平臺採集資料遊戲
- 資料採集的方法有哪些
- 資料採集工具是什麼
- 大資料工程師入門系列—常用資料採集工具(Flume、Logstash 和 Fluentd)大資料工程師
- 大資料技術是如何採集到我們的資訊的呢?大資料
- 前端埋點資料採集(一)採集系統架構設計前端架構
- 【京東】商品list列表採集+類目下的商品列表資料採集
- Pandas fillna('Missing')
- 電商平臺資料採集介面
- PHP 資料採集的一種思路PHP
- 資料採集實踐作業2
- 高效採集資料業務更安心