天天看點

python檢測缺失值_python缺失值的填充

今天分享的是在資料分析中處理缺失值的方法和python的實作。

那為什麼我們要對缺失值進行填充呢,想象你需要分析産品的銷售和顧客資料,你注意到很多元組的屬性否沒有記錄值,怎樣才能為該屬性天上缺失值呢?

一般的方法:①忽略該元組,在csv檔案中來說就是删除這一行資料。這種方法除非在該行缺失很多屬性值的情況下使用,否則不是很有效。②人工填寫缺失值,這種方法對于資料量和缺失量較小的資料來說還可以,在大量的資料下,未免太過于麻煩。③使用給定元組的相似元組的該屬性值進行填充。④使用該屬性的中位數、均值、衆數等進行填充。

我認為有兩種方法都有一定的可取性,今天分享的就是我在實際分析中用到的方法④。下圖是我用到的資料,包含客戶id、年齡範圍、家裡車保有量。我們可以看到有很多的缺失值,先分析資料,發現客戶年齡範圍在26-35的客戶很多占比70%左右,于是年齡段選取衆數填充發,車保有量本來這個資料是客戶自己填寫,将空着的客戶我們預設為”無“進行填充。

python檢測缺失值_python缺失值的填充

下面我們先檢視一下缺失值的個數,看到年齡範圍缺失913個,家裡車保有量1979個。

#encoding:utf-8"""缺失值的處理"""

import pandas as pd

data = pd.read_csv("File/data.csv")

#判斷資料是否為空

print(data.isnull().sum())

python檢測缺失值_python缺失值的填充

接下來對缺失值進行處理,處理完并檢視目前缺失值,從圖中可以看出目前無缺失值了。

#encoding:utf-8"""缺失值的處理"""

import pandas as pd

data = pd.read_csv("File/data.csv")

#判斷資料是否為空

print(data.isnull().sum())

#用年齡衆數替代缺失值,用無替代車輛的缺失值

data.fillna(value={'age_range':data['age_range'].mode()[0],

'cars':'無'},

inplace=True )#原地修改資料

print(data.isnull().sum())

python檢測缺失值_python缺失值的填充