pandas缺失值np.nan, np.isnan, None, pd.isnull, pd.isna
np.nan != np.nan
在計算機中本沒有絕對絕對相等的數據,所謂的相等只是精度允許的條件下相等!np.nan 原意為 not a number。
概括:
- 對某個值是否為nan進行判斷,只能用np.isnan(i),絕不可用 i == np.nan 來判斷,因為nan具有不等于自身的屬性,應該使用np.isnan來測試nan值,如np.isnan(np.nan)將產生True;
- np.nan非空對象,其類型為基本數據類型float;
np.nan
| np.nan | |
|---|---|
| not a member | nan的含義是“not a number“,它是對array中缺失的數值的占位符 |
| type 為 float | 因為代表缺失的數值,np.nan的type是float |
| 可參與計算 | np.nan的type是float,所以np.nan可參與計算,且占主導地位,也就是算出的值都為np.nan |
| 不等于自身 | 如果用np.nan==np.nan,會發(fā)現返回的結果為False,如果用np.nan in array,也不能發(fā)現array中是否包含np.nan |
| np.isnan判斷是否存在np.nan | np.nan因為沒有等于的概念,所以要判斷是否存在np.nan,只可以用np.isnan來判斷 |
| np.isnan只可以判斷數值型 | 如果用np.isnan對其余type的array判斷,會報錯,np.isnan只可以判斷數字型array |
| 忽略np.nan的numpy計算 |
|---|
| nansum() |
| nanmax() |
| nanmin() |
| nanargmax() |
| nanargmin() |
nan和None
- python自帶的 None ,為 NoneType 類型, 代表空類型,不能參與運算;
- numpy中的 isnan 對應的是 NaN 值,代表“不是數字”,數值類型為 float ,數組中顯示為nan,能參與運算,但結果顯示為NaN;
None
| None | |
|---|---|
| NoneType | None的type為NoneType,是python內置的 |
| 不可參與計算 | None不可參與計算,否則報錯 |
| None is None 或者 None==None | 這兩種方式返回值都是True |
pd.isnull 和 pd.isna
| pd.isnull pd.isna | |
|---|---|
| pd.isnull 和 pd.isna是同一個東西 | 用命令pd.isnull==pd.isna,會發(fā)現返回值為True |
| None和np.nan在pandas中都是缺省值 | None和np.nan都會被pd.isnull或者pd.isna判斷為True |
| 可以判斷List或者單獨一個值 | pd.isnull和pd.isna的判斷對象可以為一個值或者一個list |
| pandas中缺省值不參與計算 | 當使用df.min()等計算時,會發(fā)現缺省值不參與計算 |
代碼示例
只可以用np.isnan判斷array中是否包含np.nan
a = np.array([1,2,3,4,np.nan]) a == np.nan >>> array([False, False, False, False, False]) np.nan in a >>> False np.isnan(a) >>> array([False, False, False, False, True])
np.nan可參與計算,np.nan占主導地位
a = np.array([1,2,3,4,np.nan]) a.max() >>> np.nan a.min() >>> np.nan b = np.array([1,np.nan,3,4,5]) a+b >>> array([ 2., nan, 6., 8., nan])
np.isnan只可以對數值型array判斷,當array中其余的元素為字符串是,array會將np.nan轉換成’nan’

在pandas中,np.nan和None都被視為缺省值
df = pd.DataFrame({'col1':['a','b','c','d'], 'col2':[1,2,3,4]})
df.loc[1,'col1'] = np.nan
df.loc[2,'col1'] = None
df
>>> col1 col2
0 a 1
1 NaN 2
2 None 3
3 d 4
pd.isna(df)
>>> col1 col2
0 False False
1 True False
2 True False
3 False False
pandas中缺省值不參與計算
df = pd.DataFrame(np.arange(8).reshape(2,4)) df.iloc[0,1] = None df.iloc[0,2] = np.nan df >>> 0 1 2 3 0 0 NaN NaN 3 1 4 5.0 6.0 7 df.min(axis=1) >>> 0 0.0 1 4.0 dtype: float64
到此這篇關于pandas缺失值np.nan, np.isnan, None, pd.isnull, pd.isna的文章就介紹到這了,更多相關 np.nan, np.isnan, None, pd.isnull, pd.isna內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python BeautifulSoup基本用法詳解(通過標簽及class定位元素)
這篇文章主要介紹了Python BeautifulSoup基本用法(通過標簽及class定位元素),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08

