您好,登錄后才能下訂單哦!
這篇文章主要介紹“如何用Python進行數據清洗”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“如何用Python進行數據清洗”文章能幫助大家解決問題。
數據清洗是數據分析的必備環節,在進行分析過程中,會有很多不符合分析要求的數據,例如重復、錯誤、缺失、異常類數據。
01 重復值處理
數據錄入過程、數據整合過程都可能會產生重復數據,直接刪除是重復數據處理的主要方法。pandas提供查看、處理重復數據的方法duplicated和drop_duplicates。以如下數據為例:
>sample = pd.DataFrame({'id':[1,1,1,3,4,5],
'name':['Bob','Bob','Mark','Miki','Sully','Rose'],
'score':[99,99,87,77,77,np.nan],
'group':[1,1,1,2,1,2],})
>sample
group id name score
0 1 1 Bob 99.0
1 1 1 Bob 99.0
2 1 1 Mark 87.0
3 2 3 Miki 77.0
4 1 4 Sully 77.0
5 2 5 Rose NaN
發現重復數據通過duplicated方法完成,如下所示,可以通過該方法查看重復的數據。
>sample[sample.duplicated()]
group id name score
1 1 1 Bob 99.0
需要去重時,可drop_duplicates方法完成:
>sample.drop_duplicates()
group id name score
0 1 1 Bob 99.0
2 1 1 Mark 87.0
3 2 3 Miki 77.0
4 1 4 Sully 77.0
5 2 5 Rose NaN
drop_duplicates方法還可以按照某列去重,例如去除id列重復的所有記錄:
>sample.drop_duplicates('id')
group id name score
0 1 1 Bob 99.0
3 2 3 Miki 77.0
4 1 4 Sully 77.0
5 2 5 Rose NaN
02 缺失值處理
缺失值是數據清洗中比較常見的問題,缺失值一般由NA表示,在處理缺失值時要遵循一定的原則。
首先,需要根據業務理解處理缺失值,弄清楚缺失值產生的原因是故意缺失還是隨機缺失,再通過一些業務經驗進行填補。一般來說當缺失值少于20%時,連續變量可以使用均值或中位數填補;分類變量不需要填補,單算一類即可,或者也可以用眾數填補分類變量。
當缺失值處于20%-80%之間時,填補方法同上。另外每個有缺失值的變量可以生成一個指示啞變量,參與后續的建模。當缺失值多于80%時,每個有缺失值的變量生成一個指示啞變量,參與后續的建模,不使用原始變量。
在下圖中展示了中位數填補缺失值和缺失值指示變量的生成過程。
Pandas提供了fillna方法用于替換缺失值數據,其功能類似于之前的replace方法,例如對于如下數據:
> sample
group id name score
0 1.0 1.0 Bob 99.0
1 1.0 1.0 Bob NaN
2 NaN 1.0 Mark 87.0
3 2.0 3.0 Miki 77.0
4 1.0 4.0 Sully 77.0
5 NaN NaN NaN NaN
分步驟進行缺失值的查看和填補如下:
1. 查看缺失情況
在進行數據分析前,一般需要了解數據的缺失情況,在Python中可以構造一個lambda函數來查看缺失值,該lambda函數中,sum(col.isnull())表示當前列有多少缺失,col.size表示當前列總共多少行數據:
>sample.apply(lambda col:sum(col.isnull())/col.size)
group 0.333333
id 0.166667
name 0.166667
score 0.333333
dtype: float64
2. 以指定值填補
pandas數據框提供了fillna方法完成對缺失值的填補,例如對sample表的列score填補缺失值,填補方法為均值:
>sample.score.fillna(sample.score.mean())
0 99.0
1 85.0
2 87.0
3 77.0
4 77.0
5 85.0
Name: score, dtype: float64
當然還可以以分位數等方法進行填補:
>sample.score.fillna(sample.score.median())
0 99.0
1 82.0
2 87.0
3 77.0
4 77.0
5 82.0
Name: score, dtype: float64
3. 缺失值指示變量
pandas數據框對象可以直接調用方法isnull產生缺失值指示變量,例如產生score變量的缺失值指示變量:
>sample.score.isnull()
0 False
1 True
2 False
3 False
4 False
5 True
Name: score, dtype: bool
若想轉換為數值0,1型指示變量,可以使用apply方法,int表示將該列替換為int類型。
>sample.score.isnull().apply(int)
0 0
1 1
2 0
3 0
4 0
5 1
Name: score, dtype: int64
關于“如何用Python進行數據清洗”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。