Pandas中的缺失值處理

2021-09-27 10:57:25 字數 3182 閱讀 6474

相信大家在處理資料的時候經常會發現有一些資料的缺失,這個時候便會很頭大,因為有時候的缺失的資料是本來就沒有的,這些資料不管就好了,有的資料雖然沒有,但是也可以根據一些資料推算出來這個資料是多少然後給它填上,但是有的資料缺失是隨機缺失的完全不知道應該怎麼處理,所以呢今天我就帶大家了解一下資料中的缺失值以及如何對缺失值進行處理。

一、讀取資料

相信大家在使用python讀取資料的時候會出現這種報錯的情況。

這種情況是因為檔名中有中文,遇到這種情況第一種方式就是講檔名改為英文,或者這樣處理可以。

先使用open開啟,然後賦值給變數,然後關閉掉檔案,使用被賦值的變數就可以了。

二、處理缺失值

1、什麼是缺失值

俗話說知己知彼,百戰百勝,在處理缺失值之前我們首先要了解一下什麼是缺失值? 直觀上理解,缺失值表示的是「缺失的資料」。可以思考乙個問題:是什麼原因造成的缺失值呢?其實有很多原因,實際生活中可能由於有的資料不全所以導致資料缺失,也有可能由於誤操作導致資料缺失,又或者人為地造成資料缺失,但是主要的還是分為機械原因和人為原因。

機械原因是由於機械原因導致的資料收集或儲存的失敗造成的資料缺失,比如資料儲存的失敗,儲存器損壞,機械故障導致某段時間資料未能收集(對於定時資料採集而言)。

人為原因是由於人的主觀失誤、歷史侷限或有意隱瞞造成的資料缺失,比如,在市場調查中被訪人拒絕透露相關問題的答案,或者回答的問題是無效的,資料錄入人員失誤漏錄了資料

缺失值從缺失的分布來講可以分為完全隨機缺失,隨機缺失和完全非隨機缺失。

缺失值從缺失值的所屬屬性來講可以分為單值缺失,任意缺失和單調缺失。

在python中缺失值被認為是none、np.nan、nat的形式。

原理性的東西我們就說這麼多,下面我們進入**部門,首先我們人為的造成一些資料的缺失

然後我們生成一列英雄們的生日的資料列

檢視資料表的資訊。

2、轉換資料列的型別

這個時候我們通過info()方法發現生日列的型別是object的,需要將生日列的型別通過to_datetime()轉換為日期型

3、掩碼提取空值

首先使用isnull()或者notnull()來檢視是否缺失

isnull()是將缺失值判斷為true,非缺失值判斷為false

notnull()將缺失值判斷為false,非缺失值判斷為true

掩碼的其他用處

4.1、將不是地球的英雄提取出來

既然在資料中有缺失值了,常見的一種處理辦法就是丟棄缺失值。使用 dropna 方法可以丟棄缺失值。

user_info.dropna(axis=0,how='any',thresh=none,subset=none,inplace=false)

seriese使用dropna比較簡單,對於dataframe 來說,可以設定更多的引數。

axis 引數用於控制行或列,跟其他不一樣的是,axis=0 (預設)表示操作行,axis=1 表示操作列。

how 引數可選的值為 any(預設) 或者 all。any 表示一行/列有任意元素為空時即丟棄,all 一行/列所有值都為空時才丟棄。subset 引數表示刪除時只考慮的索引或列名。thresh引數的型別為整數,它的作用是,比如 thresh=3,會在一行/列中至少有 3 個非空值時將其保留。

三、填充缺失值

除了可以丟棄缺失值外,也可以填充缺失值,最常見的是使用fillna完成填充。fillna這個名字一看就是用來填充缺失值得嘛。

1、固定值填充

填充缺失值時,常見的一種方式是使用乙個標量來填充。比如我們可以將缺失的年齡都填充為0。

2、上下文填充

除了可以使用標量來填充之外,還可以使用前乙個或後乙個有效值來填充。設定引數method=』pad』或method=』ffill』可以使用前乙個有效值來填充。

設定參method='bfill'或method='backfill'可以使用後乙個有效值來填充。

除了通過fillna方法來填充缺失值外,還可以通過interpolate方法來填充。預設情況下使用線性差值,可以是設定method引數來改變方式。

3、替換缺失值

現在大家想一想,到底什麼才是缺失值呢,不要以為我前邊說過的那些none、np.nan、nat這些是缺失值,這些在pandas中被認為是缺失值,但是呢,在我們活生生的人眼中,某些異常值也會被當成缺失值來處理。

例如,在我們的儲存的使用者資訊中,假定我們限定使用者都是青年,出現了年齡為40的,我們就可以認為這是乙個異常值。

再比如,我們都知道性別分為男性(male)和女性(female),在記錄使用者性別的時候,對於未知的使用者性別都記為了「unknown」,很明顯,我們也可以認為「unknown」是缺失值。

除了這些,有時會也會出現一些空白的字串,這些也可以認為是缺失值。對於上面的這一系列問題,我們可以使用replace方法來替換缺失值。

除了我們自己手動丟棄、填充已經替換缺失值之外,我們還可以使用其他的物件來填充。

例如我們有兩個使用者年齡的series,其中乙個由缺失值,另外乙個沒有,我們可以額將沒有缺失值的series的元素傳給有缺失值的。

Pandas中的缺失值處理

相信大家在處理資料的時候經常會發現有一些資料的缺失,這個時候便會很頭大,因為有時候的缺失的資料是本來就沒有的,這些資料不管就好了,有的資料雖然沒有,但是也可以根據一些資料推算出來這個資料是多少然後給它填上,但是有的資料缺失是隨機缺失的完全不知道應該怎麼處理,所以呢今天我就帶大家了解一下資料中的缺失值...

Pandas 缺失值處理

二 處理缺失值 首先拿到乙份資料,以dataframe提取後,要檢視缺失值的情況 import pandas as pd df pd.read csv df.isnull 獲得true,false的返回值 df.isnull sum 判斷缺失的數量常用此介面來快速判斷各特徵的缺失值情況!df.dro...

Pandas缺失值處理

判斷資料是否為nan pd.isnull df pd.notnull df 判斷缺失值是否存在 np.all pd.notnull data 返回false代表有空值 np.any pd.isnull data 返回true代表有空值處理方式 2 替換缺失值 fillna value,inplace...