1. 程式人生 > >python-關於None,NaN , 空字元的比較與處理(1)

python-關於None,NaN , 空字元的比較與處理(1)

【問題描述】

在python中經常會遇到這三個特殊值情況。尤其是匯入資料檔案時,就會遇到這種問題(如csv檔案、資料庫資料等),這些型別的資料在函式中使用需要十分小心。下面對該型別資料進行分析。

【型別分析】

from numpy import NaN
from pandas import Series, DataFrame
import numpy as np
import pandas as pd
type(NaN)
float
type(None)
NoneType
type("")
str

可以看出三種在我們看來都是空值的數值,其變數型別是不同的。

【相關分析】

下面對該型別資料做相關的處理分析:(想到哪算哪)

首先,看pandas中對此類值的處理情況。

  • 先構造一個DataFrame
test = {"id":[1,2,3,4,5],"birthday":['2000-01-01','',None,'2000-01-19',NaN],"name":['王菲','莫文蔚',NaN,None,'林宥嘉'],"score":[100,99,NaN,98,None]}
test = pd.DataFrame(test)
test

  • 簡單統計計算
test['score'].count()
3
test['score'].sum()
297.0
test['birthday'].count()
3
從上面的例子可以看出,當進行count操作時,NaN和None都不計算在內,""則被計算在內;當進行sum等計算時,會對除NaN和None以外的值進行計算。
  • 資料型別轉換(初次嘗試)
假設我們想講test中score一列整列轉換為int型,則會提示如下報錯:
test['score']=test['score'].astype('int')

這是因為test的score一列中含有空值NaN,所以無法進行這一項操作,為此我們需要先做些其他的操作~

  • 空值填充
  1. fillna()

        這個函式可以使我們將空值填充為我們想要的任意值,比較常用~

test['name'] = test['name'].fillna('我是空的!')
test['birthday']=test['birthday'].fillna('空空如也!')
test


可以發現:1)fillna支援填入任何你想的值;2)fillna識別的空值是NaN和None

同時,fillna還支援:

        1) 用前一個數據替代:

test_1 = test.fillna(method='pad',limit = 1)
        2) 用後一個數據替代:
test_2 = test.fillna(method='bfill',limit = 1)

        3)用統計量來替代:

test_2 = test.fillna(test['score'].mean()) 

其中limit代表了允許每一列中多少個NA值被替代~

  • 資料型別轉換(二次嘗試)

這次我們先將score一列的值賦值為0,再進行轉換就可以啦~

test['score']=test['score'].fillna(0)
test['score']=test['score'].astype('int')
test

----------------------------分割線,先到這裡哈(2018-6-11)--------------------------------------



相關推薦

python-關於NoneNaN , 空字元比較處理1

【問題描述】在python中經常會遇到這三個特殊值情況。尤其是匯入資料檔案時,就會遇到這種問題(如csv檔案、資料庫資料等),這些型別的資料在函式中使用需要十分小心。下面對該型別資料進行分析。【型別分析】from numpy import NaN from pandas im

python pandas模塊,nba數據處理1

excel inpu con num 表結構 固定 sql 面向列 lines pandas提供了使我們能夠快速便捷地處理結構化數據的大量數據結構和函數。pandas兼具Numpy高性能的數組計算功能以及電子表格和關系型數據(如SQL)靈活的數據處理能力。它提供了復雜精細的

python機器學習::資料預處理1【轉】

轉載自:http://2hwp.com/2016/02/03/data-preprocessing/ 常見的資料預處理方法,以下通過sklearn的preprocessing模組來介紹; 1. 標準化(Standardization or Mean Removal and

可行動硬碟的寫入故障分析處理1----硬碟的寫入保護的去除

警告:關閉可移動磁碟的寫入保護可能會引起磁碟內原本為資料的可修復損壞(windows自帶的修復軟體或者其他的修復軟體可修復)變為資料的永久性損壞(不可恢復),請慎重考慮是否關閉。 注1:如果不確定可移動磁碟的錯誤型別可以使用windows自帶的檢錯工具檢查(可以進行修復)。 注2:資料的損壞

Python影象處理1:繪製圖像點和線影象輪廓直方圖

說明:此實驗主要是在Python中實現:繪製圖像,點和線,影象輪廓,直方圖 import tkFileDialog from PIL import Image from pylab import * #開啟一個對話方塊用來選擇一個檔案 filename = t

Android的事件分發dispatchTouchEvent攔截onInterceptTouchEvent處理onTouchEvent

在Android中,View的結構是樹狀的,所以,當觸發觸控事件的時候,其事件傳遞也是從上之下一層層的傳遞。下面我們結合例子來一點點進行分析。 首先,我們需要了解事件處理中的幾個方法: 1、在ViewGroup中,事件分為dispatchTouchEvent(事件的分發)

