1. 程式人生 > >python空值的一些問題

python空值的一些問題

#轉自微信公眾號 每日一Python

在資料處理的過程中,經常會遇到資料為空的情況,然後踩到很多坑浪費很久的時間,今天總結一下Python中空值的情況,以防後續再掉進坑裡。

Python中空值一般有四種情況,None," ",False和NaN:

前三種類型中 列印 None == None ," " == " " ,False == False都能返回判斷True,但是np.NaN == np.NaN 卻返回為False,如圖:

要建立一個空值可以用np.NaN,而且type(np.NaN)是float型別,而type(None)是NoneType型別,type(" ")是字串型別,而在pandas中的資料型別例如Series和DataFrame中如果陣列中除了空值之外全部是數值型別則None會轉化正NaN

在Series或者DataFrame整體判斷是否為空時,用isnull(),返回一個布林型的矩陣;而且只有None 和NaN才被判斷為空值

要是判斷某一列中有空值存在,可以使用isnull().any():

當判斷單個值是否為空時,要用np.isnan(),但是np.isnan()只能用於數值型,NaN是Not a Number的縮寫;其他型別可以用type(x).__name__ == 'float'來判斷是否為空值,也可以利用np.NaN != np.NaN的特性來判斷(即自身不等於自身時,該值為空值),這些方法只適用於空值為NaN型別的,當空值型別為None時,可以使用type(x) .__name__ == 'NoneType'來判斷

可以用data[data.isnull().values==True]來篩選含有空值的行,但是如果某行有多個值是空值,則會重複次數出現,所以利用data[data.isnull().values==True].drop_duplicates()來去重:

為了將空值統一格式處理,可以在讀取資料是限制一下,read_csv(na_values='NULL')將空值統一成NaN處理。