1. 程式人生 > >Python修煉之NaN 和 None 的詳細比較

Python修煉之NaN 和 None 的詳細比較

任何型別的資料和nan做計算都是float型別


python原生的None和pandas, numpy中的numpy.NaN儘管在功能上都是用來標示空缺資料。但它們的行為在很多場景下確有一些相當大的差異。由於不熟悉這些差異,曾經給我的工作帶來過不少麻煩。 特此整理了一份詳細的實驗,比較None和NaN在不同場景下的差異。

實驗的結果有些在意料之內,有些則讓我大跌眼鏡。希望讀者看過此文後會None和NaN這對“小妖精”有更深的理解。

為了理解本文的內容,希望本文的讀者需要對pandas的Series使用有一定的經驗。

首先,匯入所需的庫

In[2]:

Python
123fromnumpy importNaN
frompandas importSeries,DataFrameimportnumpy asnp

資料型別?

None是一個python特殊的資料型別, 但是NaN卻是用一個特殊的float

In[3]:

Python
1type(None)

Out[3]:

Python
1NoneType

In[4]:

Python
1type(NaN)

Out[4]:

Python
1float

能作為dict的key?

In[5]:

Python
1{None:1}

Out[5]:

Python
1{None:1}

In[6]:

Python
1{NaN:1}

Out[6]:

Python
1{nan:1}

In[7]:

Python
1{None:1,NaN
:2}

Out[7]:

Python
1{nan:2,None:1}

都可以,而且會被認為是不同的key

Series函式中的表現

Series.map

In[8]:

Python
12s=Series([None,NaN,'a'])s

Out[8]:

Python
12340None1NaN2adtype:object

In[9]:

Python
1s.map({None:1,'a':'a'})

Out[9]:

Python
123401112adtype:object

相關推薦

Python修煉NaN None詳細比較

任何型別的資料和nan做計算都是float型別python原生的None和pandas, numpy中的numpy.NaN儘管在功能上都是用來標示空缺資料。但它們的行為在很多場景下確有一些相當大的差異。由於不熟悉這些差異,曾經給我的工作帶來過不少麻煩。 特此整理了一份詳細的實

資料庫中的空值與NULL的區別以及python中的NaNNone

