小編最近勘很多智慧製造案例,回想起自己處理資料不一,資料格式百百款,小編舉手建議找AI 幫忙,但要把公司資料端出來,著實有限(資安問題),所以這就是小編來寫寫資料清洗的由來。
AI幫忙介紹:
資料清洗
資料清洗(Data Cleaning)是指在資料分析或機器學習前,對原始資料進行檢查、修正或移除不完整、不準確、不一致或不相關資料的過程。這個步驟對於確保後續分析結果的準確性與模型效能極為關鍵[1][2][3]。
資料清洗的重要性
· 提高分析準確性:乾淨的資料能更真實反映現象,分析結果更可靠[1][3]。
· 降低模型錯誤:高品質資料能減少機器學習模型對噪聲的敏感度,降低錯誤率[1][3]。
· 節省後續成本:前期清洗資料可避免後續分析時花費更多時間處理資料問題[4][1]。
· 提升決策品質:高品質資料能為決策者提供更有依據的資訊[1]。
常見的資料品質問題
· 缺失值:資料中某些欄位沒有填寫。
· 重複值:同一筆資料出現多次。
· 錯誤值:如亂碼、拼寫錯誤、數據格式錯誤。
· 極端值(異常值):明顯偏離其他資料的數值。
· 資料型態不一致:同一欄位出現不同型態(如數字和文字混用)[4][2][3]。
資料清洗的主要步驟
1. 檢查資料格式與型別:確認每個欄位的資料型態(數值、日期、文字等)正確[4][2]。
2. 檢查資料完整性:找出缺失值、重複值、異常值[4][2]。
3. 處理缺失值:可選擇刪除、填補(如用平均值、中位數等)或標記[4][2]。
4. 處理重複值:刪除或合併重複資料[4][2]。
5. 修正錯誤資料:如修正拼寫錯誤、格式錯誤、單位不一致等[3][5]。
6. 檢查資料一致性與準確性:確保欄位間邏輯關係正確,數據無明顯矛盾[4][3]。
7. 資料轉換與標準化:如統一日期格式、單位換算、資料排序與聚合[4][2]。
常用工具與技術
· Excel、OpenRefine、Trifacta、DataWrangler 等資料清理工具[2]。
· 程式語言如 Python(Pandas、NumPy)、R 進行自動化清洗[6]。
· 雲端平台如 AWS Glue、Amazon EMR 提供大規模資料清洗功能[2]。
實務建議
· 充分了解資料來源與特性,制定合適的清洗策略[1]。
· 持續監控資料品質,定期檢查與修正[1][2]。
· 注意資料隱私與合規,保護個資安全[1]。
總結
資料清洗是資料分析與機器學習中不可或缺的基礎步驟,直接影響分析結果的正確性與決策品質。無論是企業還是個人進行數據應用,都應重視並投入適當資源於資料清洗作業[4][1][2][3][5]。
1. https://tw.alphacamp.co/blog/data-cleaning
2. https://www.nextlink.cloud/news/data-cleansing-introduction/
3. https://aws.amazon.com/tw/what-is/data-cleansing/
4. https://www.kscthinktank.com.tw/blog/大數據時代生存術-帶你認識資料清理6步驟的「/
5. https://zh.wikipedia.org/zh-tw/数据清洗
6. https://hackmd.io/@Yu-Sheng-Luo/B1Es973us
7. https://lazyorangelife.com/vba-remove-duplicates/
8. https://learn.microsoft.com/zh-tw/office/vba/api/excel.range.removeduplicates
9. https://learn.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/vartype-function
10. https://docs.pingcode.com/baike/3978308
11. https://learn.microsoft.com/zh-tw/office/vba/api/excel.range.removeduplicates
12. https://cloud.tencent.com/developer/article/1952358
13. https://blog.csdn.net/taller_2000/article/details/111602934
14. https://projectmanager.com.tw/excel/excel-vba-排序/
15. https://learn.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/data-type-summary
16. http://rhfan0725.blogspot.com/2012/01/vba_26.html
------------------------------------------------------------------------------------
小編以 Excel 裡面面對一堆亂七八糟的資料為例;別擔心,今天小編就來分享幾個超實用的 VBA 程式碼範例,讓你輕鬆搞定資料清洗的各種問題,無論是格式檢查、缺失值、重複值還是資料標準化,通通難不倒你!
1. 檢查資料格式與型別
有時候我們需要確認某一欄是不是全部都是數字,否則分析起來很容易出錯。小編最常用這段 VBA,幫你把不是數字的格子標記成黃色:
Sub 檢查數字格式()
Dim cell As Range
For Each cell In Range("A2:A100")
If Not IsNumeric(cell.Value) Then
cell.Interior.Color = vbYellow
End If
Next
End Sub
2. 檢查資料完整性(缺失值)
資料有缺漏怎麼辦?小編會用這招,把空白的地方標記成紅色,一眼就能看出來:
Sub 標記缺失值()
Dim cell As Range
For Each cell In Range("A2:A100")
If IsEmpty(cell.Value) Or cell.Value = "" Then
cell.Interior.Color = vbRed
End If
Next
End Sub
3. 處理缺失值(自動填補平均值)
如果資料有缺失,有時候我們會用平均值來填補。這段 VBA 就能自動幫你把 B 欄的空白填上平均值:
Sub 填補缺失值為平均()
Dim rng As Range, cell As Range
Dim sum As Double, count As Long, avg As Double
Set rng = Range("B2:B100")
For Each cell In rng
If IsNumeric(cell.Value) And cell.Value <> "" Then
sum = sum + cell.Value
count = count + 1
End If
Next
If count > 0 Then avg = sum / count
For Each cell In rng
If cell.Value = "" Or IsEmpty(cell.Value) Then
cell.Value = avg
End If
Next
End Sub
4. 處理重複值(移除重複資料)
重複的資料很煩人,小編最愛用這個一鍵移除重複值,超方便:
Sub 移除重複資料()
Range("A1").CurrentRegion.RemoveDuplicates Columns:=1, Header:=xlYes
End Sub
5. 修正錯誤資料(拼寫修正)
有時候資料裡會有拼錯字,比如把 Taipei 打成 Taiepi。這段 VBA 直接幫你全部修正:
Sub 修正拼寫錯誤()
Dim cell As Range
For Each cell In Range("C2:C100")
If cell.Value = "Taiepi" Then
cell.Value = "Taipei"
End If
Next
End Sub
6. 檢查資料一致性與準確性
欄位之間的邏輯要正確,比如結束日不能比開始日早。小編用這個檢查,還會幫你標橘色:
Sub 檢查日期邏輯()
Dim i As Long
For i = 2 To 100
If Cells(i, 5).Value < Cells(i, 4).Value Then
Cells(i, 5).Interior.Color = RGB(255, 153, 0)
End If
Next
End Sub
7. 資料轉換與標準化(單位統一)
有時候數字單位不一樣很麻煩,比如有億、有萬。小編會用這段把全部都換成萬:
Sub 單位轉換為萬()
Dim cell As Range
For Each cell In Range("F2:F100")
If Right(cell.Value, 1) = "億" Then
cell.Value = Val(cell.Value) * 10000 & "萬"
ElseIf IsNumeric(cell.Value) Then
cell.Value = Val(cell.Value) & "萬"
End If
Next
End Sub
8. 資料排序
最後,整理好資料後,當然要排序啦!這段程式把 G 欄的資料從小到大排好:
Sub 排序資料()
Range("A1:G100").Sort Key1:=Range("G1"), Order1:=xlAscending, Header:=xlYes
End Sub