tft每日頭條

 > 科技

 > 怎麼清理數據殘留

怎麼清理數據殘留

科技 更新时间:2025-02-12 09:04:23
本文摘要

數據清理是耗時的,但是是數據分析過程中最重要和最有價值的部分。沒有清理數據,數據分析過程是不完整的。

但是如果我們跳過這一步會發生什麼呢?

假設我們的價格數據中有一些錯誤的數據。不正确的數據在我們的數據集中形成異常值。我們的機器學習模型假設這部分數據集(也許特斯拉的價格确實在一天之内從50美元跳到了500美元)。你現在知道分析的最終結果了吧。

機器學習模型給出了錯誤的結果,沒有人希望這樣!由于預測的方式是錯誤的,你必須從頭開始分析,再一次!因此,數據清理是分析的一個重要部分,不應該被忽略。

文章目錄

這個博客将帶你通過整個過程的數據清理,并提供解決方案的一些挑戰面臨這個過程。

  • 什麼是數據?
  • 各種數據來源
  • 原始數據和處理過的數據是什麼樣子的?
  • 數據清理的好處
  • 高質量數據的特點
  • 數據清理術語
  • 清理數據的步驟
  • 理解你的數據
  • 數據清理中需要解決的基本問題
  • 交易數據清理
  • 已經存在的軟件
  • 學習數據清理的資源
  • 常見問題
什麼是數據?

數據科學是當今最受追捧的職業之一。那麼讓我從回答這個古老的問題開始——什麼是數據?根據維基百科,“數據是關于一個或多個人或物體的定性或定量變量的價值集合,通過觀察收集。”。

考慮一個包含不同種類水果運輸信息的數據集。

怎麼清理數據殘留(一文教你如何正确地清理數據)1

數據集中的一些變量可能是定性的,例如水果的名稱、顔色、目的地和起源國、顧客的反饋(失望、内容、滿意)或定量的,例如水果的成本、運輸成本、裝運重量、裝運成本和裝運水果的數量。

其中一些變量可能來自其他較低層次的變量。在這個例子中,運輸成本來源于水果和運輸成本變量的成本。

怎麼清理數據殘留(一文教你如何正确地清理數據)2

這些定量變量也可分為連續和離散兩類。顧名思義,連續變量在數行上是連續的,可以假定任何實值。離散變量可能隻有特定的值,通常是整數。貨物的重量将是一個連續的變量,而如果我計算每一批水果的數量,它将是一個離散的變量。

定性變量可以分為名義變量和序數變量。名義變量或無序變量是一種标簽變量,這些标簽沒有定量值。例如,水果的顔色或貨物的目的地可能是名義上的變量。序數變量或有序變量是那些标簽具有定量值的變量,即它們的排序問題。在水果的數據庫中,客戶反饋将是一個有序的變量。

大多數人認為數據科學是傳遞非常準确和精确信息的漂亮的圖表和圖表。然而,大多數人沒有意識到生成這些數字的過程是必要的。

數據分析流水線由5個步驟組成。

原始數據-> 處理腳本-> 整理數據-> 數據分析-> 數據通信

通常,管道的前三個步驟被忽略了。初學者直接跳到數據分析步驟。任何公司或學術研究都将緻力于獲取他們的數據并在内部進行預處理。因此,你會想知道如何獲取原始數據,清潔和預處理它自己。

這個博客将涵蓋所有關于清潔和獲取數據進行分析的内容。

各種數據來源

首先,讓我們讨論從哪裡可以獲得數據的各種來源。最常見的來源可能包括來自數據提供網站的表格和電子表格,如 Kaggle 或加州大學歐文分校機器學習知識庫或原始 JSON 和文本文件獲得刮網絡或使用 API。那個。Xls 或。來自 Kaggle 的 csv 文件可能會被預先處理,但原來的 JSON 和。需要處理 txt 文件以獲得某種可讀格式的信息。詳細的數據提取方法可以在這裡找到。

原始數據和處理過的數據是什麼樣子的?

