99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2021-03-08 閱讀量: 1607
老師,請(qǐng)教一下,為什么空值顯示有nan和NaN兩種?

學(xué)生:


老師,請(qǐng)教一下,為什么空值顯示有nan和NaN兩種?

9.png


nan是numpy.float64格式,NaN是float格式,兩者有什么不同嗎?

老師:


你可以認(rèn)為成沒有區(qū)別,只要確保你的變量的缺失值是float就可以了



具體一些細(xì)節(jié)嘗試如下:

演示數(shù)據(jù):

test3.xlsx

2.png

import pandas as pd

import numpy as np

data1=pd.read_excel(r"D:\python課程\數(shù)據(jù)清洗(5)\pandas\test3.xlsx")

4.png


#用spder導(dǎo)入數(shù)據(jù)之后,各個(gè)變量的類型是姓名:object,年齡:int64,身高:float64,體重:int64,性別:object

#

'''

身高列的缺失值在前臺(tái)顯示位nan,

data1.loc[2,"身高"]

Out[97]: nan

type(data1.loc[2,"身高"])

Out[99]: numpy.float64




性別列的缺失值在前臺(tái)顯示為NaN

data1.loc[1,"性別"]

Out[98]: nan

type(data1.loc[1,"性別"])

Out[100]: float


nan是numpy.float64類,NaN是float類,兩者有什么不同嗎?


data1.loc[2,"身高"]==data1.loc[1,"性別"]

Out[101]: False


a1=float(data1.loc[2,"身高"])

a2=data1.loc[1,"性別"]


a1

Out[107]: nan


a2

Out[108]: nan


type(a1)

Out[109]: float


type(a2)

Out[110]: float


a1==a2

Out[111]: False



可以看到a1和a2的值是一樣的,a1和a2的類也是一樣的,但是執(zhí)行雙等號(hào)的比較,返回還是False

這是什么原因?qū)е碌哪兀?/p>


a1

Out[122]: nan


a2

Out[123]: nan


id(a1)

Out[124]: 226363152


id(a2)

Out[125]: 82576464



可以看到兩個(gè)float變量的id是不一樣的。也就是說缺失值不能算是一個(gè)常量。也就是用各種庫(kù)生成的缺失值并不是電腦中的唯一儲(chǔ)存地址


isinstance(a1,np.float)

Out[133]: True


isinstance(a2,np.float)

Out[134]: True


a1==a2

Out[135]: False


isinstance(a1,float)

Out[136]: True


isinstance(a2,float)

Out[137]: True


然后我們嘗試將缺失值由float類型轉(zhuǎn)化為np.float64類型

b1=data1.loc[2,"身高"]

b2=np.float64(data1.loc[1,"性別"])


b1==b2

Out[152]: False


type(b1)

Out[153]: numpy.float64


type(b2)

Out[154]: numpy.float64




既然無論如何也不能讓兩者完全相等,而兩者都是float都是缺失值,也不影響在pandas中進(jìn)行缺失值的判斷

我們就把他們當(dāng)作無差別的float缺失值使用吧。





'''


總結(jié)發(fā)現(xiàn)。

  1. 如果一個(gè)Series對(duì)象的dtype是float64,如果這個(gè)series里面有一個(gè)缺失值,

這個(gè)缺失值在前臺(tái)就會(huì)顯示為nan,單獨(dú)看這一個(gè)缺失值的類型,會(huì)發(fā)現(xiàn)是np.float64類型

In [173]: data1["身高"]

Out[173]:

0 170.000

1 180.000

2 nan

3 180.000

Name: 身高, dtype: float64

In [177]: type(data1["身高"][2])

Out[177]: numpy.float64

2.如果將前面的序列,轉(zhuǎn)化為類型為 Object類型,這個(gè)時(shí)候缺失值在前臺(tái)顯示為NaN。

單獨(dú)看這一個(gè)缺失值的類型,會(huì)發(fā)現(xiàn)是float類型

m1=data1["身高"].astype(object)

In [176]: m1

Out[176]:

0 170.000

1 180.000

2 NaN

3 180.000

Name: 身高, dtype: object



type(m1[2])

Out[175]: float



3.也就是當(dāng)你的列或者說變量的dtype不一樣的時(shí)候,缺失值的顯示格式是不一樣的,可能顯示為nan也可能顯示為NaN,但都表示缺失值的意思。



In [166]: data1.loc[2,"性別"]=data1.loc[1,"身高"]


In [167]: data1

Out[167]:

姓名 年齡 身高 體重 性別

0 張三 18 170.000 180 男

1 李四 17 180.000 150 NaN

2 王五 16 nan 90 180.000

3 趙六 18 180.000 200 趙



這是在spyder中總結(jié)的規(guī)律,到了jupyter notebook中又會(huì)是另一番情景,不同的人和不同的數(shù)據(jù)、

軟件版本操作可能得到的結(jié)果又不一樣。

9.png

可以說缺失值在python里面算是一個(gè)比較神奇的存在,我們不要太糾結(jié)這些,只要是知道無論哪種格式,都會(huì)被缺失值檢測(cè)函數(shù)檢查出來就可以了。

0.0000
0
關(guān)注作者
收藏
評(píng)論(0)

發(fā)表評(píng)論

暫無數(shù)據(jù)
推薦帖子