程式設計與資料科學導論

week 10

謝舒凱

pic.by DALL-E 3

本週學習內容

資料探索分析 (Exploratory Data Analysis) (I)

再強調一次


https://realpython.com/chatgpt-coding-mentor-python/

Data Wrangling

  • 資料清理、前處理的 (心力交疲 😭) 過程,常常用 data wrangling 的比喻來稱呼。

  • 向來資料科學家的工作,最多心力花在這個部分(隨著 LLM-based modeling 的門檻越來越低,資料蒐集清理標記加值更顯重要)。

Tidy Data Principles

tidy data Hadley Wickham, 2014: a consistent way of storing your data that makes transformation, visualisation, and modelling easier.

  • 在 R 語言的社群開始流行,但是在資料科學的領域中,幾乎成為一個標準。

Tidy Data Principles

  1. 每一行就代表一個變數(量測的性質)Each variable forms a column.
  2. 每一列為一個觀察點(樣本)Each observation forms a row.
  3. 每一個值都有自己的儲存格 Each value must have its own cell.

實際例子

基於各種理由,許多資料都是 non-tidy。或是說,同一份資料,有不同的呈現方式。來看看以下的表格們。

base_url = "https://github.com/byuidatascience/data4python4ds/raw/master/data-raw/"
table1 = pd.read_csv("{}table1/table1.csv".format(base_url))
table2 = pd.read_csv("{}table2/table2.csv".format(base_url))
table3 = pd.read_csv("{}table3/table3.csv".format(base_url))
table4a = pd.read_csv("{}table4a/table4a.csv".format(base_url))
table4b = pd.read_csv("{}table4b/table4b.csv".format(base_url))
table5 = pd.read_csv("{}table5/table5.csv".format(base_url), dtype = 'object')

Pandas 中相關的處理函式

(參見助教講義)

  • Pivoting: melt(), pivot(), pivot_table()
  • Reshaping: stack() and unstack() that use multi-index columns and rows.

longer vs. wider format

  • using melt() and pivot() to transform between longer and wider formats.

Pivoting table4 into a longer, tidy form.

Relational Data

  • 實際的資料通常是 relational data,也就是說,資料是由多個 table 組成,每個 table 都有一個主鍵 (primary key) 來連結其他資料表。

  • 當然你也可以學習關聯性資料庫 (relational database) 的操作,但是這不是本課程的重點。

  • Mutating joins (助教今天講解的部分) , Filtering joins, Set operations. 參考 R 以及 python 對應版

資料探索分析 (Exploratory Data Analysis)

有了這些基礎,就可以往前進行資料探索分析了。

  • 資料探索分析 (Exploratory Data Analysis) 是資料科學中的一個重要步驟,透過資料探索分析,我們可以對資料有更深入的了解,並且找出資料中的問題,進而進行資料清理與前處理。

EDA is an iterative cycle

  • EDA is an iterative cycle between visualizations, modeling, and hypothesis generation.

    • 從資料中發掘問題、找出有趣的現象,進行視覺化呈現,並且進行假說驗證。
    • 來來回回的循環,直到我們對資料有足夠的了解,才進行下一步 (資料清理與前處理/建立模型)。

具體來說,可以先回答

  • 變項的變異類型 What type of variation occurs within my variables?

  • 變項之間的線性(相關與共變異數)關係或非線性關係 What type of covariation occurs between my variables?

所以需要統計學,與視覺化技術。

  • 再提醒兩種數據類型(結構化資料 (Structured Data) 與非結構化資料 (Unstructured Data) 有稍微不同的程序。(如 Normalization 的方式等)

Kaggle

  • kaggle 是一個資料科學競賽平台,我們可以在上面找到很多資料科學的競賽,並且也透過競賽的方式來學習資料科學(與賺獎金)。對於新手而言,最重要的是上面有各式各樣整理乾淨的資料庫,當成練習素材。

  • 先申請帳號; 本週練習本

課堂小組練習

這是 GPT4資料分析結果,請大家先看過,跟著在 kaggle notebook 做看看,小組討論並做一些可能的補充分析(markdown+code)。任選中古車,或是電影評論資料來做,在本週日前上傳到課程的 Discord (in-class-coding) 頻道(權衡加分!)。

--- ## EDA for Textual Data [參考](https://www.kaggle.com/code/nilimajauhari/eda-for-textual-data-text-visualization)