欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、python中None、null和NaN

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

1、None

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

None表示空值,一個特殊Python對象,None的類型是NoneType。

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

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

在這里插入圖片描述

2)特征:

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

在這里插入圖片描述

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

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

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

在這里插入圖片描述

2、NaN

1)當使用Numpy或者Pandas處理數(shù)據(jù)的時候,會自動將條目中沒有數(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ù)進行比較
  • 它和任何值都不相等,包括他自己。
  • 它的數(shù)類型是float,但是和任何值做計算的結(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

在這里插入圖片描述

二、實際應(yīng)用

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

使用hive進行數(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 值,讀取會直接轉(zhuǎn)換成字符串** ‘NULL’ **,如果該字段中含有’'(空值),讀取直接轉(zhuǎn)換成字符串 ** ‘’ **。

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

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

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

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

from pyhive import hive
import pandas as pd
import numpy as np
#缺失值統(tǒng)計
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))

運行代碼,結(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

一般默認為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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

    Python之Pygame的Draw繪圖

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

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

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

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

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

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

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

    python多線程方法詳解

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

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

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

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

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

    python爬蟲之爬取筆趣閣小說

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

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

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

最新評論