亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

關(guān)于Python數(shù)據(jù)處理中的None、NULL和NaN的理解與應(yīng)用

 更新時(shí)間:2023年08月24日 09:28:08   作者:sodaloveer  
這篇文章主要介紹了關(guān)于Python數(shù)據(jù)處理中的None、NULL和NaN的理解與應(yīng)用,None表示空值,一個(gè)特殊Python對(duì)象,None的類型是NoneType,需要的朋友可以參考下

一、python中None、null和NaN

注意:python中沒有null,只有和其意義相近的None。

1、None

1)數(shù)據(jù)類型

None表示空值,一個(gè)特殊Python對(duì)象,None的類型是NoneType。

None是NoneType數(shù)據(jù)類型的唯一值,我們不能創(chuàng)建其它NoneType類型的變量,但是可以將None賦值給任何變量。

type(None) #該值是一個(gè)空對(duì)象,空值是python里面一個(gè)特殊的值,用None表示。None不能理解為0,因?yàn)?是有意義,而None是一個(gè)特殊的空值。
type('')

在這里插入圖片描述

2)特征:

  • None不支持任何運(yùn)算
  • None和任何其他數(shù)據(jù)類型比較永遠(yuǎn)返回False
  • None有自己的數(shù)據(jù)類型NoneType,不能創(chuàng)建其他NoneType對(duì)象。(它只有一個(gè)值None)
  • None與0、空列表、空字符串不一樣。
  • None賦值給任何變量,也可以給None值變量賦值
  • None沒有像len、size等屬性,要判斷一個(gè)變量是否為None,直接使用。
None==0 
None==‘'
None==False
dir(None) #返回參數(shù)屬性、方法列表

在這里插入圖片描述

3)作為沒有return關(guān)鍵函數(shù)的返回值

對(duì)于所有沒有return語句的函數(shù)定義,python都會(huì)在末尾加上return None,使用不帶值的return語句(也就是只有return關(guān)鍵字本身),那么就返回None。

def fun1():
	print('test')
result=fun()
print(result)

在這里插入圖片描述

2、NaN

1)當(dāng)使用Numpy或者Pandas處理數(shù)據(jù)的時(shí)候,會(huì)自動(dòng)將條目中沒有數(shù)據(jù)轉(zhuǎn)換為NaN。

import pandas as pd
df=pd.read_csv('F:\\python_test\\demo.csv',header=None)
print(df)

原數(shù)據(jù)為下圖:

在這里插入圖片描述

在這里插入圖片描述

2)特征

  • NaN是沒有辦法和任何數(shù)據(jù)進(jìn)行比較
  • 它和任何值都不相等,包括他自己。
  • 它的數(shù)類型是float,但是和任何值做計(jì)算的結(jié)果都是NaN
frame= pd.DataFrame([[1, 2, 3], 
                    [2, 3, 4],
                    [3, 4, np.nan]],
                   index=list('abc'), columns=list('ABC'))
num=frame.iloc[2,2]
result=num+2
result

在這里插入圖片描述

二、實(shí)際應(yīng)用

1、使用read_sql讀取null數(shù)據(jù)顯示NaN

使用hive進(jìn)行數(shù)據(jù)清洗、特征處理后,用python讀取hive數(shù)據(jù)庫下的整理好的表。

一般使用pyhive連續(xù)數(shù)據(jù)庫,pandas讀取數(shù)據(jù)。

pandas讀取hive數(shù)據(jù)庫下面的數(shù)據(jù)表

1、如果數(shù)據(jù)表字段為string格式,pandas讀取后在python中該字段數(shù)據(jù)格式為object,如果該字段中含有 NULL 值,讀取會(huì)直接轉(zhuǎn)換成字符串** ‘NULL’ **,如果該字段中含有’'(空值),讀取直接轉(zhuǎn)換成字符串 ** ‘’ **。

2、如果數(shù)據(jù)表字段為int格式,pandas讀取后在python中該字段數(shù)據(jù)格式為float64,如果該字段中含有 NULL 值或者 ‘’(空值),讀取直接轉(zhuǎn)換成字符串 NaN

