Python資料處理之(十 三)Pandas 處理丟失資料
阿新 • • 發佈:2018-11-24
建立含 NaN 的矩陣
有時候我們匯入或處理資料, 會產生一些空的或者是NaN
資料,如何刪除或者是填補這些 NaN
資料就是我們今天所要提到的內容.
建立了一個6X4
的矩陣資料並且把兩個位置置為空.
>>> dates=pd.date_range('20181121',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
>>> df
A B C D
2018-11-21 0 NaN 2.0 3
2018-11-22 4 5.0 NaN 7
2018-11-23 8 9.0 10.0 11
2018-11-24 12 13.0 14.0 15
2018-11-25 16 17.0 18.0 19
2018-11-26 20 21.0 22.0 23
pd.dropna()
如果想直接去掉有 NaN 的行或列, 可以使用 dropna
axis=0, # 0: 對行進行操作; 1: 對列進行操作
how=‘any’ # ‘any’: 只要存在 NaN 就 drop 掉; ‘all’: 必須全部是 NaN 才 drop
>>> df.dropna(axis=0,how='any')
A B C D
2018-11-23 8 9.0 10.0 11
2018-11-24 12 13.0 14.0 15
2018-11-25 16 17.0 18.0 19
2018-11-26 20 21.0 22.0 23
pd.fillna()
如果是將 NaN
的值用其他值代替, 比如代替成0
:
>>> df.fillna(value=0)
A B C D
2018-11-21 0 0.0 2.0 3
2018-11-22 4 5.0 0.0 7
2018-11-23 8 9.0 10.0 11
2018-11-24 12 13.0 14.0 15
2018-11-25 16 17.0 18.0 19
2018-11-26 20 21.0 22.0 23
pd.isnull()
判斷是否有缺失資料NaN
, 為True
表示缺失資料:
>>> df.isnull()
A B C D
2018-11-21 False True False False
2018-11-22 False False True False
2018-11-23 False False False False
2018-11-24 False False False False
2018-11-25 False False False False
2018-11-26 False False False False
檢測在資料中是否存在NaN
, 如果存在就返回True
:
>>> np.any(df.isnull()==True)
True
下次課會將pandas如何匯入匯出資料的過程。