為什麼數據分析需要會編程語言?

如題,編程語言的作用是什麼?

如Python、R、C++、Java這些語言的功能實現上和不太需要編程的SPSS Modeler SAS/EM 統計 數據挖掘軟體有什麼不同?

有什麼是這些後者不能實現而前者可以的?


對於數據分析,如果只是給定準備好的數據集,做簡單的描述性統計、簡單繪圖,那麼不太需要掌握任何編程語言。問題是,現實中收集到的數據是多樣的、基礎的,很少能直接滿足模型對數據規格的要求以及模型成立的假設,那麼就需要在分析前變換、合併、分類、整理數據,此時可能需要從資料庫用SQL跨表查詢,數據整理好後利用模型做統計推斷或者機器學習等等,形成樣本內或樣本外的預測,可能還要用可視化的方式呈現結果。

這整個過程中,各個環節都可能涉及到大量的參數需要調節,各種細節都需要控制,還有很多主觀的選擇。這樣的過程如果用軟體窗口去實現,窗口中的選項將非常複雜,整個過程需要在多個數據及上重複執行也很麻煩。用編程語言可以精確地描述整個過程,控制大部分細節,並且可以批量的重複實現。

數據分析和探索的過程是一個不斷嘗試想法、驗證假設的過程,這就需要臨時產生、執行新的代碼,腳本語言如Python和R天生就是對這樣的互動操作有很好的支持。如果這種過程都用C++或Java這些需要編譯(二進位或bytecode)——執行的語言來完成,那麼過程將比較痛苦。

因此對於專業的數據分析,掌握資料庫的應用、數據分析的編程語言是很有必要的。題目中提到的編程語言一些是通用編程語言(如C++、Java)可以廣泛地用於開發各種項目,而R作為腳本語言憑藉其良好的互動性和豐富的擴展包資源可以方便地解決大部分數據處理、變換、統計分析、可視化的問題,並可以重現所有的細節。數據分析者最好通用語言和腳本語言各至少掌握一種,這樣在處理許多項目時就能合理地發揮不同語言的優勢,提高整體的生產力。


我覺得@任坤答的很棒!

那我以SAS為例談談我的感受吧~

首先,數據挖掘軟體的使用範圍較小。拿EM來說,EM解決的是數據挖掘的事,包括聚類模型,預測模型,神經網路,購物籃分析,文本挖掘,信用卡風險建模等等等,SAS公司已經將這一個一個模型都模塊化,其好處就是不用寫大量的編程語言,拖一下結點,改一下參數,模型就可以跑出來了。那麼其局限性也就在此,如果有新的模型,sas還沒幫你封裝,那對不起,你還得自己編程。

其次,從使用的角度來說EM有其不方便的地方。雖然模塊化了,但是在一些前期數據處理上還是不夠自由,比如異常值的處理,變數處理上等等等,而自己寫代碼編程也可以根據自己的需求進行編寫。我自己建模的時候比較喜歡直接用sas寫代碼…

最後,EM的使用中也是需要一些簡單的代碼知識的。我曾經參加過一系列SAS公司開設的EM的培訓,那個講師說默認我們都是會sas的基本編程語法的…所以怎麼也離不開編程語言呀!

我SAS用的比較多,其他不了解就不瞎說啦…

手機回答,版式比較亂,見諒!


推薦閱讀:

為什麼很多語言中,要用三個引號或其他符號來表示多行字元串字面量?
關於 Type Inference 的各種應用和學習資料?
三宮六院七十二妃(程序YUAN版)
做web開發需要在工作中注意哪些安全方面的問題?

TAG:編程語言 | 數據挖掘 | 數據分析 |