如何輕鬆搞定資料科學麵試:Python&R語言篇
對於資料科學家來說,工作的一大部分都需要在互動式程式設計環境中對資料進行處理、分析和視覺化。
在過去幾年,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資料分析師”。
相關文章
- 【譯Py】資料科學麵試終極指南(一)資料科學
- 【譯Py】資料科學麵試終極指南(五)資料科學
- 【譯Py】資料科學麵試終極指南(七)資料科學
- 【譯Py】資料科學麵試終極指南(二)資料科學
- 如何輕鬆搞定光纖熔接
- 如何輕鬆學習Python資料分析?Python
- 上億條資料,OurwayBI也能輕鬆搞定
- Go語言輕鬆進階Go
- (資料科學學習手札149)用matplotlib輕鬆繪製漂亮的表格資料科學
- 自然語言處理背後的資料科學自然語言處理資料科學
- 5分鐘,輕鬆搞定Oracle資料庫等保測評Oracle資料庫
- Vue資料驅動表單渲染,輕鬆搞定form表單VueORM
- Python或將成資料科學家首選語言Python資料科學
- 如何輕鬆學習 Kubernetes?
- 如何使用MindStudio輕鬆搞定大模型全流程開發大模型
- go語言實戰課程《Go語言開發分散式任務排程 輕鬆搞定高效能Crontab》——推薦分享Go分散式
- 學會XPath,輕鬆抓取網頁資料網頁
- 利用大型語言模型輕鬆打造浪漫時刻模型
- 在資料科學領域,Python語言和R語言有何區別?資料科學PythonR語言
- 填報指令碼之輕鬆搞定複雜表的資料入庫指令碼
- 零基礎學AI,輕鬆搞定人工智慧6大方向【附資料】AI人工智慧
- 如何排查DNS解析出錯?這四步輕鬆搞定DNS
- 資料夾刪除了如何恢復?輕鬆恢復教學
- 輕鬆搞定專案流程自動化
- 在 Google Cloud 上輕鬆部署開放大語言模型GoCloud模型
- (資料科學學習手札85)Python+Kepler.gl輕鬆製作酷炫路徑動畫資料科學Python動畫
- (資料科學學習手札90)Python+Kepler.gl輕鬆製作時間輪播地圖資料科學Python地圖
- AI 學習之路——輕鬆初探 Python 篇(三)AIPython
- 學會這些linux的“自動化”輕鬆搞定任務Linux
- 如何開啟自媒體寫作?4步教你輕鬆搞定
- 微信流量如何獲取,簡單一招輕鬆搞定!
- (資料科學學習手札100)搞定matplotlib中的字型設定資料科學
- 輕鬆篡改WebSocket資料包Web
- 【資料科學家】如何成為一名資料科學家?資料科學
- 輕鬆玩轉51微控制器C語言pdfC語言
- 3D 穿梭效果?使用 CSS 輕鬆搞定3DCSS
- MySQL8.0輕鬆搞定GTID組複製MySql
- Jenkins部署安裝,輕鬆三步搞定Jenkins