資料結構演算法1連結串列基於Python解決幾個簡單的面試題

最近頭一直很大,老闆不停地佈置各種任務,根本沒有時間幹自己的事情,真的好想鼓起勇氣和他說,我以後不想幹這個了,我文章也發了您就讓我安安穩穩混到畢業行不行啊……作為我們這些想要跨專業的人來說,其實很大的一個劣勢就是沒有經歷過一個計算機學科完整的培養,所以對計算機專業的一些很基本

python數字圖像處理1:環境安裝配置

rom ima 空間 都是 5.0 軟件 選項 png tar 轉載:https://www.cnblogs.com/denny402/p/5121501.html 一提到數字圖像處理編程,可能大多數人就會想到matlab,但matlab也有自身的缺點: 1

【AI基礎】python:openCV——圖像處理1

python python:openCV OpenCV圖像的基本操作 :使用包cv2,numpy import cv2 import numpy as np img = cv2.imread(‘1.jpg‘) cv2.imshow(‘image‘,img) k = cv2.waitKey(0) "

【ADNI】資料預處理1SPMCAT12

ADNI Series 1、【ADNI】資料預處理(1)SPM,CAT12 2、【ADNI】資料預處理(2)獲取 subject slices 3、【ADNI】資料預處理(3)CNNs 4、【ADNI】資料預處理(4)Get top k slices according to CNN

Python程式設計 簡單的影象處理1

Python程式設計 簡單的影象處理(1) 1.寫個濾鏡 照片照的好,不如濾鏡用得好!一款好的濾鏡軟體可以讓照片呈現不一樣的風格乃至風情,修理照片需要揚長避短達到最佳效果。可是濾鏡款式千百種,卻沒有一款專門為你設計??不如自己來寫個濾鏡吧! 1.先上一張圖: 藉助Python的兩個

python資料結構演算法1

資料結構與演算法(Python) Why?我們舉⼀個可能不太恰當的例⼦:如果將開發程式的過程⽐喻為作戰,我們碼農便是指揮作戰的將軍,⽽我們 所寫的程式碼便是⼠兵和武器。那麼資料結構和演算法是什麼?答⽈:兵法!我們可以不看兵法在戰場上⾁搏,如此,可能會勝利,可能會失敗。即使勝 利,可能也會付出巨⼤的代價。我們寫

深度優先搜尋和廣度優先搜尋的比較

深度優先搜尋和廣度優先搜尋的深入討論   (一)深度優先搜尋的特點是: (1)無論問題的內容和性質以及求解要求如何不同,它們的程式結構都是相同的,即都是深度優先演算法(一)和深度優先演算法(二)中描述的演算法結構,不相同的僅僅是儲存結點資料結構和產生規則以及輸出要求。

python之類物件1

面向物件程式設計是最有效的軟體編寫方法之一。編寫類時,定義一群物件都有的通用行為。基於類建立物件時,每個物件都自動具備這種通用行為,然後可以根據需要賦予每個物件的獨特的個性。 1. 類與物件的語法規範 關鍵字:class 語法: class 類名:   屬性值   類函式  

吳裕雄 python 資料處理1

import time print(time.time())print(time.localtime())print(time.strftime('%Y-%m-%d %X',time.localtime())) 繪圖顯示中文配置 import matplotlib.pyplot as plt

吳裕雄 python 數據處理1

amp groupby http port enc nco img value print import time print(time.time())print(time.localtime())print(time.strftime(‘%Y-%m-%d %X‘,time

python進階之資料分析展示

資料分析之表示 資料存取與函式 資料的CSV檔案存取 CSV (Comma‐Separated Value, 逗號分隔值) CSV是一種常見的檔案格式,用來儲存批量資料。 np.savetxt(frame, array, fmt=’%.

python進階之資料分析展示

資料分析之表示 NumPy庫入門 資料的維度 一維資料 一維資料由對等關係的有序或無序資料構成,採用線性方式組織。 例如:3.1413, 3.1398, 3.1404, 3.1401, 3.1349, 3.1376。 對應列

python進階之資料分析展示

資料分析之前奏 Anaconda IDE的使用方法 一個數據表達一個含義,一組資料表達一個或多個含義。 摘要 有損地提取資料特徵的過程。 基本統計(含排序)。 分佈/累計統計。 資料特徵。 相關性、

【ADNI】資料預處理1SPMCAT12;資料集

ADNI Series 1、【ADNI】資料預處理(1)SPM,CAT12 2、【ADNI】資料預處理(2)獲取 subject slices 3、【ADNI】資料預處理(3)CNNs 4、【ADNI】資料預處理(4)Get top k slices accordin