函式下午茶(2):資料檢測與缺失值處理~
阿新 • • 發佈:2021-01-20
資料檢測與缺失值處理~
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’}, 填充缺失值 |
inplace | bool值,預設False。是否替換原資料。 |
limit | int型,預設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