如果數(shù)據(jù)庫表的字段為string,字段中含NULL,多數(shù)意義就是默認(rèn)為空值或者異常數(shù)值,使用pd.DataFrame或者read_sql()讀取,默認(rèn)為字符串‘NULL’。

因此對(duì)此進(jìn)行數(shù)值處理會(huì)導(dǎo)致很多報(bào)錯(cuò)(比如ValueError: could not convert string to float: ‘NULL’),比如想要在python轉(zhuǎn)換數(shù)據(jù)類型的時(shí)候,或者想要對(duì)null進(jìn)行缺失值填充等等。

因此想要將“NULL”轉(zhuǎn)換成“NaN”,后續(xù)更加方便。

from pyhive import hive
import pandas as pd
import numpy as np
#缺失值統(tǒng)計(jì)
def na_count(data):
    data_count=data.count()
    na_count=len(data)-data_count
    na_rate=na_count/len(data)
    na_result=pd.concat([data_count,na_count,na_rate],axis=1)
    return na_result
sql='''select is_vice_card,online_days,age,payment_type
,star_level_int,cert_cnt,channel_nbr,payment_method_variable,package_price_group,white_flag
 from database.v1_6_501_train_test'''
con=hive.connect(host='b1m6.hdp.dc',port=10000,auth='KERBEROS',kerberos_service_name="hive") 
cursor=con.cursor()
cursor.execute(sql) #執(zhí)行sql
result=cursor.fetchall()
data_pos_1=pd.DataFrame(result,columns=['is_vice_card',
		'online_days',
		'calling_cnt',
		'age',
		'payment_type',
		'star_level_int',
		'cert_cnt',
		'channel_nbr',
		'payment_method_variable',
		'package_price_group'])
print("未將‘NULL'替換成np.nan,查看train_data的缺失值:\n",na_count(data_pos_1))
#將str字段中的null轉(zhuǎn)換成空值		
data_pos_1.loc[data_pos_1['is_vice_card']=='NULL','is_vice_card'] = np.nan
data_pos_1.loc[data_pos_1['online_days']=='NULL','online_days'] = np.nan
data_pos_1.loc[data_pos_1['age']=='NULL','age'] = np.nan
data_pos_1.loc[data_pos_1['payment_type']=='NULL','payment_type'] = np.nan
data_pos_1.loc[data_pos_1['star_level_int']=='NULL','star_level_int'] = np.nan
data_pos_1.loc[data_pos_1['cert_cnt']=='NULL','cert_cnt'] = np.nan
data_pos_1.loc[data_pos_1['channel_nbr']=='NULL','channel_nbr'] = np.nan
data_pos_1.loc[data_pos_1['payment_method_variable']=='NULL','payment_method_variable'] = np.nan
data_pos_1.loc[data_pos_1['package_price_group']=='NULL','package_price_group'] = np.nan
print("將‘NULL'替換成np.nan,查看train_data的缺失值:\n",na_count(data_pos_1))

運(yùn)行代碼,結(jié)果顯示:

查看未將“NULL”替換成np.nan,data_pos_1的缺失值:
                             0  1    2
is_vice_card             8289  0  0.0
online_days              8289  0  0.0
calling_cnt              8289  0  0.0
age                      8289  0  0.0
payment_type             8289  0  0.0
star_level_int           8289  0  0.0
cert_cnt                 8289  0  0.0
channel_nbr              8289  0  0.0
payment_method_variable  8289  0  0.0
package_price_group      8289  0  0.0
查看將“NULL”替換成np.nan,data_pos_1的缺失值:;
                             0     1         2
is_vice_card             7854   435  0.052479
online_days              7854   435  0.052479
calling_cnt              8289     0  0.000000
age                      7854   435  0.052479
payment_type             7854   435  0.052479
star_level_int           7830   459  0.055375
cert_cnt                 6134  2155  0.259983
channel_nbr              7847   442  0.053324
payment_method_variable  7890   399  0.048136
package_price_group      8289     0  0.000000

也可以在數(shù)據(jù)庫表建立將字段設(shè)置為int。

2、使用read_csv讀取null數(shù)據(jù)顯示為字符串null

一般默認(rèn)為NaN

import pandas as pd
data_pos=pd.read_csv(file_pos,encoding='utf-8')
data_pos.head(10)

