Pandas學習筆記系列:html
原文:https://morvanzhou.github.io/tutorials/data-manipulation/np-pd/3-4-pd-nan/ 本文有刪改python
NaN
的矩陣有時候咱們導入或處理數據, 會產生一些空的或者是 NaN 數據,如何刪除或者是填補這些 NaN 數據就是咱們今天所要提到的內容.git
創建了一個6X4的矩陣數據而且把兩個位置的值爲空.github
dates = pd.date_range('20130101', periods=6) df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates, columns=['A','B','C','D']) df.iloc[0,1] = np.nan df.iloc[1,2] = np.nan """ A B C D 2013-01-01 0 NaN 2.0 3 2013-01-02 4 5.0 NaN 7 2013-01-03 8 9.0 10.0 11 2013-01-04 12 13.0 14.0 15 2013-01-05 16 17.0 18.0 19 2013-01-06 20 21.0 22.0 23 """
注意:如下函數並不會在原數據上作修改,只是會返回一個新的pandas.DataFrame
函數
pd.dropna()
若是想直接去掉有 NaN 的行或列, 能夠使用 dropna學習
df.dropna( axis=0, # 0: 對行進行操做; 1: 對列進行操做 how='any' # 'any': 只要存在 NaN 就 drop 掉; 'all': 必須所有是 NaN 才 drop ) """ A B C D 2013-01-03 8 9.0 10.0 11 2013-01-04 12 13.0 14.0 15 2013-01-05 16 17.0 18.0 19 2013-01-06 20 21.0 22.0 23 """
pd.fillna()
若是是將 NaN 的值用其餘值代替, 好比代替成 0:spa
df.fillna(value=0) """ A B C D 2013-01-01 0 0.0 2.0 3 2013-01-02 4 5.0 0.0 7 2013-01-03 8 9.0 10.0 11 2013-01-04 12 13.0 14.0 15 2013-01-05 16 17.0 18.0 19 2013-01-06 20 21.0 22.0 23 """
判斷是否有缺失數據 NaN, 爲 True 表示缺失數據:code
df.isnull() """ A B C D 2013-01-01 False True False False 2013-01-02 False False True False 2013-01-03 False False False False 2013-01-04 False False False False 2013-01-05 False False False False 2013-01-06 False False False False """
檢測在數據中是否存在 NaN, 若是存在就返回 True:htm
np.any(df.isnull()) == True # True