作為一名數據科學家Python需要掌握到什麼程度?
01-08
感謝濤哥邀請。。。。
之前一直用R,最近正在學python,因為沒有什麼工作經驗,也只能談談自己的感悟。數據科學家算是統計師和程序員的結合體,來源也主要是這兩個專業的畢業生。不過這兩個群體的思維方式還真的是不一樣。可以認為,統計的人更加偏愛R,程序員更偏愛python。
其實python有了pandas才能使數據分析變的像R那樣簡單。數據科學家能把python用的像R一樣我覺得就好了。不過如果除了數據分析,公司要求代碼的重用性,或者直接嵌入到產品中(比如網站推薦系統),那麼對編程的要求就更高了。其實數據科學家在做數據分析的時候,起碼80%的時間是在做數據整理和清洗,同意 @唐學偉說的熟練使用pandas就好,這意味著能熟練的清理掉不必要數據,讀取主要的數據格式文件,數據的合併匯總歸類和切片等等。數據整理好比學編程要最起碼能控制if-else和for循環,命令簡單但是實用。數據整理好了,對於各種演算法包里的函數,其實就是input output的問題了。另外一個常用的就是數據可視化也就是繪圖了(目前主要是matplotlib)。這個步驟對於input的數據就是數據探索化的過程,查看數據是否有不合理性,數據的分布等等,對於output的數據就是結果呈現的過程,這樣更有助於分析。
總而言之,數據科學家熟悉python的基本語法,熟練pandas(基於numpy),能利用python熟練的獲取數據,整理數據,並會使用matplotlib展現數據是一個基本的要求。對於要做科學計算或者機器學習來說,數據整理好了,編程不是問題,數學才是。掌握到熟練使用pandas為止
有人說掌握R即可,我不太同意。
據我所知,目前北美幾大著名創業公司採用的都是scikit,比如airbnb、Strip等大量使用機器學習的公司都是採用Python下的Scikit。可以參照如下鏈接
Stripe:http://www.slideshare.net/MichaelManapat/randomness-and-fraudAirbnb:Architecting a Machine Learning System for Riskpattern_classification/python_data_libraries.md at master · rasbt/pattern_classification · GitHub
這得看工作需求了,如果你所在的部門/實驗室都用R/SAS/java/c++之類的,會用py進行預處理基本就可以了;如果主要用py來進行挖掘,需要掌握的就多一些,比如:numpy/scipy/mattplotlib/ipython/scikit-learn等
不同意R就足夠了,也不同意pandas就足夠了,哪怕只做數據處理只用這兩個工具,永遠不會明白什麼是數據結構,也無法具有程序員的思維方式,DS需要統計+計算機。數據科學家這麼高端的名詞,不是只拿工具做上層的應用業務分析做的好,可以說是好的分析師,程序編的溜,可以說是好的工程師。科學家起碼要有點區別吧
對於絕大多數的數據分析問題
import pandas as pd
import numpy as npimport matplotlib.pyplot as plt就足夠了pandas的DataFrame結構作為數據的容器,pandas和numpy提供數據處理的函數和方法,matplotlib用來作圖剩下的,比如scipy在求解最優化問題或者數值積分有時會用一下但是用的不多;要是樓主還玩機器學習的話再加上scikit-learn
總之,最最常用的還是一開頭列的那三個學點 AWK 倒是真好用,python 搞明白 list dict tuple 就可以了。
一個數據科學家不一定非得用Python. Ta可以用R, Matlab, Java, C....但關鍵的是要熟練地掌握一門編程語言, 並且能為之服務。至於熟練到什麼程度, 我個人的意見是越熟練越好。 我見過一些數據科學家沒有足夠的編程技巧, 即使他們有什麼想法也不能準確實現, 總是在細節上卡住, 比如不能根據情況選擇正確的數據結構, 導致程序效率低下。
會不會都行. R在這方面屬於新秀, 到目前為止這個領域還是spss, stata, sas, matlab和R的天下.如果一定要選python, 那麼也僅需要掌握基本語法, 常用數據結構和關於數據處理還有統計的那些包就夠了.
推薦閱讀:
※處理數據時不進行歸一化會有什麼影響?歸一化的作用是什麼?什麼時候需要歸一化?有哪些歸一化的方法?
※如何評價小米 2013 上半年業績,相對其他公司的成長有哪些可參照性?
※自己寫了一個C++矩陣計算庫,想做一下全面測試,該如何進行?
※小龍蝦為什麼這麼火以及怎麼火遍全國的?