數據科學部門如何使用Python和R組合完成任務

概述

和那些數據科學比賽不一樣,在真實的數據科學中,咱們可能更多的時間不是在作算法的開發,而是對需求的定義和數據的治理。因此,如何更好的結合現實業務,讓數據真正產生價值成了一個更有意義的話題。python

數據科學項目的完整流程一般是這樣的五步驟:
需求定義=》數據獲取=》數據治理=》數據分析=》數據可視化jquery

1、需求定義

需求定義是數據科學項目和數據科學比賽的最大不一樣之處,在真實情景下,咱們每每對目標函數、自變量、約束條件都並不清晰。須要經過訪談、論文、文檔等等形式對問題進行系統地分析,將實際問題量化爲能夠解決的抽象問題,肯定自變量、約束條件以及目標函數。在真實情景下,需求每每是多變化的,臨時的,如何把握好需求成爲了整個項目後續推動的關鍵要素。web

2、數據獲取

數據獲取的形式主要包括:算法

  1. 現有數據庫的調用數據庫

  2. 現有API的調用django

  3. 自行設計的爬蟲websocket

在數據獲取中,比較重頭的一項就是爬蟲的開發,這裏 R 雖然開發了 rvest 包, 不過比起 django-scrapy 這樣完整的爬蟲調度系統不由黯然失色,因此在第一步,我建議使用Python作爬蟲的開發。app

3、數據治理

數據治理第一步就是數據的定義,而數據的定義經過 Python的各類ORM框架和admin系統,能夠很是出色地完成數據倉庫的定義和管理。經過 airflow 咱們又能夠很好的對ETL過程作全流程的監控。
因此,在第二步,我依然建議使用Python做爲數據治理的工具。echarts

4、數據分析

數據分析首先涉及的就是探索式分析,這一點正是R語言的強項,適宜於各類強大的數據可視化,咱們能夠利用R快速瞭解數據的總體特性,經過 data.table 和 Rcpp 咱們也能夠快速提高 R 的單機性能,省去了Cython寫wrapper的尷尬。而Python 因爲須要更多約束的分析操做,在探索式分析中相比 R 少了幾分靈活性。至少是矩陣乘法我更願意接受直觀的 %*%, 而不是np.dot()。因此,第三步,我建議使用 R 完成數據的分析工做。框架

5、數據可視化

數據可視化原本是JS的天下,可是感謝 R語言生態中熱衷於給JS作封裝的開發者們,如今市面上絕大部分在BI領域會涉及到的JS庫都已經被 R 語言封裝好了,好比 echarts、highcharts、rcharts、d3等等。另外一方面,經過 shiny, 咱們快速極大地簡化了BI構建的流程,跳過底層jquery、boostrap、websocket等等細節,直接針對業務場景構建BI系統,幫助咱們在快速構建BI原型上掃清障礙,而不是在Tornado裏面辛苦地改template。顯然,使用 R 作數據可視化能夠大大減小咱們的開發時間。因此,第四部,我也建議使用 R 完成數據可視化的工做。

總結

這樣正常數據科學項目作下來,咱們須要交付一個爬蟲管理系統(django-scrapy)、一個數據倉庫管理系統(django)、一個流程監控系統(airflow)、一個BI分析系統(shiny),真正完成對整個數據科學項目的可監控、可維護,而後在這個過程當中咱們不斷去迭代咱們的數據產品,優化流程,完善模型,最終實現反哺業務。

總結起來,將Python做爲數據科學的基礎,而R做爲上層建築是一個不錯的解決方案,固然這一切都創建在數據開發人員具備過硬的開發技能,不然Python和R的隨意性會釀成巨大的慘案。

參考資料

相關文章
相關標籤/搜索