Python數據分析:缺失值處理

寫在前面

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

查看缺失值

可以使用isnull方法來查看空值,得到的結果是布爾值。

# 查看缺失值
df_list.isnull()

結果:

 


對於小的數據集來說,可以這樣看,但對於大的數據集這樣查看空值貌似沒什麼意義,沒關係,還有其他方法,可以使用info方法

 

# 查看空值
df_list.info()

結果:

 


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

 

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

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

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

 

也可以對單獨的某一列這樣查看空值,對name列查看空值

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

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

 

缺失值的處理

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

刪除缺失值

用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()})

結果

 

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


猜你喜歡
Python數據分析實戰:獲取數據

《吊打分析師》實戰—我要租個好房

爲什麼要學統計學:赤裸裸的統計學

成爲數據分析師的第三年,我寫了10W字

簡單的Excel數據分析案例

@ 作者:可樂
@ 公衆號/知乎專欄/頭條/簡書:可樂的數據分析之路
@ 加微信(data_cola)備註:進羣,拉你進可樂的數據分析交流羣,數據分析知識總結,不定期行業經驗分享

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章