理想情況下,您希望您的幹淨數據是這樣的:

怎麼清理數據殘留(一文教你如何正确地清理數據)3

每列隻有一個變量。在每一行中,您隻有一個觀察結果。它被巧妙地組織成一個矩陣形式,可以很容易地在 Python 或 R 中導入,以執行複雜的分析。但通常情況下,原始數據不是這樣的。它看起來像這樣:

怎麼清理數據殘留(一文教你如何正确地清理數據)4

數據多的讓人頭皮發麻...

這是使用 Twitter API 傳遞查詢的結果,以獲得喬•拜登(Joe Biden)過去的20條推文。您還不能對這些數據執行任何形式的分析。

稍後我們将詳細讨論原始和整潔數據的組件。

數據清理的好處

怎麼清理數據殘留(一文教你如何正确地清理數據)5

如上所述,一個幹淨的數據集對于産生合理的結果是必要的。即使希望在數據集上構建模型,檢查和清理數據也可以指數級地提高結果。向模型輸入不必要或錯誤的數據會降低模型的準确性。一個更清晰的數據集會給你一個比任何花哨的模型更好的分數。一個幹淨的數據集還将使您組織中的其他人将來更容易處理它。

高質量數據的特點

在執行數據清理之後,您至少應該具有以下這些東西:

  • 你的原始數據
  • 幹淨的數據集
  • 描述數據集中所有變量的代碼本
  • 一個指令表,包含對原始數據執行的所有步驟,這些步驟産生了幹淨的數據

當數據滿足以下要求時,我們可以說數據是最原始的形式:

  • 沒有軟件應用到它,因為它已經交給它
  • 沒有對數據執行任何操作。
  • 未執行摘要
  • 未從數據集中移除任何數據點

處理後的數據,它應該滿足這些要求:

  • 每一行應該隻有一個觀察
  • 每列應該隻有一個變量
  • 如果數據存儲在多個表中,請确保這些表之間至少有一列是通用的。這将幫助您在需要時一次從多個表中提取信息。
  • 在每個列的頂部添加一行,其中包含變量的名稱。
  • 盡量使變量名易于閱讀。例如,使用 Project _ status 而不是 pro _ stat
  • 處理過程中使用的所有步驟都應記錄下來,以便從一開始就可以重現整個過程

對于第一次看到你的數據的人來說,這個代碼本是必要的。它将幫助他們理解數據集的基本形式和結構。它應該包含:

  • 關于變量及其單位的信息。例如,如果數據集包含一個公司的收入,一定要提到它是以百萬還是以十億計的貨币。
  • 關于總結方法的信息。例如,如果年收入是變量之一,請提及你用什麼方法得出這個數字,是收入的平均值還是中值。
  • 提及你的數據來源,無論是你自己通過調查收集的還是從網上獲得的。這樣的話,也提一下網站。
  • 一種常見的格式是. doc、 . txt 或标記文件(. md)。

指令表是确保你的數據和研究是可重複的。使用指令表數據社區的其他數據科學家可以驗證你的結果。這增加了你研究的可信度。确保包括:

  • 電腦腳本
  • 這個腳本的輸入應該是原始數據文件
  • 輸出應該是經過處理的數據
  • 腳本中不應該有用戶控制的參數
