本文目錄一覽:
- 1、請教python里有NaN這個東西嗎
- 2、在使用python中的concat 函數時,有一個數據顯示nan 是怎麼回事?
- 3、認識python中的inf和nan
- 4、數據庫中的空值與NULL的區別以及python中的NaN和None
請教python里有NaN這個東西嗎
Python 中表示 Not A Number 使用小寫的 nan
可以這樣定義一個 nan
a = float(‘nan’)
或者
from decimal import Decimal
a = Decimal(‘nan’)
最常見的計算有 無窮大 減 無窮大 結果為 nan
float(‘inf’) – float(‘inf’)
判斷一個數是不是 nan
import math
print(math.isnan(a))
nan 和 nan 的比較關係是 nan != nan
所以如果一個數 自身不等於自身 也可以判斷為 nan 類型
另外 numpy 里也有 NaN 的類型,不過不屬於 Python 原生就不說了
在使用python中的concat 函數時,有一個數據顯示nan 是怎麼回事?
說明你的樣本數據中有nan值,通常是因為原始數據中包含空字符串或None值引起的。
解決辦法是把樣本數據中包含nan值的數據剔除,
或者如果樣本數據都是數值的話可以把nan值都改成0。
認識python中的inf和nan
認識python中的inf和nan
python中的正無窮或負無窮,使用float(“inf”)或float(“-inf”)來表示。
這裡有點特殊,寫成:float(“inf”),float(“INF”)或者float(‘Inf’)都是可以的。
當涉及 和 比較時,所有數都比無窮小float(“-inf”)大,所有數都比無窮大float(“inf”)小。
相等比較時,float(“+inf”)與float(“+inf”)、float(“inf”)三者相等。即:
同樣地,float(“-inf”) == float(“-inf”) 返回也是True。
簡單的加,減,乘操作,還是會返回無窮。
特別地,0 * float(‘inf’) 結果為:nan
float(‘inf’) / float(‘inf’) 結果為:nan
float(‘inf’) – float(‘inf’) 結果為:nan
float(‘-inf’) – float(‘-inf’) 結果也為:nan
nan代表Not A Number(不是一個數),它並不等於0
因為nan不是一個數,所以相關計算都無法得到數字。
所有涉及nan的操作,返回的都是nan。
結果都是:nan
比較操作時,返回的都是False
特別注意兩個float(‘nan’)並不相等!
python中可以用math.isinf()與math.isnan()來判斷數據是否為inf或nan。
numpy中也有相類似的方法可用來判斷數據。
動手測試題:
0 / float(‘inf’) == 0 / float(‘-inf’) 結果是True 還是False?
參考資料:
Python 關於正負無窮float(『inf』)的一些用法
Stackoverflow.com上的問答:What is inf and nan?
數據庫中的空值與NULL的區別以及python中的NaN和None
null表示:不可用、未賦值、不知道、不適用,它既不是0也不是空格。記住:一個數值與null進行四則運算,其結果是null
空值和null的區別在於,在做count計算的時候:count(field_name),field_name的值為空值也會被計算在裏面(這一行統計有效),而null不會
python有兩種方式獲取數據:
1.
一種是把數據從mysql
中導出到txt或者csv,然後本地讀取;
2.
另一種是python直接鏈接數據庫,讀取數據;
第一種把數據從mysql導出後,python讀取時,空值和null在文件中都為null;python讀取之後為nan
第二種鏈接數據庫後,python能讀取表結構,數據庫的null對應列表中的none以及pandas中的nan(如果字段類型是時間,則為nat)。而數據庫中的空字符,則被識別為空字符。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/286178.html