如何輕鬆搞定資料科學麵試:Python&R語言篇

技術小能手發表於2018-09-20

對於資料科學家來說,工作的一大部分都需要在互動式程式設計環境中對資料進行處理、分析和視覺化。

在過去幾年,R語言和Python成了進行資料科學中最炙手可熱的兩種語言。這兩種語言各有優缺點,掌握這兩種語言大有益處,但是針對面試者而言,最好的方式是學習其中一種並熟練掌握。

在本文中,我對這兩種語言分別進行介紹,希望能幫助你更好地應對資料科學麵試。

1. 選擇一種語言

正如上文中所提到的,我並不建議你兩種語言都掌握。在我所經歷的面試中,無論是作為面試者還是面試官,我發現這些面試都允許面試者用任何一種語言解決問題。所以選取其中一種進行學習即可。

那麼,應該選Python還是R語言呢?

Python

Python是一種多用途且功能齊全的程式語言。旨在實現C語言、Java等程式語言同樣的的功能。與C語言不同,Python使用起來更方便,具有自動記憶體管理和動態型別等功能。

在我看來,用Python進行資料科學優勢在於:它能夠像生產系統的後端語言一樣。也就是說,作為資料科學家,你的任何建模都可以通過線上網站或軟體產品等形式輕鬆實現。如果你主要的興趣是寫程式碼或原型化程式碼,我推薦選擇Python。

R

另一方面,R語言更像是分析語言。R支援所有標準的電腦科學資料結構和技術,例如陣列和for迴圈,而且R語言非常擅長處理矩形資料集,就像在電子表格程式中看到的那樣。但與電子表格不同的是,你仍可以利用迭代和抽象等電腦科學概念,這使得R語言比Excel更強大。

此外,R是學術界定量研究人員使用的語言。這也就是說,通常最先進的統計技術會最先使用在R包中,並且遠早於其他語言,包括Python。因此,如果你的主要工作涉及到離線分析和資料視覺化,並且你想接觸到前沿的統計學包,那麼R是不錯的選擇。

總而言之,選擇任何當中一種語言都不會出錯。這兩種語言都很強大,使用任何一種都能實現你想完成的資料科學任務。

2. 選擇操作環境

當你選擇了語言之後,下一步需要熟悉最適合這種語言的互動環境。這樣你之後在編寫、儲存程式碼,資料視覺化以及管理包時都會更輕鬆。

Python

Python方面是Jupyter,並使用相關notebook進行設定。這與RStudio非常不同,但同樣很有用。Jupyter提供了基於瀏覽器的notebook,而不是本地IDE,在當中你能夠將程式碼分成可執行的塊,因此你可以分段執行程式碼並進行分析。輸出顯示在生成程式碼的下方,因此你能很清楚哪個輸出來自哪個分析。此外,由於它是基於瀏覽器的,Jupyter notebook也易於與他人共享。

R

R方面是RStudio。與使用命令列或其他IDE相比,使用RStudio進行資料分析要方便得多。使用RStudio能夠管理包,訪問檔案,顯示視覺化,併為你提供可自定義的文字編輯器和控制檯。整個環境為四格視窗形式,操作起來非常方便。

3. 程式設計基礎知識

無論選擇哪種語言,你都需要了解程式設計基礎知識,比如資料型別、結構、迭代和抽象。但你在面試中不會直接被問到這些問題,因為這通常是軟體工程面試中所涉及的。但是你肯定需要熟悉這些概念,從而完成資料科學麵試中的白板問題,以及可帶回家完成的程式設計挑戰。

資料型別

資料型別是描述儲存資訊型別的一種方式。Python的資料型別有:數字、整數、長整數或浮點數;布林值、二進位制;還可以是字串,即各種字元的組合。在R語言中,以上所有的型別還要加上:由不同的字串表示的有序變數。

關於不同資料型別如何儲存和編碼這方面知識很深奧,但在面試中無需擔心這方面問題。要注意的是,任何給定的資料單元都屬於這些型別之一,並且資料型別將決定你能對資料執行的具體操作。例如,你可以將兩個數字變數相乘,但你將無法對兩個字串執行此操作。

資料結構