數據清理術語
  1. 聚合:使用多個觀察值來提供某種形式的變量的摘要。常用的聚合函數有。總額() ,。平均()等。Python 提供了。可以同時執行多個函數的聚合()函數。
  2. Append:Append暗示垂直連接或堆棧兩個或多個數據框架、列表、系列等。使用函數追加數據框架。
  3. 插補:一般統計學家将插補定義為填補缺失值的過程。我們将在後面的博客中更詳細地讨論插補。
  4. Deduping:Deduping 是從數據集中删除重複觀察值的過程。本博客稍後将對此進行更詳細的讨論。
  5. 合并:合并和附加是數據清理中最令人困惑的術語。合并兩個數據框架還包括将它們連接在一起。這裡唯一的區别是我們橫向連接它們。例如,如果我們有兩個數據集,一個包含用戶的 Facebook 數據,另一個包含用戶的 Instagram 數據。我們可以根據用戶使用的 email id (兩個數據集中的公共列)合并這兩個數據集,因為這對某個用戶來說很可能是公共的。
  6. 縮放:縮放或标準化是縮小一個特性的範圍并使其介于0和1之間的過程。這是用來準備的數據,以建立一個機器學習模型上。機器學習算法算法給高值賦予較高的權重,給低值賦予較低的權重。縮放将處理這種值的高度變化。
  7. 解析:是将數據從一種形式轉換為另一種形式的過程。在博客的前面,我們研究了來自 Twitter API 的原始數據。這些數據的原始形式是沒有用的,所以我們需要解析它。我們可以将每條 tweet 作為一個觀察值,将 tweet 的每個特性作為一個專欄。這将使數據以表格的形式顯示和可讀。
清理數據的步驟

有幾個步驟,如果遵循得當,将确保一個幹淨的數據集。

  1. 好好看看你的數據,了解其中發生的基本問題
  2. 列出所有的基本問題并分析每一個問題。盡量估計問題的根源
  3. 清理數據集并再次執行探索性分析
  4. 檢查清潔後的問題
理解你的數據

接收數據時要執行的第一個步驟之一是了解所收到的數據。了解數據集包含什麼——其中的變量、它們的類型、缺失值的數量等等。在本博客中,我們将使用銀行的合成客戶交易數據。這裡提供數據集。

首先,讀取 excel 文件并使用. head ()和. info ()方法獲取數據框架的摘要。

import pandas as pd import numpy as np df=pd.read_excel('ANZ_synthesised_transaction_dataset.xlsx') df.head()

.head()方法将向您展示前5行

怎麼清理數據殘留(一文教你如何正确地清理數據)6

Info ()

Info ()方法将提供 DataFrame 的簡明摘要。

怎麼清理數據殘留(一文教你如何正确地清理數據)7

您将得到類似于下面這樣的輸出。這将顯示列名、每個列中非空值的數量以及每個列的數據類型。

盡管這會間接顯示每列中的空值,但您還可以使用。是的。Sum ()獲取每列中的空觀察值數。

. isna ()将返回一個布爾數組。如果觀察值為空,則返回1; 如果觀察值不為空,則返回0。

() . sum ()

怎麼清理數據殘留(一文教你如何正确地清理數據)8

您還可以使用. only ()在特定列中找到唯一值

為了觀察移動列中的唯一值,我們使用-

Movement.only ()

怎麼清理數據殘留(一文教你如何正确地清理數據)9

這些步驟應該讓您對必須對數據進行哪些清理有一個基本的了解。

數據清理中需要解決的基本問題

在原始數據中看到的一些基本問題是:

缺失值處理

有時在數據集中,您會遇到丢失或為空的值。這些缺失的值可能會影響機器學習模型,并導緻它給出錯誤的結果。因此,我們需要适當地處理這些缺失的值。這個問題可以通過多種方式解決:

  1. 處理這個問題最簡單的方法就是忽略缺少值的觀測值。這是可行的,隻有當缺失的觀察彌補了整個數據集的一小部分。忽略大量的觀察結果可能會縮短數據庫并得出錯誤的結果。這可以通過使用 df.drona ()方法實現。
  2. 另一種方法是估算缺失的值。這意味着您可以确定哪個值可能是丢失的值。這可以通過取變量的平均值/中值或找到類似的觀察值并相應地計算缺失值來完成。隻有在正态分布的情況下才應該使用均值,也就是說,數據沒有傾斜。在數據有偏差的情況下,應使用中位數。這可以通過使用 df.filna ()方法來完成。
  3. 有時缺少的值本身可能表示某些數據。例如,有些人可能不願意與任何性别保持一緻。這些觀察結果不能被歸類為缺失。在這種情況下,最好的辦法就是讓這些觀察結果保持原樣。
重複的價值觀