資料庫裡面的”空值”有兩種:空字元(“”)、空值(NULL)。 兩種儲存方式在資料庫中都很常見,實際中根據業務或者個人習慣可以用這兩種方式來儲存“空值”。那這兩種到底有什麼區別,下面通過例子直接來展示: -- 建立表test create table `

PythonNaN None詳細比較

python原生的None和pandas, numpy中的numpy.NaN儘管在功能上都是用來標示空缺資料。但它們的行為在很多場景下確有一些相當大的差異。由於不熟悉這些差異,曾經給我的工作帶來過不少麻煩。 特此整理了一份詳細的實驗,比較None和NaN在不同場景下的差異。 實

143.Python修煉路【148-前端-移動端庫框架-BootStrap】2018.08.04

bootstrap 簡單、直觀、強悍的前端開發框架,讓web開發更迅速、簡單。 來自Twitter,是目前很受歡迎的前端框架之一。 Bootrstrap是基於HTML、CSS、JavaScript的,讓書寫程式碼更容易。 移動優先,響應式佈局開發。 bootstrap中文網址:http://

142.Python修煉路【147-前端-移動端庫框架-swiper】2018.08.04

swiper swiper.js是一款成熟穩定的應用於PC端和移動端的滑動效果外掛,一般用來觸屏焦點圖、觸屏整屏滾動等效果。 swiper分為2.x版本和3.x版本,2.x版本支援低版本瀏覽器(IE7),3.x放棄支援低版本瀏覽器,適合應用在移動端。 2.x版本中文網址:http://2.s

Python 基礎列表元組

bcp rtt fcn ott emd lns swe 二維數組 ttf list Python內置的一種數據類型是列表:list。list是一種有序的集合,可以隨時添加和刪除其中的元素。 比如,列出班裏所有同學的名字,就可以用一個list表示: >>

獨立python環境virtualenvvirtualenvwrapper

mark then 版本 ret 編輯 bashrc popu exp 影響 介紹 如果有一臺測試機,多個人使用,有多個項目,不同項目可能python版本號不一樣。須要的庫不一樣。我們須要一個獨立幹凈的python環境,互相隔離,互不影響。 virt

python學習range()xrange()

python2 har col 叠代 cnblogs 註意 tor 並不是 但是 在python2中,xrange()返回一個xrange對象,註意這個對象並不是生成器,也不是叠代器,但是是叠代對象。 而range()則返回列表對象。 >>> range

Python學習dictset

不可變 需要 after 集合 value 報錯 list 也會 如果 #coding=utf-8 # dict dict= {‘bob‘: 40, ‘andy‘: 30} print dict[‘bob‘] # 通過dict提供的get方法,如果key不存在,可以返回N

python基礎dictset

算法 dict name 區別 刪除元素 哈希算法 div 數學 blog dict dict是dictionary的縮寫,python內置了字典,在其他語言中也稱為map,使用鍵值對儲存,具有極快的查找速度。 如果是只用list來實現,就需要兩個list,先在第一個lis

不折騰,毋寧死。Python修煉路(目錄)

OS 交互 bytes 編碼 ext 基礎 while循環 進制 面向 目錄 一、Python基礎 二、函數和常用模塊 三、面向對象 四、網絡編程基礎 五、網絡編程進階 六、WEB開發基礎 七、WEB開發進階 八、算法與設計模式 一、Py

python學習breakcontinue在for循環中的使用(案例:打印出10以內的偶數,並且只要前三個偶數)

com python學習 bsp 次循環 bubuko python alt info 偶數 運行程序,break是整個程序都跳出 continue則表示跳過當前一次循環,然後繼續執行循環 python學習之break和continue在for循環中的使用(案例:打

python修煉路-day5

baby 哈希 cat lar default col none value pop 一.字典   字典的介紹:     1.用大括號{} 括起來. 內部使用key:value的形式來保存數據     2.註意:字典的key必須是可哈希的. 不可變的, value 沒有限制

Python語法選擇迴圈(if、while)

前言:在程式開發中,一共有三種流程方式: 順序:從上向下,順序執行程式碼 分支:根據條件判斷,決定執行程式碼的分支 迴圈:讓特定程式碼重複執行(解決程式設計師重複工作) 1.判斷的定義: 如果條件滿足,才能做某件事 如果條件不滿足,就做另外一件事情,或者什麼也不做 正是有了判斷,才使得程式世界豐富多彩,充滿

C++ Essentials lower_bound upper_bound 的比較函式格式不同

第一次注意到這個問題。 cppreference 上的條目: lower_bound upper_bound C++17 草案 N4659 lower_bound template<class ForwardIterator, class T> ForwardIterator lower_

26 Java學習NIOIO得比較

轉自:https://www.cnblogs.com/aspirant/p/8630283.html    一、概念      NIO即New IO(非阻塞IO),這個庫是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,

Python面試 is == 的區別

面試實習生的時候,當問到 is 和 == 的區別時,很多同學都答不上來,搞不清兩者什麼時候返回一致,什麼時候返回不一致。本文我們來看一下這兩者的區別。 我們先來看幾個例子: 上面的輸出結果中為什麼有的 is 和 == 的結果相同,有的不相同呢?我們來看下官方文件中對於 is 和

IOS多執行緒NSoperationGCD的比較

GCD是基於c的底層api,NSOperation屬於object-c類。iOS首先引入的是NSOperation,IOS4之後引入了GCD和NSOperationQueue並且其內部是用gcd實現的。 相對於GCD: 1,NSOperation擁有更多的函式可用,具體檢視api。

python基礎appendextend的區別

1.append a = [1,2,3] b=[1,2] a.append(b) ------------------------------------------------- a Out[60]: [1, 2, 3, [1, 2]] 將b作為整個元素append進去。 2.ext

python爬蟲xpathlxml解析內容

上兩章說了urllib和request庫如何訪問一個頁面或者介面,從而獲取資料,如果是訪問介面,還好說,畢竟返回的json還是很好解析的,他是結構化的,我們可以把它轉化成字典來解析,但是如果返回的是xml或者html,就有點麻煩了,今天就主要說一下如果解析這些h