寫程式是資料分析的必要技能

我們也許不能永遠仰賴圖形化使用者介面

Yao-Jen Kuo
數聚點文摘

--

Photo by Brooke Cagle on Unsplash

摘要

作為一個推廣程式與資料科學的倡義者(advocate),對於寫程式是資料分析的必要技能這個論點深感同意,但真正讓我念茲在茲的是怎麼傳達這個概念:學習寫程式並不是要變成軟體工程師,而是知道它在什麼情境下可以派上用場,提高工作效率。

我會先簡介引起撰寫文章動機的一個座談、簡單解釋這個座談提到的專有名詞然後舉一個小例子,希望讓還在躊躇資料分析是否需要學程式的人產生更強的學習動機。

Quotes from Hadley

You can’t do data science in a GUI.

Hadley Wickham

Hadley Wickham,RStudio 的首席資料科學家,形容是他隻手將 R 語言推上巔峰似乎都不算過譽。他於今年三月的 ACM(Association for Computing Machinery)芝加哥當地座談,分享為何也許不能永遠仰賴標榜以拖拉點選完成資料分析的套裝軟體,幾個座談重點是:

  • 寫程式是資料分析的必要技能
  • 寫程式相對的優勢有自動化、重複使用性與提升溝通效率
  • R 跟 Python 都很棒,適合用來解決資料科學的問題,當然 Hadley 更傾向 R,因為 R 是為資料量身打造的(tailored to the problems of data science)

什麼是 GUI、非 GUI?

GUI(Graphic User Interface)圖形化的使用者介面,有時候我們會講古意來形容透過以操作滑鼠(拖拉點選)為主,來與運算核心溝通的介面。像是常見的試算表、SPSS 與 Tableau。

Excel 試算表,Microsoft Taiwan
SPSS,IBM Taiwan
Tableau

至於非 GUI,就泛指透過指令與運算核心溝通,像是 Python、R。

Python
R

看著游標停在那裡,除了 print("Hello world!") ,說實話還真有點不知道要幹嘛?

http://renzhou.tw/yinwubrother-textmaker/

整合開發環境

不要再盯著游標跟黑螢幕了,趕快去下載一個整合開發環境 IDE(Integrated Development Environment)來用吧!說得簡潔一些,整合開發環境就是用來提升寫程式體驗的工具,它不是全然透過鍵盤或滑鼠跟運算核心溝通,而是在兩者之中取得一個不錯的平衡點,讓使用者同時保有兼顧方便的滑鼠操作與彈性大的指令操作,像是 Jupyter Lab 與 RStudio。

https://jupyterlab.readthedocs.io/en/stable/index.html
https://www.rstudio.com/

什麼是 Do Data Science?

了解 GUI 的定義之後,接著我們思考何謂 Do Data Science?在同一個座談中,Hadley Wickham 分享了一個 tidyverse 生態系的流程圖,大致給我們一個非常好的資料科學應用場景概觀,從資料取得、清理、轉置、模型、視覺化到溝通,都涵蓋於其中,我們要舉的例子屬於資料清理應用場景。

http://r4ds.had.co.nz/introduction.html

一個資料清理的例子

在先前的一篇文章大學城的房價較為抗跌保值裡頭曾經碰到一個問題,要把美國大學城資料由州名與大學城名參雜在一起的樣式清理轉換為州、大學城兩個欄位的樣式,您可以在此參考原始資料。

這是資料原本的樣子:

原始資料

最後要將資料整理成這樣:

轉換後的樣式

一開始碰到這個問題我會想,假如透過 GUI 來操作,該怎麼進行?大概會花費多少的時間?大概有以下幾個步驟:

  • 判斷文字是州名亦或者是大學城名
  • 清理文字後面不必要的中括號、小括號與其內容
  • 將州名與大學城名拆開,對應關係為一對多(一個州裡有多個大學城)

想了一會覺得用手動來處理確實辛苦且耗時,若能透過程式處理,不僅提高效率,也能避免操作錯誤;我們會需要用到迴圈、流程控制以及文字處理的相關知識。

使用 Python

使用 R

大功告成,今晚就不需要加班工作了,可以浪漫一些!

https://www.warnerbros.com/youve-got-mail
如果您喜歡這篇文章,有好多方式可以表達:- 請多按幾下「拍手」圖像支持
- 追蹤作者不錯過新的文章
- 轉發給您的朋友們
- 分享連結到自己的社群網站
- 訂閱 DataInPoint!

--

--