數據集中可能有重複的值。這可能是由于收集數據時的人為錯誤造成的,也可能是在合并來自不同來源的數據集時發生的。處理它的最佳方法是删除重複的值。這可以通過使用 df.drop _ double ()方法來完成。

離群值

怎麼清理數據殘留(一文教你如何正确地清理數據)10

離群值是指對于列來說異常大或小的值。它們與平均值的偏差遠遠大于變量的标準差。然而,“大得多和小得多”這樣的術語是非常模糊的,并沒有提供一個普遍的價值來考慮一個觀察作為一個離群值。

一般來說,如果一個值超過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

怎麼清理數據殘留(一文教你如何正确地清理數據)11

這裡我們可以看到這個表達式 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

怎麼清理數據殘留(一文教你如何正确地清理數據)12

這裡您可以看到數據類型是 datetime64。

您可以對 datetime 對象進行大量操作。

這裡有一些例子-

df.extraction.dt.day_name() #will return day of the week

怎麼清理數據殘留(一文教你如何正确地清理數據)13

df.extraction.dt.hour #returns the hour of the day

怎麼清理數據殘留(一文教你如何正确地清理數據)14

df.extraction.dt.quarter #returns which quarter of the year is it

怎麼清理數據殘留(一文教你如何正确地清理數據)15

df.extraction.dt.minute # returns minute of the hour

怎麼清理數據殘留(一文教你如何正确地清理數據)16

日期時間庫是廣泛而有用的,特别是在處理時間序列時。日期時間的詳細函數可以在這裡找到。

先前存在的軟件

當最近的最後期限迫在眉睫時,所有這些步驟也可能變得相當乏味。在這種情況下,有某些軟件和網站,将執行所有這一切為您! !這裡有一個全面的網站清單,你可以訪問,使您的工作更容易。

學習數據清理的資源

有關數據清理方法和實踐的更多深入信息,這裡有一些有用的鍊接-

  • 數據清理: 問題和當前的方法
  • 有效數據清理終極指南(免費電子書)
  • 數據科學編程(免費電子書)
  • Jeff Leek 的 GitHub 知識庫
  • 金融數據科學與特征工程 | Ernest P. Chan 博士 | QuantInsti Quantra
常見問題

數據清理、數據挖掘和數據争吵之間的區别是什麼?

數據清理是清除或糾正不準确或不完整數據的過程。上面讨論的不同技術可用于執行數據清理。另一方面,數據挖掘是從幹淨的數據中提取有價值的信息并從中得出推論的過程。數據清理和數據挖掘的整個過程,如果同時進行,就稱為數據争吵。

什麼是可重複的數據? 為什麼它很重要?

可重複的數據意味着,如果其他人對同一數據使用相同的處理過程,那麼他們必須得出相同的結論,你的數據處理方法必須以這種方式記錄。為此,不能手動對原始數據進行任何更改。原始資料的副本必須保存,以供他人使用。這樣做将确保您的數據集是可信的,并且其他人可以信任它們的使用。

什麼是可靠和免費的數據源?

其中一種收集數據的方法是從網站上獲取原始文本數據,然後進行清理。另一種方法是從 Kaggle、 UCI 機器學習資料庫和政府官方網站等網站獲取數據。這裡的一篇非常有用的文章包含了一個數據集的綜合列表。其他網站包括:

  • FiveThirtyEight
  • BuzzFeed News
  • Socrata
  • Awesome-Public-Datasets on Github
  • Google Public Datasets
  • Academic Torrents
  • Quandl
  • Jeremy Singer-Vine
結論

總之,數據清洗是數據處理流水線的重要組成部分。沒有它,分析和機器學習建模将失敗,并給出誤導性的結果。我們已經讨論了如何使數據集“幹淨”以及在處理數據時的注意事項。我們現在知道如何計算空值、處理重複值和異常值、标準化數據和處理誤導性字符串。您還可以使用預先存在的軟件自動清理您的數據!

正如一句流行的諺語所說,“清潔僅次于虔誠”,讓你的數據保持清潔,從而使你的結果保持幹淨。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved