1. 程式人生 > >Python資料處理之(十 三)Pandas 處理丟失資料

Python資料處理之(十 三)Pandas 處理丟失資料

建立含 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如何匯入匯出資料的過程。