神譯局是36氪旗下編譯團隊,關注科技、商業、職場、生活等領域,重點介紹國外的新技術、新觀點、新風向。
編者按:數據科學家是21世紀最性感的職業。我學的不是這個專業,真可惜。沒關係,中途上車還來得及。一位化學工程專業的畢業生拿到的第一份工作就是數據分析師。他是怎麼做到的?自學。他是怎麼自學的呢?且看Travis Tang的詳細介紹。原文發標題是:How to Teach Yourself Data Science in 2020
第1部分——SQL、Python、R語言及數據可視化
最近,我剛剛從化學工程專業畢業,但我的第一份工作是在一家科技公司擔任數據分析師。我把自己從化學工程走到到數據科學的整個旅程都記錄到這裡了。從那以後,當我跟同學們談到我的這個舉動時,很多人都表達了同樣的興趣,並提出了同樣的問題……
「你是怎麼從工程轉到數據科學的?」
這也是我要問自己的問題——我該怎麼走?一年多以前,這個想法一直困擾著我,同時也推動著我去建立起數據科學家的技能樹。
進行這項研究的困難當然不是因為缺乏信息。相反,正是因為學習數據科學的資源太多了,使得你很難從一大堆平庸的資源裡面挑出最好的那些。
選擇太多,時間太少... ...
但是首先,我們得先了解一下... ...
什麼是數據科學?呃,這是一個很難回答的問題。事實上,不同的公司對數據科學的定義各不相同,導致這個術語變得模稜兩可,難以捉摸。有人說數據科學是編程,有人說是數學,還有人說數據科學就是要理解數據。事實證明,這些說法都對。在我看來,我最認同的定義是——
數據科學是利用從數學、計算機科學、領域知識汲取的技術和理論的交叉學科領域。[1]
數據科學是多學科的交叉。
在我看來,圖解的數據科學就是這樣的。我畫的時候不同知識之間的邊界是模糊的,這是我自己的感受,也就是把不同領域的知識融合在一起,就形成了所謂的「數據科學」。
好吧,那我得怎麼去學習數據科學呢?
在本系列博客文章裡,我會重點介紹我的學習之旅都學了哪些課程,並介紹各自的優缺點。通過這些,我希望能幫助那些跟我情況相同的的人規劃好自己在數據科學領域的自學之旅。本系列共分4部分:
在本文中,我會重點介紹作為數據科學家需要掌握哪些數據處理知識。要想學會處理數據,一般需要學習
用SQL(標準查詢語言)從資料庫中提取數據,以及
清洗、處理與分析數據(一般用Python及/或R語言)
有效地對數據進行可視化。
1.用SQL進行數據析取SQL是跟數據所在的資料庫進行通信的語言。如果說數據是埋在地下的寶藏的話,那SQL就是挖掘原始形式的寶藏的工具。說得更具體一點,SQL可以讓我們從資料庫中的一個表或多個表的組合裡面提取出信息。
掌握SQL並不難。
SQL有很多不同的「口味」,比方說SQL Server、PostgreSQL、Oracle、MySQL及SQLite等。它們之間稍微有些不同,但語法基本上都類似,所以用不著擔心自己用的哪種「口味」的SQL。
想學習語言,首先得學習單詞,然後再把單詞組合成句子和段落。學SQL基本上也是這樣。
為了學習一些最基本的概念(SQL的單詞或句子),我用了Datacamp (SQL入門)和Dataquest(SQL基礎)。(稍後我會介紹Datacamp和Dataquest各自的優缺點。)這些網站一般是通過講解練習和示例來傳授基本的SQL技能。涉及的一些基本概念包括:
用於數據過濾和選擇的SELECT和WHERE
用於數據匯總的COUNT,SUM,MAX,GROUP BY,HAVING
用於生成有用的不同列表和集合的DISTINCT,COUNT DISTINCT
決定什麼時候/在哪裡使用那些數據的OUTER(如LEFT)和INNER JOIN
字符串與時間轉換
UNION和UNION ALL。
(你現在可能還是一頭霧水,沒關係!這只是預計你要學習的內容列表。)
不過,能夠完成這些練習還不足以讓我成為分析師。我能理解單詞和句子,但是還沒法寫出完整的段落。尤其是,像子查詢尋、窗口函數這樣的一些重要、高級概念還沒涉及或者覆蓋完全,雖然在好幾次技術面試裡面都被考過了,而且對於我目前擔任的分析師角色至關重要。這些技能包括
為了學習這些技能,我主要是用SQLZoo.net,因為這個是免費的,而且每個概念都提供了非常具有挑戰性的練習。SQLZoo裡面我最喜歡的功能是它綜合問題,用一道題來測試對不同概念的理解。比方說,提供以下的實體關係圖,要求學員基於該關係圖創建複雜的查詢。
實體關係圖例子。
這跟我們作為分析師在工作中遇到的情況非常接近——我們利用學到的不同技巧來從同一個資料庫裡面提取信息。下面是SQLZoo的一個問題:「幫助臺」的實體關係圖。要求你根據此圖把經理和2017–08–12這一天當中每小時的已接電話數量展示出來。(可在此處自行嘗試!)
我還用了其他一些資源,包括Zachary Thomas的SQL Questions以及Leetcode 。
2.用R和Python進行數據處理要想學習數據科學所需的編程和工具,就免不了要碰R及/或Python。這兩個都是非常流行的程式語言,可用來進行數據處理、可視化和調整。究竟應該學R還是Python是個老掉牙的問題了,得另起文章才能討論清楚。我的意見?
其實選R還是python都沒關係——精通了R或python之後,另一個學起來也很容易。
我的python和R的編程之旅在是從CodeAcademy、Datacamp、Dataquest、SoloLearn以及Udemy這些跟我一起學編程的網站開始的。這些網站提供了按語言或程序包組織的自定進度的課程。它們都可以將概念分解成更容易理解的部分,還為用戶提供了入門代碼,讓用戶填空完成。這些網站一般會提供引導,幫助你完成簡單的演示,然後你會有機會馬上通過練習來實踐學到的概念。有些網站隨後還會提供基於項目的練習。
今天,我會重點介紹我最愛的兩個:Datacamp和Dataquest。
DataCamp
DataCamp提供了由本領域專業人士講授的視頻講座以及填空練習。視頻講座大多簡潔高效。
我最喜歡DataCamp的地方是最新課程,按照職業路徑組織SQL、R以及python的學習。這種方式避免了制定課程計劃的痛苦——現在你只需要按照自己感興趣的道路走就行了。其中的一些職業路徑包括:
Python / R 數據科學
Python / R / SQL數據分析師
R語言統計學家
Python / R 機器學習科學家
Python / R程式設計師
我個人是從R數據科學開始接受R語言培訓的,這門課程對R的tidyverse進行了相當詳細的介紹,tidyverse是一個非常有用的數據處理包,可用來對數據進行組織、操作和可視化,其中最值得注意的包括ggplot2(用於數據可視化)、dplyr (用於數據操作)以及stringr (用於字符串操作)。
我最喜歡的R語言軟體包。
不過我對DataCamp確實有不滿意的地方,那就是學完之後信息留存情況很糟糕。用填空的方式很容易可以靠猜來完成,導致未必真正理解概念。我在這個平臺上學習的時候,會努力在儘可能短的時間內完成儘可能多的課程。我大概看一下代碼,就開始在不了解全局的情況下填空。如果我可以重新開始DataCamp上的學習的話,我會花時間從整體上更好地消化和理解代碼,而不僅僅是要求我填寫的那部分。
DataQuest
Dataquest跟DataCamp非常相似。側重用代碼練習來闡明編程概念。跟Datacamp一樣,它提供了R、Python以及SQL方面的各種課程,儘管範圍比DataCamp的窄。比方說,跟Datacamp不一樣,Dataquest並不提供視頻講座。
Dataquest提供的一些課程包括:
R / Python數據分析師
Python數據科學
數據工程
一般而言,DataQuest的內容要比DataCamp的難得多。「填空」式的練習也更少。雖然在這裡學花費了更長的時間,但我的知識留存情況卻更好。
DataQuest的另一個重要功能是導師每個月都可以跟你通話,審核你的簡歷並提供技術指導。雖然我個人沒有聯繫過導師,但事後回想起來,這肯定可以幫助我更快取得進步。
3.數據可視化數據可視化是把你從數據獲得的洞察呈現出來的關鍵。在學習了用python和R創建圖表的技能之後,我通過Cole Knaflic所寫的《用數據講故事》(Storytelling with Data)這本書中學習了數據可視化的原理。
這本書是跟平臺無關的。換句話說,裡面不涉及任何特定的軟體,而是通過啟發性的例子來講授數據可視化的一般原理。通過這本書,預計你可以學到以下一些關鍵指標:
了解上下文
選擇有效的可視化效果
消除雜亂
在需要的地方吸引注意力
像設計師一樣思考
要講故事
我以為自己了解數據可視化,直到我看了這本書才知道自己不知道。
消化吸收完這本書之後,我創建一個視覺上(多少有點)令人愉悅的圖表,來說明警察對黑人殘酷對待的問題。通過這本書我學到的其中一個重要經驗是要在需要的地方吸引別人的注意力。在這張圖表裡面我是通過這樣的處理來實現的:用明亮的黃色線條來突出顯示非裔美國人(讓人聯想起BLM的色調),同時確保圖表的其餘部分仍保留在背景之中,並輔以白色和灰色等暗一點的陰影。
作者的一個數據可視化技術的應用。
在本文中,我介紹了自己從零開始學習編程的步驟。通過這些課程,現在你已經具備了處理數據的必要技能!但是,前面還有很長的路要走。在接下來的文章裡,我會介紹以下內容:
第2部分——數學、概率論與統計
第3部分——計算機科學基礎
第4部分:機器學習
2-4部分將在未來推出,敬請期待!
譯者:boxi。