Python數據分析實戰:缺失值處理

寫在前面

上週咱們讀取完了數據(Python數據分析實戰:獲取數據),下面就要對數據進行清洗了,首先是對缺失值的處理。缺失值也就是空值,先找出來再處理。ide

查看缺失值

能夠使用isnull方法來查看空值,獲得的結果是布爾值。spa

# 查看缺失值
df_list.isnull()

結果:
3d

圖片
對於小的數據集來講,能夠這樣看,但對於大的數據集這樣查看空值貌似沒什麼意義,不要緊,還有其餘方法,能夠使用info方法code

# 查看空值
df_list.info()

結果:
orm

圖片
info方法能夠看到字段的數據類型以及每一個字段下有多少個非空值,能夠看到neighbourhood_group 字段全爲空,這和布爾值顯示的結果一致。blog

其實還有一個方法,更簡單了:索引

# 查看空值
df_list.isnull().sum()

對取出來的isnull的布爾值求和,就很明顯地看到,id列是沒有空值的,name列有一個空值,結果:
token

也能夠對單獨的某一列這樣查看空值,對name列查看空值圖片

# 對單獨一列查看空值
df_list["name"].isnull().sum()

結果爲1,說明name列有1個空值:
ci

缺失值的處理

找到缺失值之後如何處理呢?刪除或填充。

刪除缺失值

dropna方法,默認是隻要一行中有一個缺失值這一行就全都刪除

# 刪除缺失值
df_list.dropna()

結果就是這個數據集裏的數據全被刪掉了,由於其中的neighbourhood_group這個字段全爲空,按照dropna的尿性,有一個爲空就整行刪除,就獲得了以下結果:

固然也能夠給這個方法傳入how="all"參數,只有在整行爲空的前提下才刪除。

# 整行都爲空才刪除
df_list.dropna(how = "all")

結果是一條都沒有刪除,由於這個數據集裏沒有全部字段都爲空的記錄:


可是有一列數據都爲空的字段,把neighbourhood_group這一列刪掉,還記得刪除列的方法嗎

# 刪除列
df_list = df_list.drop(columns = "neighbourhood_group")
df_list

結果:

圖片
name列也是有一個空值的,找出來看一下

# 定位到name列的空值
df_list[df_list["name"].isnull()]

結果以下,這一行仍是刪了吧。

圖片
刪除行用drop方法,剛剛定位出了要刪除的那一行,行索引是456

# 刪除name列的空值的行
df_list = df_list.drop(index = 456)
df_list

結果能夠看到變成了28451行,以前一直都是28452行。

圖片

缺失值填充

固然缺失值除了刪除外,還能夠進行填充,能夠用0填充,也能夠用均值、衆數填充。用fillna方法進行缺失值的填充。

last_review和reviews_per_month這兩列也有缺失值,咱們用衆數填充(mode)last_review列的缺失值,用均值(mean)填充reviews_per_month列的缺失值。

# 缺失值填充
df_list.fillna({"last_review":df_list.last_review.mode(),
                 "reviews_per_month":df_list.reviews_per_month.mean()})

結果

圖片

這裏只是舉例缺失值也能夠被填充這樣處理,在這個案例裏,不建議這兩列填充,空着就空着吧。下節內容來處理重複值和異常值。

相關文章
相關標籤/搜索