【轉】Pandas學習筆記(四)處理丟失值

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
"""

pd.isnull()

判斷是否有缺失數據 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


MARSGGBO原創


若有意合做,歡迎私戳blog

郵箱:marsggbo@foxmail.com

2019-10-30 12:02:06

相關文章
相關標籤/搜索