上週咱們讀取完了數據(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()})
結果
這裏只是舉例缺失值也能夠被填充這樣處理,在這個案例裏,不建議這兩列填充,空着就空着吧。下節內容來處理重複值和異常值。