數據清理是耗時的,但是是數據分析過程中最重要和最有價值的部分。沒有清理數據,數據分析過程是不完整的。
但是如果我們跳過這一步會發生什麼呢?
假設我們的價格數據中有一些錯誤的數據。不正确的數據在我們的數據集中形成異常值。我們的機器學習模型假設這部分數據集(也許特斯拉的價格确實在一天之内從50美元跳到了500美元)。你現在知道分析的最終結果了吧。
機器學習模型給出了錯誤的結果,沒有人希望這樣!由于預測的方式是錯誤的,你必須從頭開始分析,再一次!因此,數據清理是分析的一個重要部分,不應該被忽略。
文章目錄這個博客将帶你通過整個過程的數據清理,并提供解決方案的一些挑戰面臨這個過程。
數據科學是當今最受追捧的職業之一。那麼讓我從回答這個古老的問題開始——什麼是數據?根據維基百科,“數據是關于一個或多個人或物體的定性或定量變量的價值集合,通過觀察收集。”。
考慮一個包含不同種類水果運輸信息的數據集。
數據集中的一些變量可能是定性的,例如水果的名稱、顔色、目的地和起源國、顧客的反饋(失望、内容、滿意)或定量的,例如水果的成本、運輸成本、裝運重量、裝運成本和裝運水果的數量。
其中一些變量可能來自其他較低層次的變量。在這個例子中,運輸成本來源于水果和運輸成本變量的成本。
這些定量變量也可分為連續和離散兩類。顧名思義,連續變量在數行上是連續的,可以假定任何實值。離散變量可能隻有特定的值,通常是整數。貨物的重量将是一個連續的變量,而如果我計算每一批水果的數量,它将是一個離散的變量。
定性變量可以分為名義變量和序數變量。名義變量或無序變量是一種标簽變量,這些标簽沒有定量值。例如,水果的顔色或貨物的目的地可能是名義上的變量。序數變量或有序變量是那些标簽具有定量值的變量,即它們的排序問題。在水果的數據庫中,客戶反饋将是一個有序的變量。
大多數人認為數據科學是傳遞非常準确和精确信息的漂亮的圖表和圖表。然而,大多數人沒有意識到生成這些數字的過程是必要的。
數據分析流水線由5個步驟組成。
原始數據-> 處理腳本-> 整理數據-> 數據分析-> 數據通信
通常,管道的前三個步驟被忽略了。初學者直接跳到數據分析步驟。任何公司或學術研究都将緻力于獲取他們的數據并在内部進行預處理。因此,你會想知道如何獲取原始數據,清潔和預處理它自己。
這個博客将涵蓋所有關于清潔和獲取數據進行分析的内容。
各種數據來源首先,讓我們讨論從哪裡可以獲得數據的各種來源。最常見的來源可能包括來自數據提供網站的表格和電子表格,如 Kaggle 或加州大學歐文分校機器學習知識庫或原始 JSON 和文本文件獲得刮網絡或使用 API。那個。Xls 或。來自 Kaggle 的 csv 文件可能會被預先處理,但原來的 JSON 和。需要處理 txt 文件以獲得某種可讀格式的信息。詳細的數據提取方法可以在這裡找到。
原始數據和處理過的數據是什麼樣子的?理想情況下,您希望您的幹淨數據是這樣的:
每列隻有一個變量。在每一行中,您隻有一個觀察結果。它被巧妙地組織成一個矩陣形式,可以很容易地在 Python 或 R 中導入,以執行複雜的分析。但通常情況下,原始數據不是這樣的。它看起來像這樣:
數據多的讓人頭皮發麻...
這是使用 Twitter API 傳遞查詢的結果,以獲得喬•拜登(Joe Biden)過去的20條推文。您還不能對這些數據執行任何形式的分析。
稍後我們将詳細讨論原始和整潔數據的組件。
數據清理的好處
如上所述,一個幹淨的數據集對于産生合理的結果是必要的。即使希望在數據集上構建模型,檢查和清理數據也可以指數級地提高結果。向模型輸入不必要或錯誤的數據會降低模型的準确性。一個更清晰的數據集會給你一個比任何花哨的模型更好的分數。一個幹淨的數據集還将使您組織中的其他人将來更容易處理它。
高質量數據的特點在執行數據清理之後,您至少應該具有以下這些東西:
當數據滿足以下要求時,我們可以說數據是最原始的形式:
處理後的數據,它應該滿足這些要求:
對于第一次看到你的數據的人來說,這個代碼本是必要的。它将幫助他們理解數據集的基本形式和結構。它應該包含:
指令表是确保你的數據和研究是可重複的。使用指令表數據社區的其他數據科學家可以驗證你的結果。這增加了你研究的可信度。确保包括:
有幾個步驟,如果遵循得當,将确保一個幹淨的數據集。
接收數據時要執行的第一個步驟之一是了解所收到的數據。了解數據集包含什麼——其中的變量、它們的類型、缺失值的數量等等。在本博客中,我們将使用銀行的合成客戶交易數據。這裡提供數據集。
首先,讀取 excel 文件并使用. head ()和. info ()方法獲取數據框架的摘要。
import pandas as pd
import numpy as np
df=pd.read_excel('ANZ_synthesised_transaction_dataset.xlsx')
df.head()
.head()方法将向您展示前5行
Info ()
Info ()方法将提供 DataFrame 的簡明摘要。
您将得到類似于下面這樣的輸出。這将顯示列名、每個列中非空值的數量以及每個列的數據類型。
盡管這會間接顯示每列中的空值,但您還可以使用。是的。Sum ()獲取每列中的空觀察值數。
. isna ()将返回一個布爾數組。如果觀察值為空,則返回1; 如果觀察值不為空,則返回0。
() . sum ()
您還可以使用. only ()在特定列中找到唯一值
為了觀察移動列中的唯一值,我們使用-
Movement.only ()
這些步驟應該讓您對必須對數據進行哪些清理有一個基本的了解。
數據清理中需要解決的基本問題在原始數據中看到的一些基本問題是:
缺失值處理有時在數據集中,您會遇到丢失或為空的值。這些缺失的值可能會影響機器學習模型,并導緻它給出錯誤的結果。因此,我們需要适當地處理這些缺失的值。這個問題可以通過多種方式解決:
數據集中可能有重複的值。這可能是由于收集數據時的人為錯誤造成的,也可能是在合并來自不同來源的數據集時發生的。處理它的最佳方法是删除重複的值。這可以通過使用 df.drop _ double ()方法來完成。
離群值
離群值是指對于列來說異常大或小的值。它們與平均值的偏差遠遠大于變量的标準差。然而,“大得多和小得多”這樣的術語是非常模糊的,并沒有提供一個普遍的價值來考慮一個觀察作為一個離群值。
一般來說,如果一個值超過1.5 * IQR,那麼它就是一個異常值。 IQR 表示四分位間距。
例如,如果 IQR 為100,Q1和 Q3值分别為50和150。因此,如果觀測值低于 Q1-1.5 * IQR,即低于50-1.5 * 100 = -100,那麼觀測值就是異常值。高于 Q3 1.5 * IQR 的值也是異常值。
一些機器學習模型,比如回歸,容易受到異常值的影響。因此,它們應該被删除,但隻有在徹底審查了異常值的原因之後。
字符串清理字符串變量中可能出現不規則現象。這些情況可能是由于人為錯誤或從不同來源收集數據時發生的。它們涵蓋的範圍很廣,可能因數據的不同而有所不同。解決這個問題的方法也因用戶而異。這通常取決于問題本身。最常見的錯誤是拼寫錯誤和不同格式的書寫相同的意見。拼寫錯誤很難解決。如果它們的數量很少,可以通過搜索觀察結果手動完成。如果拼寫錯誤引起大問題,可以通過使用模糊匹配來找到它們。第二個問題可以通過在 python 中使用 regex 庫來解決。它使用部分匹配來查找和替換。它還可用于标準化,以删除特殊字符,并在字符串中隻保留字母數字字符。
比如說,
import regex as re
x='abc[#4 6a}'
x=re.sub(r"[^a-zA-Z0-9\s]","",x)
x
這裡我們可以看到這個表達式 re.sub (r“[ ^ a-zA-Z0-9 s ]”,“”,x)删除了所有不是字母數字或空格的字符。因此我們可以使用 regex 來執行模式匹配。
标準化數據的标準化意味着将所有的觀測結果放在同一類型的一個變量中。對于一個數值變量,确保所有的觀測值具有相同的單位。一定要在欄名或代碼本中提到度量單位。
字符串變量必須都是大寫或小寫,因為這使得它們在任何時候都更容易搜索。
日期應為 DateTime 格式。它是日期和時間的普遍使用和首選格式。對于人工解釋,日期要麼以 dd/mm/yyyy 格式提及,要麼以 mm/dd/yyyy 格式提及,所使用的格式也必須提及。
交易數據清理交易數據中的一個主要問題是 DateTime 違規。數據中的日期和時間應該采用 Python 中的 datetime 格式。如果需要,可以更容易地從列中提取單獨的日期和時間。在銀行事務數據集中,日期列已采用日期時間格式。因此,我們将處理數據集中的提取列。要将列轉換為 datetime,請使用 panas.To _ datetime ()函數。
import datetime as dt
df.extraction=pd.to_datetime(df.extraction)
df.extraction
這裡您可以看到數據類型是 datetime64。
您可以對 datetime 對象進行大量操作。
這裡有一些例子-
df.extraction.dt.day_name() #will return day of the week
df.extraction.dt.hour #returns the hour of the day
df.extraction.dt.quarter #returns which quarter of the year is it
df.extraction.dt.minute # returns minute of the hour
日期時間庫是廣泛而有用的,特别是在處理時間序列時。日期時間的詳細函數可以在這裡找到。
先前存在的軟件當最近的最後期限迫在眉睫時,所有這些步驟也可能變得相當乏味。在這種情況下,有某些軟件和網站,将執行所有這一切為您! !這裡有一個全面的網站清單,你可以訪問,使您的工作更容易。
學習數據清理的資源有關數據清理方法和實踐的更多深入信息,這裡有一些有用的鍊接-
數據清理、數據挖掘和數據争吵之間的區别是什麼?
數據清理是清除或糾正不準确或不完整數據的過程。上面讨論的不同技術可用于執行數據清理。另一方面,數據挖掘是從幹淨的數據中提取有價值的信息并從中得出推論的過程。數據清理和數據挖掘的整個過程,如果同時進行,就稱為數據争吵。
什麼是可重複的數據? 為什麼它很重要?
可重複的數據意味着,如果其他人對同一數據使用相同的處理過程,那麼他們必須得出相同的結論,你的數據處理方法必須以這種方式記錄。為此,不能手動對原始數據進行任何更改。原始資料的副本必須保存,以供他人使用。這樣做将确保您的數據集是可信的,并且其他人可以信任它們的使用。
什麼是可靠和免費的數據源?
其中一種收集數據的方法是從網站上獲取原始文本數據,然後進行清理。另一種方法是從 Kaggle、 UCI 機器學習資料庫和政府官方網站等網站獲取數據。這裡的一篇非常有用的文章包含了一個數據集的綜合列表。其他網站包括:
總之,數據清洗是數據處理流水線的重要組成部分。沒有它,分析和機器學習建模将失敗,并給出誤導性的結果。我們已經讨論了如何使數據集“幹淨”以及在處理數據時的注意事項。我們現在知道如何計算空值、處理重複值和異常值、标準化數據和處理誤導性字符串。您還可以使用預先存在的軟件自動清理您的數據!
正如一句流行的諺語所說,“清潔僅次于虔誠”,讓你的數據保持清潔,從而使你的結果保持幹淨。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!