---
# System prepended metadata

title: 資料科學＆Python基礎
tags: [Python實戰]

---

> 資料科學 Data Science
* 資料的格式分為兩種
    1. 有組織的資料 Organized Data / 結構化資料 Structure Data：
指資料已排列成列(Rows)和欄(Columns)的表格形式，其中每個列代表一個單一觀測結果(Observation)；每個欄代表觀測結果的單一特點(Characteristics)，EX:資料庫的資料表或Excel工作表
    2. 沒有組織的資料 Unorganized Data / 非結構化資料 Unstructured Data：
即自由格式的資料，通常是一些原始資料(Raw Data)，需要進一步轉換和清理成有組織的資料

* 資料科學文氏圖(Venn Diagram)

![image_thumb[7]](https://hackmd.io/_uploads/H1nffVl2R.png)

主要知識與技能：
1. 電腦程式能力(Computer Programming)：撰寫程式碼來轉換和清理資料，以便產生分析和訓練資料
2. 數學與統計知識(Math/Statistics Knowledge)：使用數學（線性代數）或統計公式/運算式來分析資料、建立預測模型和驗證結果
3. 領域知識(Domain Knowledge)：因取得的資料是屬於不同的領域，例如：醫療、財物、社會科學等，在分析資料時，需要擁有該領域的相關知識，才能正確的認知和分析資料

* 資料的結構
    1. 結構化資料(Structured Data)：有組織的資料，已預先定義格式，且可以讓電腦讀取的資料，通常是使用表格方式呈現，例如：資料庫或Excel工作表
    2. 非結構化資料(Unstructured Data)：沒有組織的自由格式的資料，無法直接使用，需進行資料轉換或清理後才能使用，例如：文字、網頁內容、原始訊號和音效等
    3. 半結構化資料(Semistructures Data)：介於結構化和非結構化之間的資料，是一種結構沒有規則且快速變化的資料，雖有欄位定義的結構，但每一筆資料的欄位定義可能都不同，且在不同時間點存取，其結構也可能不一樣，例如：JSON, XML，從PPT文章內容轉換成的JSON資料

* 質的資料(Qualitative Data)：以文字來描述性質、順序和分類的資料，無法量化，有些質的資料也可能看起來像數值資料，但並沒有數值的性質，只是一個符號，例如：在性別欄位使用1代表男性；2代表女性
* 量的資料(Quantitative Data)：是觀察結果的數值資料，使用數值和基本數學運算來呈現
    1. 連續資料(Continuous Data)：以連續數值呈現的資料，在資料之間可以比較大小或先後關係，任何兩個數值之間可以插入無限多個數值資料，例如：時間、身高、體重、血壓和經濟成長率等
    2. 離散資料(Discrete Data)：以不連續數值呈現的資料，此類型資料的資料值都是離散的數值，任何兩個數值之間不可以插入無限數量的數值資料，例如：骰子點數和考試分數等

![1_dEcInm8hryInHrHREcA3eg](https://hackmd.io/_uploads/SkC3Q8xhR.png)

* 名目尺度(The Nominal Level)：是一種定性資料，只能夠進行分類或計數動作，也不具有特定的順序
    1. 可比較是否相等，例如：同一個咖啡產地、相同性別
    2. 可執行成員運算，即是否屬於此集合，例如：是否屬於此國的咖啡產地、是否是亞洲國籍

* 順序尺度(The Ordinal Level)：使用不同順序來區別資料，但無法判斷不同順序之間的差異或意義
    1. 擁有順序性，可以使用圖表呈現其原始順序，例如：光色彩是順序尺度資料，預設順序是紅、橙、黃、綠、藍、靛、紫
    2. 使用順序性來比較，例如：快樂程度5高於1；滿意度8小於10

* 區間尺度(The Interval Level)：包含順序尺度資料的所有特性，還增加不同數值資料間的等距特性
    1. 攝氏、華氏溫度、服裝尺寸區間等，是可以執行加減法運算，例如：以攝氏溫度來說，台北25度、高雄35度，高雄比台北溫暖，因為兩者之間差了10度

⚠️ 0在區間尺度並不是代表沒有，例如溫度0度並不代表沒有溫度，只是測量溫度的單位（絕對0度是-273.15度c）

* 比率尺度(The Ratio Level)：可計算比率，而0值就是沒有，例如：工資、銀行存款、生產單位、股票價格等都是比率尺度資料。可執行加減乘除運算
    1. 資料之間的差距與比率都是有意義的，例如：銀行存款的存款餘額可以是0沒有存款；或者存款餘額20,000是10,000的兩倍

> 資料採礦 Data Mining

`使用軟體技術分析資料庫儲存的龐大資料，以便從這些資料中找出隱藏的規則性或因果關係，及找尋「樣式」(Patterns)`
`能夠幫助公司或組織專注於最重要的資料和預測未來的趨勢與行為，也稱為「資料庫的知識探索」(Knowledge Discovery in Database;KDD)`
* 資料採礦的目的
    1. 預測 Prediction：使用現有資料預測未來情況
        EX：分析消費者的購買習慣，即可預測可能購買的商品；分析以往打折促銷的業績，預測再降價折扣可能增加的業績
    2. 識別 Identification：找出特定樣式後，可識別項目是否存在
        EX：分析電腦病毒碼找出特定的病毒模式，可以再讓電腦掃毒程式識別出是否中了病毒
    3. 分類 Classification：將資料以不同等級、參數和特性來分門別類
        EX：分析信用卡消費金額的大小，可以分類出經常使用、常常使用、偶爾使用和不曾使用的客戶，透過客戶分類寄送郵購目錄來進一步分析不同消費者的購物習慣
    4. 最佳化 Optimization：可在目前已知的有限資源中，創造出有限資源的最大效益
        EX：便利商店因為賣場面積有限，只能銷售1000種商品，需要最佳化商品的選擇、選購動線設計和商品排列的架位，以便創造出最大的營業額
        
* 資料採礦的步驟

![Fayyad96kdd-process](https://hackmd.io/_uploads/SyBRp4T2R.png)

1. 篩選 Selection：使用一些標準或準則來選取或篩選資料，以便從資料中取得所需的資料子集
    EX：取得擁有車的客戶資料、年收入超過100萬的保戶資料
2. 前置處理 Preprocessing：
    * 一些不需要的資料可能會降低查詢速度，要刪除錯誤或不一致的資料
    EX：針對男性用品來說，性別資料就是多餘資料
    * 整合資料，也就是將不同格式的資料整合成相同格式的資料
    EX：月薪整合成新台幣計價；性別以f和m代表女和男
3. 轉換 Transformation：為了進行資料採礦，需要將資料進行分割或合併等資料轉換，以便將資料轉換成可用和操作的資料
    EX：將銷售資料切割成月、季、週和日的銷售資料；信用卡種類有三種，轉換成數值0~3來代表，以方便資料操作
4. 資料採礦 Data Mining：最主要的資料分析步驟，使用資料採礦方法從資料中找出樣式和規則
5. 直譯與評估 Interpretation and Evaluation：評估找出的樣式和規則是否為具有參考價值的知識，如果沒有就需要回到前面步驟進行調整後，重新執行資料採礦，直到找到足以支援經理人決策的有用結果

* 資料科學處理過程

![9230.1523605818](https://hackmd.io/_uploads/rkgcnP6hC.jpg)

1. 詢問有興趣的問題 Ask an Interesting Question
2. 取得資料 Get The Data：取得所有與問題相關的原始資料(Raw Data)，資料來源可以是公開資料、內部資料或向外面購買的資料，需使用網路爬蟲、Open Data、資料清理和查詢資料庫的技能來取得這些資料
3. 探索資料 Explore The Data：整理、歸納和描述資料，以便進行資料分析(Data Analysis)
    * 資料預處理 Data Preprocessing：分辨各種資料是屬於哪一種尺度的資料，然後學習相關領域知識，正確的轉換和清理資料
    EX：重複資料和遺漏值等大大小小的問題，解決這些問題稱為「資料處理」(Data Munging)
    * 探索性資料分析 Exploratory Data Analysis, EDA：完成資料轉換和清理後，可以開始探索資料，利用資料集(Data Sets)的統計摘要資訊和視覺化圖表來進行判斷，以便找出隱藏在資料之間的關係、樣式或異常情況，然後提出「假設」(Hypotheses)
    EX：解釋為什麼此群組客戶的業績會下滑，目標客戶不符合年齡層造成產品銷售不佳等
4. 模型化資料 Model the Data：使用統計和機器學習(Maching Learning)模型來驗證提出的假設
EX：統計檢定和機器學習的線性回歸等
5. 溝通和視覺化結果 Communicate and Visualize the Results