數據清洗——數據分析最熬人的階段
經過python的基礎學習後,來到了核心課程:數據分析。在學這一課程的時候有點熬人,不知道為啥,有可能跟心情有關吧,本來2天能完成的,託到4天。
主要的學習內容是numpy和pandas兩個庫。
numpy的主要數據類型是narray,分為一維和二維,主要用來進行一些矩陣的計算。
pandas則是數據分析主要用到的庫(pandas是在numpy的基礎上封裝上來的)。包括很多內容,其中最重要的就是索引了,單項索引,多項索引等。
https://pan.baidu.com/s/1C48aou7S7N_lxggsSv-9ng上面是自己跟著猴子老師課程練習的代碼,包含藥店銷售數據的案例。
下面總結一下數據分析的流程:
(1)提出問題
提出問題時至關重要的一步,在這一步,要明確目的,同時要根據目的推測出需要的數據,然後才能接下一步,收集數據。
(2)收集數據
(3)數據清洗
(4)構建模型
(5)可視化與撰寫報告
本次課程主要的內容是數據清洗,具體的步驟包括:
(1)選擇子集:
一般情況寫,我們是根據問題選擇數據,有的時候並不需要所有數據,因此,我們第一步把我們所需要的數據提出出來,建立一個新的dataframe。
(2)重命名
根據我們自己分析數據的要求,給列重新命名,讓數據更加直觀。
rename函數
(3) 處理缺失值
處理缺失值的方法一般有兩種:刪除,替換。
刪除有dropna函數,根據行刪除,列刪除都可以,還可以選擇參數「how」來確定閾值。
替換有fillna函數,可以指定數值替換,也可以根據函數向前賦值還是向後複製。同時也刻意替換為均值,中位數等!
(4)替換值
replace函數,將某一值替換為指定的值。也可以根據條件替換,如把所有小於0的值全部替換為0等
(5)重複值的清洗
duplicated()查看時候有重複值,參數可以添加列,來查看某列或者組合是否有相同的數據。
unique()返回唯一值的數組並排序。
drop_duplicates([k1]) 刪除重複值,保留k1列中的唯一值的行,默認保留第一行
(6)字元類型轉換
一般情況下是根據構建模型時需要的運算來轉換,主要是int、float和str之間的轉換。還有就是時間序列的轉換,將str轉換為時間(to_datetime)。
(7)數據排序
數值排序:sort_values()根據列排序
索引排序:sort_index(),關於索引的操作還有setindex(),reset_index(),reindex()
(8)異常值處理
可以根據描述想統計:describe(),函數來查看是否有異常值,同時也可以通過畫圖來查看是否有異常值,發現異常值後,同樣可以用處理缺失值的方法來處理,刪除或者替換。
https://pan.baidu.com/s/1Z4LbxQAW8Sol51pUCJ1OVQ上面是自己採集的數據的數據清洗鍊習,沒有完全做完,因為不會正則表達式沒法做,抽時間可以學一下。我記得有一個調差表明:絕大多數數據工作者遇到的最煩人的問題就是數據有問題,而不是建模分析過程,現在我是有確切體會了!
推薦閱讀: