資料塑形(Data Shaping)
資料塑形(Data Shaping) 是什麼? 這名詞在軟體業界上很少聽到,但其實在軟體開發中是一件很常做的事情。你聽過資料格式化、資料前處理、Data Transformation 等相關軟體術語,這些其實跟資料塑形(Data Shaping)是在做類似的動作,而這篇文章就來說說資料塑形(Data Shaping)是什麼。
更新於 發布於

前言
開發軟體中,時常不是一個人單幹全部的程式碼,雖然現在有 AI 協作下可以一個人完成大項目專案,這聽起來是不是像一個人? 可是你跟 AI 實際上還是兩個人,我就不繼續講屁話了。
資料塑形(Data Shaping) 這名詞其實很少見,過往文章上或是團隊開發中,比較常聽到的就是前面所提到資料格式化、資料前處理等其他相關名詞,然而為什麼會有這些名詞的存在? 主要是因為在開發中,你會碰到需要與後端工程師協作,或幫助其他公司開發產品使用,而 API Response 的資料不一定符合你系統當中所使用的格式,這時候就需要前置動作來讓資料符合你系統的樣子。
資料清理(Data Cleaning)
API Response 資料不保證全部都符合你需要使用的,此時在資料上面就需要做資料清理(Data Cleaning)。
目的:清理骯髒及不合法資料
常見情形:
- 空資料
null/undefined資料- 型別錯誤
- 不合理數值
- 重複資訊
範例
範例資料出現兩筆相同資料,所以需要做清洗動作。
const dirtyData = [
{ id: 1, name: "Alice", age: 28, salary: 50000, city: "Taipei" },
{ id: 2, name: "BOB", age: 999, salary: "50000TWD", city: "taipei" },
{ id: 2, name: "BOB", age: 999, salary: "50000TWD", city: "taipei" },
];
const cleanData = dirtyData.filter(
(item, index, array) => index === array.findIndex(t => t.id === item.id)
);
資料轉換(Data Transformation)
API Response 資料不保證全部都符合你需求格式,此時在資料上面就需要做資料轉換(Data Transformation)。
目的:改變資料結構與型別
常見操作:
- 轉換資料型別
- 計算衍生欄位
- 合併或拆分欄位
範例
延續清洗範例,資料中的 salary 欄位出現字串及數字,因此做轉換資料型別。
const transformationData = cleanData.map(item => ({
...item,
salary: typeof item.salary === "string"
? parseInt(item.salary)
: item.salary,
}));
資料標準化(Data Standardization)
目的:統一資料結構
常見問題:
- 重新命名欄位
- 轉換相同格式
範例
延續轉換範例,資料中的 name 名稱大小寫不相同及 city 中有首字母大小寫存在。
const standardizationData = transformationData.map(item => ({
...item,
name: item.name.charAt(0).toUpperCase() + item.name.slice(1).toLowerCase(),
city: item.city.charAt(0).toUpperCase() + item.city.slice(1).toLowerCase(),
}));