最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(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的類(lèi)型是NoneType,需要的朋友可以參考下

一、python中None、null和NaN

注意:python中沒(méi)有null,只有和其意義相近的None。

1、None

1)數(shù)據(jù)類(lèi)型

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

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

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

在這里插入圖片描述

2)特征:

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

在這里插入圖片描述

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

對(duì)于所有沒(méi)有return語(yǔ)句的函數(shù)定義,python都會(huì)在末尾加上return None,使用不帶值的return語(yǔ)句(也就是只有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)將條目中沒(méi)有數(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是沒(méi)有辦法和任何數(shù)據(jù)進(jìn)行比較
  • 它和任何值都不相等,包括他自己。
  • 它的數(shù)類(lèi)型是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ù)庫(kù)下的整理好的表。

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

pandas讀取hive數(shù)據(jù)庫(kù)下面的數(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ù)庫(kù)表的字段為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ù)類(lèi)型的時(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ù)庫(kù)表建立將字段設(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)文章

  • python神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)使用Keras進(jìn)行回歸運(yùn)算

    python神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)使用Keras進(jìn)行回歸運(yùn)算

    這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)使用Keras進(jìn)行回歸運(yùn)算,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Python學(xué)習(xí)之直方圖均衡化原理詳解

    Python學(xué)習(xí)之直方圖均衡化原理詳解

    直方圖均衡化是以累計(jì)分布函數(shù)為核心,將原始圖像灰度直方圖從比較集中的某個(gè)灰度區(qū)間,非線性地映射為在全部灰度范圍內(nèi)的較均勻分布,從而增強(qiáng)對(duì)比度。本文將為大家詳細(xì)講解直方圖均衡化的原理,需要的可以參考一下
    2022-03-03
  • Python用input輸入列表的實(shí)例代碼

    Python用input輸入列表的實(shí)例代碼

    在本篇文章里小編給大家整理的是關(guān)于Python用input輸入列表的實(shí)例代碼,需要的朋友們可以參考下。
    2020-02-02
  • 使用Python進(jìn)行數(shù)獨(dú)求解詳解(一)

    使用Python進(jìn)行數(shù)獨(dú)求解詳解(一)

    本文主要介紹了如何構(gòu)建一個(gè)Python腳本來(lái)解決數(shù)獨(dú)難題,本文的重點(diǎn)在于介紹用于構(gòu)建數(shù)獨(dú)求解器的回溯算法。感興趣的小伙伴可以學(xué)習(xí)一下
    2022-02-02
  • Python在Excel中添加數(shù)據(jù)條的代碼詳解

    Python在Excel中添加數(shù)據(jù)條的代碼詳解

    在Excel中添加數(shù)據(jù)條是一種數(shù)據(jù)可視化技巧,它通過(guò)條形圖的形式在單元格內(nèi)直觀展示數(shù)值的大小,尤其適合比較同一列或行中各個(gè)單元格的數(shù)值,本文將介紹如何使用Python在Excel中的指定單元格區(qū)域添加數(shù)據(jù)條,需要的朋友可以參考下
    2024-10-10
  • Python OOP類(lèi)中的幾種函數(shù)或方法總結(jié)

    Python OOP類(lèi)中的幾種函數(shù)或方法總結(jié)

    今天小編就為大家分享一篇關(guān)于Python OOP類(lèi)中的幾種函數(shù)或方法總結(jié),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • 詳解python中docx庫(kù)的安裝過(guò)程

    詳解python中docx庫(kù)的安裝過(guò)程

    這篇文章主要介紹了python中docx庫(kù)的安裝過(guò)程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • python excel多行合并的方法

    python excel多行合并的方法

    這篇文章主要介紹了python excel多行合并的方法,幫助大家更好的利用python處理excel表格,感興趣的朋友可以了解下
    2020-12-12
  • Python中使用?zipfile創(chuàng)建文件壓縮工具

    Python中使用?zipfile創(chuàng)建文件壓縮工具

    這篇文章主要介紹了Python中使用zipfile創(chuàng)建文件壓縮工具,通過(guò)使用 wxPython 模塊,我們創(chuàng)建了一個(gè)簡(jiǎn)單而實(shí)用的文件壓縮工具,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的ca參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • pandas中8種常用的index 索引設(shè)置

    pandas中8種常用的index 索引設(shè)置

    在數(shù)據(jù)處理時(shí),經(jīng)常會(huì)因?yàn)閕ndex報(bào)錯(cuò)而發(fā)愁,本文主要介紹了pandas中8種常用的index 索引設(shè)置,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07

最新評(píng)論

宣汉县| 青海省| 增城市| 北川| 浦东新区| 阳新县| 连州市| 南澳县| 武陟县| 白银市| 霍州市| 马公市| 谢通门县| 行唐县| 西安市| 饶平县| 龙江县| 和龙市| 台中市| 宕昌县| 英山县| 牙克石市| 客服| 凤山县| 邵阳市| 岢岚县| 重庆市| 河曲县| 会宁县| 大安市| 阳江市| 澜沧| 云浮市| 博客| 洛阳市| 通渭县| 宁城县| 肥城市| 镇安县| 东丰县| 湛江市|