單元 3:數據處理 (Manipulating Data) - 學習筆記
你好,未來的 IT 專才!歡迎來到「數據處理」這一章。別擔心這聽起來很複雜——這本質上就是將原始資訊轉化為有用、可靠且易於查找的過程。想像一下,這就像整理你雜亂的房間,讓你終於能找到最喜歡的那件外套一樣!
在本單元中,我們將探討確保數據質量所需的基礎步驟,並學習電腦用來快速整理和檢索資訊的核心技術。
基礎:數據類型 (Data Types)
在我們處理數據之前,電腦需要知道它正在處理的是什麼類型的數據。分配數據類型可以告訴系統該分配多少記憶體空間,以及允許對該數據執行哪些運算。
想像一下你有三個不同的盒子:一個裝蘋果,一個裝橙,一個裝錢。你肯定不會把錢放進蘋果盒裡吧!數據類型就是這些盒子上的標籤。
- 整數 (Integer/INT): 用於整數(沒有小數部分的數字)。
例子:10, -5, 4000。用於計算物品數量或年齡。 - 實數 / 浮點數 (Real / Floating Point/FLOAT): 用於包含小數或分數部分的數字。
例子:10.5, 3.14159, -0.01。用於測量數據或貨幣計算。 - 布林值 (Boolean/BOOL): 用於只有兩種可能狀態的數據:真 (True) 或 假 (False)(通常以 1 或 0 表示)。
例子:IsLoggedIn(是否已登入:True)、IsActive(是否活躍:False)。用於邏輯檢查。 - 字元 / 字串 (Character / String/CHAR/STRING): 用於文字,包括字母、符號、空格以及被當作文字處理的數字。
例子:"Hello World", "123 Main Street", "A"。電話號碼通常儲存為字串,因為你不會對它們進行數學運算。
快速回顧:數據類型確保了記憶體的高效利用,並能防止邏輯錯誤(例如試圖將姓名與數字相加)。
第一部分:數據質量 —— 驗證 (Validation) 與 核實 (Verification)
輸出的質量完全取決於輸入的質量。這通常被總結為:垃圾進,垃圾出 (Garbage In, Garbage Out, GIGO)。
我們使用兩個關鍵過程來確保數據質量:驗證和核實。學生經常混淆這兩個概念,讓我們仔細看看!
數據驗證 (Data Validation):數據是否「合理」?
數據驗證是用來檢查輸入的數據是否符合預設規則,是否合理或可接受。它*不會*檢查數據是否正確(即內容是否真實),只會檢查格式或範圍是否正確。
比喻:如果你詢問某人的年齡,驗證會檢查該數字是否介於 1 到 150 之間。它不會檢查該人士是否謊報自己 50 歲!
驗證檢查的類型
- 存在檢查 (Presence Check): 確保必填欄位已填寫(沒有留空)。
例子:註冊表單上的使用者名稱欄位必須填入數據。 - 範圍檢查 (Range Check): 確保數據介於上限和下限之間。
例子:每週工作時數必須在 1 到 60 小時之間。 - 格式檢查 (Format Check): 確保數據以特定的模式或結構輸入。
例子:郵遞區號必須遵循 LLNN NLL 的格式(例如:SW1A 0AA)。
- 長度檢查 (Length Check): 確保數據包含最少或最多數量的字元。
例子:密碼長度必須至少為 8 個字元。 - 查閱列表 (Lookup Table/Value List): 將輸入的數據與儲存在他處的預設列表進行比對。
例子:選擇國家時,輸入內容必須與預先核准的國家列表中的選項相符。 - 校對碼 (Check Digit): 加在長數字(如 ISBN 或條碼)末尾的一個特殊數字,由其他數字計算得出。系統在輸入時會重新計算校對碼,以確保數字輸入正確。
例子:廣泛用於銀行業務(帳號)和產品編碼。
驗證記憶小撇步:驗證是確保數據遵循規則(範圍、格式、長度等)。
數據核實 (Data Verification):數據是否「準確」?
數據核實是用來檢查輸入的數據是否與原始來源數據相符。它確保的是準確性。
比喻:核實就是將購物收據上的數字與你貨架上看到的標價進行比對。
核實的方法
- 雙重輸入 (Double Entry): 數據被輸入兩次,通常由兩位不同的人輸入,或是由同一人被要求重新輸入。電腦會比較這兩次輸入的數據。如果相符,就假定數據準確。
常見錯誤:如果兩次輸入都犯了同樣的打字錯誤,雙重輸入將無法檢測出來。 - 視覺檢查 (Visual Check): 人手將螢幕上顯示的數據與原始來源文件進行比較(例如將掃描表格與原始紙本文件對照)。
優點:對於小型數據集簡單有效,但對於大量數據而言,速度慢且容易出現人為錯誤。
關鍵總結:驗證確保數據「合理」;核實確保數據「正確」。
第二部分:數據處理 —— 組織與檢索
數據輸入並完成驗證後,我們通常需要對其進行組織,使其發揮作用。最關鍵的兩種處理操作是排序和搜尋。
數據排序 (Sorting)
排序是將數據記錄按特定順序排列的過程,可以是升序(A-Z, 1-10)或降序(Z-A, 10-1)。
為什麼要排序? 這不僅讓人類閱讀報表時更加輕鬆,更重要的是,它能讓電腦搜尋數據的速度大幅提升。
你知道嗎? 資料庫通常允許你按多個欄位進行排序(例如:先按姓氏排序,若姓氏相同,再按名字排序)。
數據搜尋 (Searching)
搜尋是在大量記錄集合中尋找特定數據的過程。
線性搜尋 (Linear Search / Sequential Search)
這是最簡單的搜尋技術。它會從數據集的開頭開始,檢查每一個項目,直到找到目標項目或到達列表末尾為止。
- 過程:
- 從第一個項目開始。
- 這是我們要找的項目嗎?
- 如果是,停止。
- 如果不是,移動到下一個項目並重複第 2 步。
- 優點: 適用於未排序的數據。
- 缺點: 對於大型數據集非常慢,特別是當目標項目位於列表末尾或根本不存在時。
二分搜尋 (Binary Search)
二分搜尋是一種非常高效的搜尋演算法,但它有一個至關重要的前提條件:
前提:數據必須先經過排序。
比喻:二分搜尋就像在字典中查找單詞。你不會從頭到尾翻閱每一頁,而是直接跳到中間!
二分搜尋的工作原理是重複地將可能包含目標項目的列表部分減半。
二分搜尋的步驟(分治法 Divide and Conquer):
- 找到列表的中間項目。
- 將中間項目與目標項目比較:
- 如果兩者相符,搜尋完成。
- 如果目標項目小於中間項目,忽略上半部分列表(以及中間項目)。
- 如果目標項目大於中間項目,忽略下半部分列表(以及中間項目)。
- 在剩餘的列表部分重複此過程(從第 1 步開始),直到找到該項目或列表被檢查完畢。
關鍵優點:速度極快,特別是在大型列表中,因為它在每次比較中都會剔除一半的可能項目。
關鍵缺點:需要初始數據集已排序,這需要花費額外的時間。
索引 (Indexing)
有時候,我們需要快速搜尋,但又不想每次加入新記錄時都重新對整個大型資料庫進行物理排序。這就是索引 (Indexing) 發揮作用的地方。
索引是一個獨立的、結構化的列表,包含主鍵值 (Primary Key) 和指標 (Pointer,即記憶體位址),告訴系統完整的記錄儲存在哪裡。
比喻:教科書後的索引列出了關鍵字(主鍵)和頁碼(指標)。你利用索引快速找到資訊,而不需要閱讀書中的每一頁。
- 過程: 系統不再搜尋龐大的主數據檔案,而是搜尋體積更小且已排序的索引檔案。
- 優點: 檢索速度更快,因為索引檔案更小且專為搜尋優化(通常使用二分搜尋技術)。主數據檔案保持原樣且無需排序,從而允許更快速地插入和更新新記錄。
關鍵總結:排序使得二分搜尋變得可能且高效。索引則能在不物理重新組織整個數據集的情況下,實現快速檢索。