在這里插入圖片描述

顯示為字符串為null

import pandas as pd
data_pos=pd.read_csv(file_pos,encoding='utf-8', na_filter=False)
#或
data_pos=pd.read_csv(file_pos,encoding='utf-8', keep_default_na=False)
#查看data_pos數(shù)據(jù)格式
data_pos[data_pos['online_days']=='NULL'].head(10)

在這里插入圖片描述

到此這篇關(guān)于關(guān)于Python數(shù)據(jù)處理中的None、NULL和NaN的理解與應(yīng)用的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)處理中的空值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談tensorflow中幾個(gè)隨機(jī)函數(shù)的用法

    淺談tensorflow中幾個(gè)隨機(jī)函數(shù)的用法

    今天小編就為大家分享一篇淺談tensorflow中幾個(gè)隨機(jī)函數(shù)的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Python之Pygame的Draw繪圖

    Python之Pygame的Draw繪圖

    Pygame 中提供了一個(gè)draw模塊用來繪制一些簡(jiǎn)單的圖形狀,比如矩形、多邊形、圓形、直線、弧線等。本文主要介紹Pygame中的Draw繪圖,感興趣的同學(xué)可以參考閱讀
    2023-04-04
  • python使用if語句實(shí)現(xiàn)一個(gè)猜拳游戲詳解

    python使用if語句實(shí)現(xiàn)一個(gè)猜拳游戲詳解

    這篇文章主要介紹了python使用if語句實(shí)現(xiàn)一個(gè)猜拳游戲詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python Opencv實(shí)現(xiàn)圖像輪廓識(shí)別功能

    Python Opencv實(shí)現(xiàn)圖像輪廓識(shí)別功能

    這篇文章主要為大家詳細(xì)介紹了Python Opencv實(shí)現(xiàn)圖像輪廓識(shí)別功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • Python實(shí)現(xiàn)RSA加密解密

    Python實(shí)現(xiàn)RSA加密解密

    這篇文章主要介紹了Python實(shí)現(xiàn)RSA加密解密,加密技術(shù)在數(shù)據(jù)安全存儲(chǔ),數(shù)據(jù)傳輸中發(fā)揮著重要作用,能夠保護(hù)用戶隱私數(shù)據(jù)安全,防止信息竊取。RSA是一種非對(duì)稱加密技術(shù),在軟件、網(wǎng)頁中已得到廣泛應(yīng)用,下面文章更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-04-04
  • python多線程方法詳解

    python多線程方法詳解

    大家好,本篇文章主要講的是python多線程方法詳解,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • keras load model時(shí)出現(xiàn)Missing Layer錯(cuò)誤的解決方式

    keras load model時(shí)出現(xiàn)Missing Layer錯(cuò)誤的解決方式

    這篇文章主要介紹了keras load model時(shí)出現(xiàn)Missing Layer錯(cuò)誤的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • TensorFlow安裝并在Pycharm搭建環(huán)境的詳細(xì)圖文教程

    TensorFlow安裝并在Pycharm搭建環(huán)境的詳細(xì)圖文教程

    今天動(dòng)手開始搭建TensorFlow開發(fā)環(huán)境,所以下面這篇文章主要給大家介紹了關(guān)于TensorFlow安裝并在Pycharm搭建環(huán)境的詳細(xì)圖文教程,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • python爬蟲之爬取筆趣閣小說

    python爬蟲之爬取筆趣閣小說

    這篇文章主要介紹了python爬蟲之爬取筆趣閣小說,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python爬蟲的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-04-04
  • Django應(yīng)用程序中如何發(fā)送電子郵件詳解

    Django應(yīng)用程序中如何發(fā)送電子郵件詳解

    我們常常會(huì)用到一些發(fā)送郵件的功能,比如有人提交了應(yīng)聘的表單,可以向HR的郵箱發(fā)郵件,這樣,HR不看網(wǎng)站就可以知道有人在網(wǎng)站上提交了應(yīng)聘信息。下面這篇文章就介紹了在Django應(yīng)用程序中如何發(fā)送電子郵件的相關(guān)資料,需要的朋友可以參考借鑒。
    2017-02-02

最新評(píng)論