資料結構是資料的數字或字串的組合方式。Python有列表(list)和元組,兩者都是有序的資料集合,其中列表在其他語言中稱為陣列。還有集合(set),這是無重複的無序變數集合。此外,Python還有字典(dictionary),表示鍵值對的有序集合。R語言中有向量(vector),這類似Python的列表,列表,矩陣和資料框。

迭代

迭代是電腦科學中的一個重要概念,它與資料結構密切相關,實質上它是對資料結構中每個專案執行操作的一種方法。這裡的兩大類是向量化運算和迴圈。向量化函式是將單個函式應用於資料結構的每個元素,並返回一個元素。

例如,你可以用五個不同數字的列表或向量,然後得到每個數字平方根的新向量。另一方面,迴圈能讓你寫執行在給定結構中的程式碼塊。這通常比較慢,但更靈活,因為你可以執行任意程式碼,並得出任何輸出。

迴圈在R和Python中以相同的形式存在。然而,向量化函式在兩種語言中的形式多樣且差別大。在R中,有apply的向量化函式族。在Python中有列表解析和Numpy包中的vectorize等選項。這看起來可能很繁瑣,但一旦掌握這個概念你就會發現,這些只是相同基本概念的不同應用方式:即選用某種資料結構並對每個元素進行操作。

抽象

抽象是一種編寫程式碼塊的方法,可以通過提供給不同的輸入重新使用。例如,你可以寫一個函式,接受單個數字輸入並將其相乘以獲得平方值。然後你可以將任意數字傳遞給函式以獲得平方輸出,這比在需要時手動進行平方更簡潔。Python和R都允許使用者定義函式,語法略有不同。

4. 資料操作

資料處理是面試問題中的一類。例如SQL,面試官會給你提供樣本資料集,並要求你輸出特定結果。

對於這種型別的面試來說,重要的是你熟悉用R或Python包進行資料操作。

Python

Python方面你需要掌握Pandas,這提供了一個完整的框架來執行資料框,包含行和列的矩形資料集。Pandas具有你需要用到的所有操作符,包括過濾、聚合、連線等方法。

R

雖然R本身支援矩陣和資料框形式的矩形資料集,但你仍然可以通過學習dplyr或data.table來讓操作更簡便。這些包都提供了很好的操作介面:dplyr更直觀和可讀,而data.table更快,語法更簡潔。

5. 統計

統計可能會在白板面試中遇到。這實際上是最簡單的部分,因為複雜的統計函式在這些語言中通常被抽象為易於使用的函式。

R中包含許多基本的統計函式。你要花費數小時寫的程式碼,這可能用簡單線性迴歸就可以執行:

model <- lm(y ~ x1 + x2, data = df)

在Python中,你至少需要Numpy和Scipy軟體包才能確保涵蓋了基本的統計功能,但跟R語言一樣,一旦安裝完畢你就可以應用了。

6. 視覺化

除了白板面試,許多資料科學麵試還有可帶回家完成的程式設計挑戰,這通常會給出樣本資料集,要求你進行分析並得出結論。通常你需要發回程式碼,一些解釋性文字和視覺化。下面看到視覺化問題。

對於R和Python,進行視覺化實際上只有一種選項:在Python中用matplotlib,在R中用ggplot2。這兩個庫都有靈活的介面,用於建立漂亮的資料視覺化。

對於帶回家完成的程式設計挑戰的小建議:給圖表起標題,注意對軸進行標註,如果需要可加上誤差條,顏色上注意一致性。例如,如果你在圖表中將iOS資料點設定為紅色,Android為藍色,那麼在所有後續圖表中要保持一致。同時圖表選擇要簡單,通常只需條形圖,折線圖和散點圖即可。

7. 結語

通常當你深入瞭解程式設計概念時會感到不知所措,但你一旦掌握了程式語言的基礎知識,那麼接下來就可以使用相關工具進行資料操作、統計和視覺化。專注於這三個方面,那麼你就能輕鬆搞定資料科學麵試。

原文釋出時間為:2018-09-19

本文來自雲棲社群合作伙伴“CDA資料分析師”,瞭解相關資訊可以關注“CDA資料分析師”。


相關文章