python数据清理的实践总结_Python数据清洗实践
原標題:Python數據清洗實踐
DATA CLEANING WITH PYTHON
作者 | Balogun Omobolaji
翻譯 | 醬番梨、祝弟弟基督教
校對 | Pita 審核 | 約翰遜·李加薪 整理 | 立魚王
https://medium.com/machine-intelligence-team/data-cleaning-with-python-d0ca811d6cdf
注:本文的相關鏈接請訪問文末二維碼
引言
“數據科學家們80%的精力消耗在查找、數據清理、數據組織上,只剩于20%時間用于數據分析等。”——IBM數據分析
數據清洗是處理任何數據前的必備環節。在你開始工作前,你應該有能力處理數據缺失、數據不一致或異常值等數據混亂情況。在開始做數據清洗前,需要對Numpy和Pandas庫有基本的理解。
數據清洗
數據清洗名如其意,其過程為標識并修正數據集中不準確的記錄,識別數據中不可靠或干擾部分,然后重建或移除這些數據。
數據清洗是數據科學中很少提及的一點,因為它沒有訓練神經網絡或圖像識別那么重要,但是數據清洗卻扮演著非常重要的角色。沒有它,機器學習預測模型將不及我們預期那樣有效和精準。
下面我將討論這些不一致的數據:
數據缺失
列值統一處理
刪除數據中不需要的字符串
數據缺失
數據缺失原因?
在填寫問卷時,人們往往未填全所有必填信息,或用錯數據類型。問卷結果中缺失的數據在使用前必須做相應的解釋及處理。
下面,我們將看到一份關于不同層次學生入學考試的數據集,包括得分、學校偏好和其他細節。
通常,我們先導入Pandas并讀入數據集。
importpandas aspd
data = pd.read_csv( 'Responses.csv')
在需要的地方,你可以用NaN的非標準類型(例:'n/a','na','-')來替代缺失的值。
missing_values= [ 'n/a', 'na', '--']
data =pd.read_csv( 'Responses.csv', na_values = missing_values)
data.head()
得到"District"列缺值統計數
看District列,我們想檢測該列是否有空值并統計空值的總數。
data['District'].isnull() .values.any() #Toknowifthereisanymissingvalues
#ReturnsTrue
data['District'].isnull() .sum()
#Returns16
替換全部非數值型值
我們可以用需要的值來替換全部非數值型值,下面先使用14這個值。
data['District'].fillna( 14, inplace = True) #replacingmissing#values
data['District']
替換一個指定的非數值型值
我們也可以替換指定位置的值,下面例子是行索引為3。
data. loc[ 3, 'District'] = 32
# data
使用中位數替換缺失值
我們可以使用非數值型值所在列的中位數進行替換,下列中的中位是為3.5。(補充說明:中位數這里指非數值型值所在列的全部值,按高低排序后找出正中間的一個作為中位數)
median = data[ 'District'].median()
median
data[ 'District'].fillna(median, inplace = True)
data[ 'District']
刪除缺值項
如果你只是想簡單地排除缺值項,可以用dropna函數配合axis參數進行。缺省情況下,axis=0表示沿橫軸(行)刪除含有有非數值型字段的任何行。
#Drop any rows whichhave any NaNs
data.dropna()
#Drop columns that have any NaNs
data.dropna(axis=1)
如果數列中超過90%的數據是“非數”,我們將其刪除
這是我最近學到的一個有趣的功能。參數 thresh = N要求數列中至少含有N個非數才能得以保存。在將它們視為模型的候選者之前,你只需要具有90%可用功能的記錄。
#Only drop columns whichdonot have at least 90% non-NaNs
data.dropna(thresh=int(data.shape[0] * .9), axis=1)
#Returns a data with the shape of 117rows and 8 columns
#Recall that the original data 117rows and 12columns
所以,這意味著4列超過90%的數據相當于“非數”。這些對我們的結果幾乎沒有影響。
執行上述操作的另一種方法是手動掃描/讀取列,并刪除對我們的結果影響不大的列。
to_drop = [ 'District', 'School Preferences', 'School Assigned''Will you enroll there?']
data.drop(columns=to_drop, inplace= True)
#we will have the same result as the above
刪除字符串中的某些字符
假設我們想要處理一個大型數據集,它包含一些我們不希望包含在模型中的字符串,我們可以使用下面的函數來刪除每個字符串的某些字符。
上面的屏幕截圖顯示了如何從字符串中刪除一些字符
soupsubcategory是唯一一個數據類型為'object'的列,所以我們選擇了select_dtypes(['object']),我們正在使用lambda函數從該列中的每個
new_dataset = dataset.select_dtypes([‘object’])
dataset[new_dataset.columns] = new_dataset.apply( lambdax: x.str.strip(‘/images’))
print(dataset)
我們可以對我們的數據執行其他一些功能和方法,本文未介紹這些功能和方法。您可以從本課程中了解更多信息。
結論
網絡上有大量資源可以幫助您更深入地了解Python for Data Science。以上只是數據科學所需要的一小部分。清理完數據后,您可以在處理數據之前對其進行可視化(數據可視化),并根據結果進行預測。
請查看以下鏈接,以查找有助于您進行Python數據科學之旅的其他資源:
Pandas文檔
Numpy文檔
Python數據科學簡介。對于那些以前沒有數據科學知識的初學者來說,這是一門很棒的課程。
感謝閱讀。
https://ai.yanxishe.com/page/TextTranslation/1495返回搜狐,查看更多
責任編輯:
總結
以上是生活随笔為你收集整理的python数据清理的实践总结_Python数据清洗实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 峰米预告新款 X5 投影仪:亮度首次超越
- 下一篇: python中输出菱形_用python打