1. 程式人生 > 其它 >函式下午茶(2):資料檢測與缺失值處理~

函式下午茶(2):資料檢測與缺失值處理~

技術標籤:資料分析python資料分析pandas

資料檢測與缺失值處理~

1.DataFrame.isnull()和notnull()函式

介紹

會返回DataFrame相同形狀的布林物件,指示是否有⽆空值。是⼀個⽆引數函式。

舉例

1 df = pd.DataFrame(dict(age=[5, 6, np.NaN],
2 born=[pd.NaT, pd.Timestamp('1939-05-27'),
3	pd.Timestamp('1940-04-25')],
4 name=['Alfred', 'Batman', ''],
5 toy=[None, 'Batmobile', 'Joker'
])) 6 df.isull() 7 >> age born name toy 8 0 False True False True 9 1 False False False False 10 True False False False

2.DataFrame.fillna()函式

介紹

該函式⼀般⽤來填充缺失值,基本使⽤⽅法如下

pandas.DataFrame.fillna(value=None, method=None, axis=None, inplace=False, limit=None)

引數介紹

引數介紹
value接受Series和DataFrame。填充值處理物件。
method{‘backfill’, ‘bfill’, ‘pad’, ‘ffill’,None},填充的⽅法。
axis{0 or ‘index’, 1 or ‘columns’}, 填充缺失值
inplacebool值,預設False。是否替換原資料。
limitint型,預設None。填充值限定個數。

舉例

1 df = pd.DataFrame([[np.nan, 2, np.nan, 0], 
2 [3, 4, np.nan, 1], 
3 [np.nan, np.nan, np.nan, 5], 
4 [np.nan, 3, np.nan, 4]], 
5 columns=list('ABCD'
)) 6 df 7 >> A B C D 8 0 NaN 2.0 NaN 0 9 1 3.0 4.0 NaN 1 10 2 NaN NaN NaN 5 11 3 NaN 3.0 NaN 4 12 13 #直接填充0 14 df.fillna(0) 15 >> A B C D 16 0 0.0 2.0 0.0 0 17 1 3.0 4.0 0.0 1 18 2 0.0 0.0 0.0 5 19 3 0.0 3.0 0.0 4 20 21 #按照⾏填充 22 values = {'A': 0, 'B': 1, 'C': 2, 'D': 3} 23 df.fillna(value=values) 24 >> A B C D 25 0 0.0 2.0 2.0 0 26 1 3.0 4.0 2.0 1 27 2 0.0 1.0 2.0 5 28 3 0.0 3.0 2.0 4

3.DataFrame.dropna()函式

介紹

移除缺失的值。

pandas.DataFrame.dropna(self,axis=0,how='any', thresh=None, subset=None, inplace=False)

引數說明

引數介紹
axis接收0或1。表示軸向,0為刪除觀測記錄(⾏),1為刪除特徵(列)。預設為0。
how接收特定string。表示刪除的形式。any表示只要有缺失值存在就執⾏刪除操作。all表示當且僅當全部為缺失值時執⾏刪除操 作。預設為any。
subset接收類array資料。表示進⾏去重的列∕⾏。預設為None,表示所有列/⾏。
inplace接收boolean。表示是否在原表上進⾏操作。預設為False。

便捷的刪除缺失值函式,有多種刪除缺失值⽅式。

舉例

1  df = pd.DataFrame({"name": ['Alfred', 'Batman', 'Catwoman'],
2		"toy": [np.nan, 'Batmobile', 'Bullwhip'],
3		"born": [pd.NaT, pd.Timestamp("1940-04-25"),
4		pd.NaT]})
5
6 df		
7 >>	name	toy	born
8 0 Alfred NaN NaT 
9 1 Batman Batmobile 1940-04-25 
10 2 Catwoman Bullwhip NaT 
11 
12 df.dropna() 
13 >> name toy born 
14 1 Batman Batmobile 1940-04-25 
15 
16 df.dropna(how='all') 
17 >> name toy born 
18 0 Alfred NaN NaT 
19 1 Batman Batmobile 1940-04-25 
20 2 Catwoman Bullwhip NaT 
21 
22 df.dropna(subset=['name', 'toy']) 
23 >> name toy born 
24 1 Batman Batmobile 1940-04-25 
25 2 Catwoman Bullwhip NaT