⑴ 如何系統地自學 python
是否非常想學好 Python,一方面被瑣事糾纏,一直沒能動手,另一方面,擔心學習成本太高,心裡默默敲著退堂鼓?
幸運的是,Python 是一門初學者友好的編程語言,想要完全掌握它,你不必花上太多的時間和精力。
Python 的設計哲學之一就是簡單易學,體現在兩個方面:
語法簡潔明了:相對 Ruby 和 Perl,它的語法特性不多不少,大多數都很簡單直接,不玩兒玄學。
切入點很多:Python 可以讓你可以做很多事情,科學計算和數據分析、爬蟲、Web 網站、游戲、命令行實用工具等等等等,總有一個是你感興趣並且願意投入時間的。
廢話不多說,學會一門語言的捷徑只有一個: Getting Started
¶ 起步階段
任何一種編程語言都包含兩個部分:硬知識和軟知識,起步階段的主要任務是掌握硬知識。
硬知識
「硬知識」指的是編程語言的語法、演算法和數據結構、編程範式等,例如:變數和類型、循環語句、分支、函數、類。這部分知識也是具有普適性的,看上去是掌握了一種語法,實際是建立了一種思維。例如:讓一個 Java 程序員去學習 Python,他可以很快的將 Java 中的學到的面向對象的知識 map 到 Python 中來,因此能夠快速掌握 Python 中面向對象的特性。
如果你是剛開始學習編程的新手,一本可靠的語法書是非常重要的。它看上去可能非常枯燥乏味,但對於建立穩固的編程思維是必不可少。
下面列出了一些適合初學者入門的教學材料:
廖雪峰的 Python 教程 Python 中文教程的翹楚,專為剛剛步入程序世界的小白打造。
笨方法學 Python 這本書在講解 Python 的語法成分時,還附帶大量可實踐的例子,非常適合快速起步。
The Hitchhiker』s Guide to Python! 這本指南著重於 Python 的最佳實踐,不管你是 Python 專家還是新手,都能獲得極大的幫助。
Python 的哲學:
學習也是一樣,雖然推薦了多種學習資料,但實際學習的時候,最好只選擇其中的一個,堅持看完。
必要的時候,可能需要閱讀講解數據結構和演算法的書,這些知識對於理解和使用 Python 中的對象模型有著很大的幫助。
軟知識
「軟知識」則是特定語言環境下的語法技巧、類庫的使用、IDE的選擇等等。這一部分,即使完全不了解不會使用,也不會妨礙你去編程,只不過寫出的程序,看上去顯得「傻」了些。
對這些知識的學習,取決於你嘗試解決的問題的領域和深度。對初學者而言,起步階段極易走火,或者在選擇 Python 版本時徘徊不決,一會兒看 2.7 一會兒又轉到 3.0,或者徜徉在類庫的大海中無法自拔,Scrapy,Numpy,Django 什麼都要試試,或者參與編輯器聖戰、大括弧縮進探究、操作系統辯論賽等無意義活動,或者整天跪舔語法糖,老想著怎麼一行代碼把所有的事情做完,或者去構想聖潔的性能安全通用性健壯性全部滿分的解決方案。
很多「大牛」都會告誡初學者,用這個用那個,少走彎路,這樣反而把初學者推向了真正的彎路。
還不如告訴初學者,學習本來就是個需要你去走彎路出 Bug,只能腳踏實地,沒有奇跡只有狗屎的過程。
選擇一個方向先走下去,哪怕臟丑差,走不動了再看看有沒有更好的解決途徑。
自己走了彎路,你才知道這么做的好處,才能理解為什麼人們可以手寫狀態機去匹配卻偏要發明正則表達式,為什麼面向過程可以解決卻偏要面向對象,為什麼我可以操縱每一根指針卻偏要自動管理內存,為什麼我可以嵌套回調卻偏要用 Promise...
更重要的是,你會明白,高層次的解決方法都是對低層次的封裝,並不是任何情況下都是最有效最合適的。
技術涌進就像波浪一樣,那些陳舊的封存已久的技術,消退了遲早還會涌回的。就像現在移動端應用、手游和 HTML5 的火熱,某些方面不正在重演過去 PC 的那些歷史么?
因此,不要擔心自己走錯路誤了終身,堅持並保持進步才是正道。
起步階段的核心任務是掌握硬知識,軟知識做適當了解,有了穩固的根,粗壯的枝幹,才能長出濃密的葉子,結出甜美的果實。
¶ 發展階段
完成了基礎知識的學習,必定會感到一陣空虛,懷疑這些語法知識是不是真的有用。
沒錯,你的懷疑是非常正確的。要讓 Python 發揮出它的價值,當然不能停留在語法層面。
發展階段的核心任務,就是「跳出 Python,擁抱世界」。
在你面前會有多個分支:科學計算和數據分析、爬蟲、Web 網站、游戲、命令行實用工具等等等等,這些都不是僅僅知道 Python 語法就能解決的問題。
拿爬蟲舉例,如果你對計算機網路,HTTP 協議,HTML,文本編碼,JSON 一無所知,你能做好這部分的工作么?而你在起步階段的基礎知識也同樣重要,如果你連循環遞歸怎麼寫都還要查文檔,連 BFS 都不知道怎麼實現,這就像工匠做石凳每次起錘都要思考錘子怎麼使用一樣,非常低效。
在這個階段,不可避免要接觸大量類庫,閱讀大量書籍的。
類庫方面
「Awesome Python 項目」:vinta/awesome-python · GitHub
這里列出了你在嘗試解決各種實際問題時,Python 社區已有的工具型類庫,如下圖所示:
vinta/awesome-python
你可以按照實際需求,尋找你需要的類庫。
至於相關類庫如何使用,必須掌握的技能便是閱讀文檔。由於開源社區大多數文檔都是英文寫成的,所以,英語不好的同學,需要惡補下。
書籍方面
這里我只列出一些我覺得比較有一些幫助的書籍,詳細的請看豆瓣的書評:
科學和數據分析:
❖「集體智慧編程」:集體智慧編程 (豆瓣)
❖「數學之美」:數學之美 (豆瓣)
❖「統計學習方法」:統計學習方法 (豆瓣)
❖「Pattern Recognition And Machine Learning」:Pattern Recognition And Machine Learning (豆瓣)
❖「數據科學實戰」:數據科學實戰 (豆瓣)
❖「數據檢索導論」:信息檢索導論 (豆瓣)
爬蟲:
❖「HTTP 權威指南」:HTTP權威指南 (豆瓣)
Web 網站:
❖「HTML & CSS 設計與構建網站」:HTML & CSS設計與構建網站 (豆瓣)
...
列到這里已經不需要繼續了。
聰明的你一定會發現上面的大部分書籍,並不是講 Python 的書,而更多的是專業知識。
事實上,這里所謂「跳出 Python,擁抱世界」,其實是發現 Python 和專業知識相結合,能夠解決很多實際問題。這個階段能走到什麼程度,更多的取決於自己的專業知識。
¶ 深入階段
這個階段的你,對 Python 幾乎了如指掌,那麼你一定知道 Python 是用 C 語言實現的。
可是 Python 對象的「動態特徵」是怎麼用相對底層,連自動內存管理都沒有的C語言實現的呢?這時候就不能停留在表面了,勇敢的拆開 Python 的黑盒子,深入到語言的內部,去看它的歷史,讀它的源碼,才能真正理解它的設計思路。
這里推薦一本書:
「Python 源碼剖析」:Python源碼剖析 (豆瓣)
這本書把 Python 源碼中最核心的部分,給出了詳細的闡釋,不過閱讀此書需要對 C 語言內存模型和指針有著很好的理解。
另外,Python 本身是一門雜糅多種範式的動態語言,也就是說,相對於 C 的過程式、 Haskell 等的函數式、Java 基於類的面向對象而言,它都不夠純粹。換而言之,編程語言的「道學」,在 Python 中只能有限的體悟。學習某種編程範式時,從那些面向這種範式更加純粹的語言出發,才能有更深刻的理解,也能了解到 Python 語言的根源。
這里推薦一門公開課
「編程範式」:斯坦福大學公開課:編程範式
講師高屋建瓴,從各種編程範式的代表語言出發,給出了每種編程範式最核心的思想。
值得一提的是,這門課程對C語言有非常深入的講解,例如C語言的范型和內存管理。這些知識,對閱讀 Python 源碼也有大有幫助。
Python 的許多最佳實踐都隱藏在那些眾所周知的框架和類庫中,例如 Django、Tornado 等等。在它們的源代碼中淘金,也是個不錯的選擇。
¶ 最後的話
每個人學編程的道路都是不一樣的,其實大都殊途同歸,沒有迷路的人只有不能堅持的人!
希望想學 Python 想學編程的同學,不要猶豫了,看完這篇文章,
Just Getting Started !!!
⑵ 如何入門大數據
大數據
數據科學並沒有一個獨立的學科體系,統計學,機器學習,數據挖掘,資料庫,分布式計算,雲計算,信息可視化等技術或方法來對付數據。
但從狹義上來看,我認為數據科學就是解決三個問題:
1. data pre-processing;(數據預處理)
2. data interpretation;(數據解讀)
3.data modeling and analysis.(數據建模與分析)
這也就是我們做數據工作的三個大步驟:
1、原始數據要經過一連串收集、提取、清洗、整理等等的預處理過程,才能形成高質量的數據;
2、我們想看看數據「長什麼樣」,有什麼特點和規律;
3、按照自己的需要,比如要對數據貼標簽分類,或者預測,或者想要從大量復雜的數據中提取有價值的且不易發現的信息,都要對數據建模,得到output。
這三個步驟未必嚴謹,每個大步驟下面可能依問題的不同也會有不同的小步驟,但按我這幾年的經驗來看,按照這個大思路走,數據一般不會做跑偏。
這樣看來,數據科學其實就是門復合型的技術,既然是技術就從編程語言談起吧,為了簡練,只說說R和Python。但既然是薦數據科學方面的書,我這里就不提R/Python編程基礎之類的書了,直接上跟數據科學相關的。
R programming
如果只是想初步了解一下R語言已經R在數據分析方面的應用,那不妨就看看這兩本:
R in action:我的R語言大數據101。其實對於一個沒有任何編程基礎的人來說,一開始就學這本書,學習曲線可能會比較陡峭。但如果配合上一些輔助材料,如官方發布的R basics(http://cran.r-project.org/doc/contrib/usingR.pdf),stackoverflow上有tag-R的問題集(Newest 『r』 Questions),遇到復雜的問題可在上面搜索,總會找到解決方案的。這樣一來,用這本書拿來入門學習也問題不大。而且這本書作者寫得也比較輕松,緊貼實戰。
Data analysis and graphics using R:使用R語言做數據分析的入門書。這本書的特點也是緊貼實戰,沒有過多地講解統計學理論,所以喜歡通過情境應用來學習的人應該會喜歡這本入門書。而且這本書可讀性比較強,也就是說哪怕你手頭沒電腦寫不了代碼,有事沒事拿出這本書翻一翻,也能讀得進去。
但如果你先用R來從事實實在在的數據工作,那麼上面兩本恐怕不夠,還需要這些:
Modern applied statistics with S:這本書里統計學的理論就講得比較多了,好處就是你可以用一本書既復習了統計學,又學了R語言。(S/Splus和R的關系就類似於Unix和Linux,所以用S教程學習R,一點問題都沒有)
Data manipulation with R:這本書實務性很強,它教給你怎麼從不同格式的原始數據文件里讀取、清洗、轉換、整合成高質量的數據。當然和任何一本注重實戰的書一樣,本書也有豐富的真實數據或模擬數據供你練習。對於真正從事數據處理工作的人來說,這本書的內容非常重要,因為對於任何研究,一項熟練的數據預處理技能可以幫你節省大量的時間和精力。否則,你的研究總是要等待你的數據。
R Graphics Cookbook:想用R做可視化,就用這本書吧。150多個recipes,足以幫你應付絕大多數類型的數據。以我現在極業余的可視化操作水平來看,R是最容易做出最漂亮的圖表的工具了。
An introction to statistical learning with application in R:這本書算是著名的the element of statistical learning的姊妹篇,後者更注重統計(機器)學習的模型和演算法,而前者所涉及的模型和演算法原沒有後者全面或深入,但卻是用R來學習和應用機器學習的很好的入口。
A handbook of statistical analysis using R:這本書內容同樣非常扎實,很多統計學的學生就是用這本書來學慣用R來進行統計建模的。
Python
Think Python,Think Stats,Think Bayes:這是Allen B. Downey寫的著名的Think X series三大卷。其實是三本精緻的小冊子,如果想快速地掌握Python在統計方面的操作,好好閱讀這三本書,認真做習題,答案鏈接在書里有。這三本書學通了,就可以上手用Python進行基本的統計建模了。
Python For Data Analysis: 作者是pandas的主要開發者,也正是Pandas使Python能夠像R一樣擁有dataframe的功能,能夠處理結構比較復雜的數據。這本書其實analysis講得不多,說成數據處理應該更合適。掌握了這本書,處理各種糟心的數據就問題不大了。
Introction to Python for Econometrics, Statistics and Data Analysis:這本書第一章就告訴你要安裝Numpy, Scipy, Matplotlib, Pandas, IPython等等。然後接下來的十好幾章就是逐一介紹這幾個庫該怎麼用。很全面,但讀起來比較枯燥,可以用來當工具書。
Practical Data Analysis: 這本書挺奇葩,貌似很暢銷,但作者把內容安排得東一榔頭西一棒子,什麼都講一點,但一個都沒講透。這本書可以作為我們學習數據分析的一個索引,看到哪塊內容有意思,就順著它這個藤去摸更多的瓜。
Python Data Visualization Cookbook: 用Python做可視化的教材肯定不少,我看過的也就這一本,覺得還不錯。其實這類書差別都不會很大,咬住一本啃下來就是王道。
Exploratory Data Analysis 和 Data Visualization
Exploratory Data Analysis:John Tukey寫於1977年的經典老教材,是這一領域的開山之作。如今EDA已經是統計學里的重要一支,但當時還是有很多人對他的工作不屑一顧。可他愛數據,堅信數據可以以一種出人意料的方式呈現出來。正是他的努力,讓數據可視化成為一門無比迷人的技術。但這本書不推薦閱讀了,內容略過時。要想完整地了解EDA,推薦下一本:
Exploratory Data Analysis with MATLAB:這本書雖然標題帶了個MATLAB,但實際上內容幾乎沒怎麼講MATLAB,只是每講一個方法的時候就列出對應的MATALB函數。這本書的重要之處在於,這是我讀過的講EDA最系統的一本書,除了對visualization有不輸於John Tucky的講解外,對於高維的數據集,通過怎樣的方法才能讓我們從中找到潛在的pattern,這本書也做了詳盡的講解。全書所以案例都有對應的MATALB代碼,而且還提供了GUI(圖形用戶界面)。所以這本書學起來還是相當輕松愉悅的。
Visualize This:中譯本叫「鮮活的數據」,作者是個「超級數據迷」,建立了一個叫http://flowingdata.com的網頁展示他的數據可視化作品,這本書告訴你該選擇什麼樣的可視化工具,然後告訴你怎樣visualize關系型數據、時間序列、空間數據等,最後你就可以用數據講故事了。如果你只想感受一下數據可視化是個什麼,可以直接點開下面這個鏈接感受下吧!A tour through the visualization zoo(A Tour Through the Visualization Zoo)
Machine Learning & Data Mining
這一塊就不多說了,不是因為它不重要,而是因為它太太太重要。所以這一部分就推兩本書,都是」世界名著「,都比較難讀,需要一點點地啃。這兩本書拿下,基本就算是登堂入室了。其實作為機器學習的延伸和深化,概率圖模型(PGM)和深度學習(deep learning)同樣值得研究,特別是後者現在簡直火得不得了。但PGM偏難,啃K.Daphne那本大作實在太燒腦,也沒必要,而且在數據領域的應用也不算很廣。deep learning目前工業界的步子邁得比學術界的大,各個domain的應用如火如荼,但要有公認的好教材問世則還需時日,所以PGM和deep learning這兩塊就不薦書了。
The Element of Statistical Learning:要學機器學習,如果讓我只推薦一本書,我就推薦這本巨著。Hastie、Tibshirani、Friedman這三位大牛寫書寫得太用心了,大廈建得夠高夠大,結構也非常嚴謹,而且很有前瞻性,納入了很多前沿的內容,而不僅僅是一部綜述性的教材。(圖表也做得非常漂亮,應該是用R語言的ggplot2做的。)這本書注重講解模型和演算法本身,所以需要具備比較扎實的數理基礎,啃起這本書來才不會太吃力。事實上掌握模型和演算法的原理非常重要。機器學習(統計學習)的庫現在已經非常豐富,即使你沒有完全搞懂某個模型或演算法的原理和過程,只要會用那幾個庫,機器學習也能做得下去。但你會發現你把數據代進去,效果永遠都不好。但是,當你透徹地理解了模型和演算法本身,你再調用那幾個庫的時候,心情是完全不一樣的,效果也不一樣。
Data Mining: Concepts and Techniques, by Jiawei Han and Micheline Kamber 數據挖掘的教材汗牛充棟,之所以推薦這本韓家煒爺爺的,是因為雖然他這本書的出發點是應用,但原理上的內容也一點沒有落下,內容非常完整。而且緊跟時代,更新的很快,我看過的是第二版,就已經加進去了social network analysis這種當時的前沿內容。現在已經有第三版了,我還沒看過,但應該也加入了不少新內容。其實這本書並不難讀,只是篇幅較長,啃起來比較耗時。
其實這兩本書里單拎出來一塊內容可能又是幾本書的節奏,比如bayesian方法,再拿出兩三本書來講也不為過,我個人用到的比較多,而且也確實有不少好書。但並非是所有data scientist都要用到,所以這一塊就不再細說。
還有一些印象比較深刻的書:
Big Data Glossary: 主要講解大數據處理技術及工具,內容涵蓋了NoSQL,MapRece,Storage,Servers,NLP庫與工具包,機器學習工具包,數據可視化工具包,數據清洗,序列化指南等等。總之,是一本辭典式的大數據入門指導。
Mining of Massive Datasets:這本書是斯坦福大學Web Mining的講義,裡面很多內容與韓家煒的Data Mining那本書重合,但這本書里詳細地講了MapRece的設計原理,PageRank(Google創業時期的核心排序演算法,現在也在不斷優化更新)講解得也比較詳細。
Developing Analytic Talent: 作者是個從事了十幾年數據工作的geek,技術博客寫得很有個人風格,寫的內容都比較偏門,通常只有具備相關數據處理經驗的人能體會出來,絲毫不照顧初學者的感受。比如他會談到當數據流更新太快時該怎麼辦,或者MapRece在什麼時候不好用的問題,才不管你懂不懂相關基礎原理。所以這本書不太適合初學者閱讀。這本書其實是作者的博客文章的集結,用how to become a data scientist的邏輯把他近幾年的博客文章串聯了起來。
Past, Present and Future of Statistical Science:這本書是由COPSS(統計學社主席委員會,由國際各大統計學會的帶頭人組成)在50周年出版的一本紀念冊,裡面有50位統計學家每人分別貢獻出的一兩篇文章,有的回憶了自己當年如何走上統計學這條路,有的探討了一些統計學的根本問題,有的談了談自己在從事的前沿研究,有的則給年輕一代寫下了寄語。非常有愛的一本書。
其它資料
Harvard Data Science:這是H大的Data science在線課,我沒有修過,但口碑很好。這門課需要費用8千刀左右,比起華盛頓大學的4千刀的Data science在線課雖貴一倍,但比斯坦福的14千刀要便宜將近一半(而且斯坦福的更偏計算機)。如果想自學,早有好心人分享了slides: (https://drive.google.com/folderview?id=0BxYkKyLxfsNVd0xicUVDS1dIS0k&usp=sharing)和homeworks and solutions: (https://github.com/cs109/content)
PyData:PyData是來自各個domain的用Python做數據的人每年舉行一次的聚會,期間會有各路牛人舉行一些規模不大的seminar或workshop,有好心人已經把video上傳到github,有興趣的去認領吧(DataTau/datascience-anthology-pydata · GitHub)
工具
R/Python/MATLAB(必備):如果是做數據分析和模型開發,以我的觀察來看,使用這三種工具的最多。R生來就是一個統計學家開發的軟體,所做的事也自然圍繞統計學展開。MATLAB雖然算不上是個專業的數據分析工具,但因為很多人不是專業做數據的,做數據還是為了自己的domain expertise(特別是科學計算、信號處理等),而MATLAB又是個強大無比的Domain expertise工具,所以很多人也就順帶讓MATLAB也承擔了數據處理的工作,雖然它有時候顯得效率不高。Python雖然不是做數據分析的專業軟體,但作為一個面向對象的高級動態語言,其開源的生態使Python擁有無比豐富的庫,Numpy, Scipy 實現了矩陣運算/科學計算,相當於實現了MATLAB的功能,Pandas又使Python能夠像R一樣處理dataframe,scikit-learn又實現了機器學習。
SQL(必備):雖然現在人們都說傳統的關系型資料庫如Oracle、MySQL越來越無法適應大數據的發展,但對於很多人來說,他們每天都有處理數據的需要,但可能一輩子都沒機會接觸TB級的數據。不管怎麼說,不論是用關系型還是非關系型資料庫,SQL語言是必須要掌握的技能,用什麼資料庫視具體情況而定。
MongoDB(可選):目前最受歡迎的非關系型資料庫NoSQL之一,不少人認為MongoDB完全可以取代mySQL。確實MongoDB方便易用,擴展性強,Web2.0時代的必需品。
Hadoop/Spark/Storm(可選): MapRece是當前最著名也是運用最廣泛的分布式計算框架,由Google建立。Hadoop/Spark/storm都是基於MapRece的框架建立起來的分布式計算系統,要說他們之間的區別就是,Hadoop用硬碟存儲數據,Spark用內存存儲數據,Storm只接受實時數據流而不存儲數據。一言以蔽之,如果數據是離線的,如果數據比較復雜且對處理速度要求一般,就Hadoop,如果要速度,就Spark,如果數據是在線的實時的流數據,就Storm。
OpenRefine(可選):Google開發的一個易於操作的數據清洗工具,可以實現一些基本的清洗功能。
Tableau(可選):一個可交互的數據可視化工具,操作簡單,開箱即用。而且圖表都設計得非常漂亮。專業版1999美刀,終身使用。媒體和公關方面用得比較多。
Gephi(可選):跟Tableau類似,都是那種可交互的可視化工具,不需要編程基礎,生成的圖表在美學和設計上也是花了心血的。更擅長復雜網路的可視化。
⑶ 怎樣進行大數據的入門級學習
怎樣進行大數據的入門級學習?
文 | 郭小賢
數據科學並沒有一個獨立的學科體系,統計學,機器學習,數據挖掘,資料庫,分布式計算,雲計算,信息可視化等技術或方法來對付數據。
但從狹義上來看,我認為數據科學就是解決三個問題:
1. datapre-processing;(數據預處理)
2. datainterpretation;(數據解讀)
3.datamodeling and analysis.(數據建模與分析)
這也就是我們做數據工作的三個大步驟:
1、原始數據要經過一連串收集、提取、清洗、整理等等的預處理過程,才能形成高質量的數據;
2、我們想看看數據「長什麼樣」,有什麼特點和規律;
3、按照自己的需要,比如要對數據貼標簽分類,或者預測,或者想要從大量復雜的數據中提取有價值的且不易發現的信息,都要對數據建模,得到output。
這三個步驟未必嚴謹,每個大步驟下面可能依問題的不同也會有不同的小步驟,但按我這幾年的經驗來看,按照這個大思路走,數據一般不會做跑偏。
這樣看來,數據科學其實就是門復合型的技術,既然是技術就從編程語言談起吧,為了簡練,只說說R和Python。但既然是薦數據科學方面的書,我這里就不提R/Python編程基礎之類的書了,直接上跟數據科學相關的。
R programming
如果只是想初步了解一下R語言已經R在數據分析方面的應用,那不妨就看看這兩本:
R inaction:我的R語言大數據101。其實對於一個沒有任何編程基礎的人來說,一開始就學這本書,學習曲線可能會比較陡峭。但如果配合上一些輔助材料,如官方發布的R basics(http://cran.r-project.org/doc/contrib/usingR.pdf),stackoverflow上有tag-R的問題集(Newest 『r』 Questions),遇到復雜的問題可在上面搜索,總會找到解決方案的。這樣一來,用這本書拿來入門學習也問題不大。而且這本書作者寫得也比較輕松,緊貼實戰。
Dataanalysis and graphics using R:使用R語言做數據分析的入門書。這本書的特點也是緊貼實戰,沒有過多地講解統計學理論,所以喜歡通過情境應用來學習的人應該會喜歡這本入門書。而且這本書可讀性比較強,也就是說哪怕你手頭沒電腦寫不了代碼,有事沒事拿出這本書翻一翻,也能讀得進去。
但如果你先用R來從事實實在在的數據工作,那麼上面兩本恐怕不夠,還需要這些:
Modernapplied statistics with S:這本書里統計學的理論就講得比較多了,好處就是你可以用一本書既復習了統計學,又學了R語言。(S/Splus和R的關系就類似於Unix和Linux,所以用S教程學習R,一點問題都沒有)
Datamanipulation with R:這本書實務性很強,它教給你怎麼從不同格式的原始數據文件里讀取、清洗、轉換、整合成高質量的數據。當然和任何一本注重實戰的書一樣,本書也有豐富的真實數據或模擬數據供你練習。對於真正從事數據處理工作的人來說,這本書的內容非常重要,因為對於任何研究,一項熟練的數據預處理技能可以幫你節省大量的時間和精力。否則,你的研究總是要等待你的數據。
RGraphics Cookbook:想用R做可視化,就用這本書吧。150多個recipes,足以幫你應付絕大多數類型的數據。以我現在極業余的可視化操作水平來看,R是最容易做出最漂亮的圖表的工具了。
Anintroction to statistical learning with application in R:這本書算是著名的the element of statistical learning的姊妹篇,後者更注重統計(機器)學習的模型和演算法,而前者所涉及的模型和演算法原沒有後者全面或深入,但卻是用R來學習和應用機器學習的很好的入口。
Ahandbook of statistical analysis using R:這本書內容同樣非常扎實,很多統計學的學生就是用這本書來學慣用R來進行統計建模的。
Python
Think Python,ThinkStats,Think Bayes:這是AllenB. Downey寫的著名的Think X series三大卷。其實是三本精緻的小冊子,如果想快速地掌握Python在統計方面的操作,好好閱讀這三本書,認真做習題,答案鏈接在書里有。這三本書學通了,就可以上手用Python進行基本的統計建模了。
PythonFor Data Analysis: 作者是pandas的主要開發者,也正是Pandas使Python能夠像R一樣擁有dataframe的功能,能夠處理結構比較復雜的數據。這本書其實analysis講得不多,說成數據處理應該更合適。掌握了這本書,處理各種糟心的數據就問題不大了。
Introctionto Python for Econometrics, Statistics and DataAnalysis:這本書第一章就告訴你要安裝Numpy, Scipy, Matplotlib, Pandas, IPython等等。然後接下來的十好幾章就是逐一介紹這幾個庫該怎麼用。很全面,但讀起來比較枯燥,可以用來當工具書。
PracticalData Analysis: 這本書挺奇葩,貌似很暢銷,但作者把內容安排得東一榔頭西一棒子,什麼都講一點,但一個都沒講透。這本書可以作為我們學習數據分析的一個索引,看到哪塊內容有意思,就順著它這個藤去摸更多的瓜。
PythonData Visualization Cookbook: 用Python做可視化的教材肯定不少,我看過的也就這一本,覺得還不錯。其實這類書差別都不會很大,咬住一本啃下來就是王道。
Exploratory Data Analysis 和 Data Visualization
Exploratory DataAnalysis:John Tukey寫於1977年的經典老教材,是這一領域的開山之作。如今EDA已經是統計學里的重要一支,但當時還是有很多人對他的工作不屑一顧。可他愛數據,堅信數據可以以一種出人意料的方式呈現出來。正是他的努力,讓數據可視化成為一門無比迷人的技術。但這本書不推薦閱讀了,內容略過時。要想完整地了解EDA,推薦下一本:
ExploratoryData Analysis with MATLAB:這本書雖然標題帶了個MATLAB,但實際上內容幾乎沒怎麼講MATLAB,只是每講一個方法的時候就列出對應的MATALB函數。這本書的重要之處在於,這是我讀過的講EDA最系統的一本書,除了對visualization有不輸於John Tucky的講解外,對於高維的數據集,通過怎樣的方法才能讓我們從中找到潛在的pattern,這本書也做了詳盡的講解。全書所以案例都有對應的MATALB代碼,而且還提供了GUI(圖形用戶界面)。所以這本書學起來還是相當輕松愉悅的。
VisualizeThis:中譯本叫「鮮活的數據」,作者是個「超級數據迷」,建立了一個叫http://flowingdata.com的網頁展示他的數據可視化作品,這本書告訴你該選擇什麼樣的可視化工具,然後告訴你怎樣visualize關系型數據、時間序列、空間數據等,最後你就可以用數據講故事了。如果你只想感受一下數據可視化是個什麼,可以直接點開下面這個鏈接感受下吧!A tour through the visualization zoo(A TourThrough the Visualization Zoo)
Machine Learning & Data Mining
這一塊就不多說了,不是因為它不重要,而是因為它太太太重要。所以這一部分就推兩本書,都是」世界名著「,都比較難讀,需要一點點地啃。這兩本書拿下,基本就算是登堂入室了。其實作為機器學習的延伸和深化,概率圖模型(PGM)和深度學習(deep learning)同樣值得研究,特別是後者現在簡直火得不得了。但PGM偏難,啃K.Daphne那本大作實在太燒腦,也沒必要,而且在數據領域的應用也不算很廣。deep learning目前工業界的步子邁得比學術界的大,各個domain的應用如火如荼,但要有公認的好教材問世則還需時日,所以PGM和deep learning這兩塊就不薦書了。
TheElement of Statistical Learning:要學機器學習,如果讓我只推薦一本書,我就推薦這本巨著。Hastie、Tibshirani、Friedman這三位大牛寫書寫得太用心了,大廈建得夠高夠大,結構也非常嚴謹,而且很有前瞻性,納入了很多前沿的內容,而不僅僅是一部綜述性的教材。(圖表也做得非常漂亮,應該是用R語言的ggplot2做的。)這本書注重講解模型和演算法本身,所以需要具備比較扎實的數理基礎,啃起這本書來才不會太吃力。事實上掌握模型和演算法的原理非常重要。機器學習(統計學習)的庫現在已經非常豐富,即使你沒有完全搞懂某個模型或演算法的原理和過程,只要會用那幾個庫,機器學習也能做得下去。但你會發現你把數據代進去,效果永遠都不好。但是,當你透徹地理解了模型和演算法本身,你再調用那幾個庫的時候,心情是完全不一樣的,效果也不一樣。
DataMining: Concepts and Techniques, by Jiawei Han and Micheline Kamber 數據挖掘的教材汗牛充棟,之所以推薦這本韓家煒爺爺的,是因為雖然他這本書的出發點是應用,但原理上的內容也一點沒有落下,內容非常完整。而且緊跟時代,更新的很快,我看過的是第二版,就已經加進去了social network analysis這種當時的前沿內容。現在已經有第三版了,我還沒看過,但應該也加入了不少新內容。其實這本書並不難讀,只是篇幅較長,啃起來比較耗時。
其實這兩本書里單拎出來一塊內容可能又是幾本書的節奏,比如bayesian方法,再拿出兩三本書來講也不為過,我個人用到的比較多,而且也確實有不少好書。但並非是所有data scientist都要用到,所以這一塊就不再細說。
還有一些印象比較深刻的書:
Big DataGlossary: 主要講解大數據處理技術及工具,內容涵蓋了NoSQL,MapRece,Storage,Servers,NLP庫與工具包,機器學習工具包,數據可視化工具包,數據清洗,序列化指南等等。總之,是一本辭典式的大數據入門指導。
Mining ofMassive Datasets:這本書是斯坦福大學Web Mining的講義,裡面很多內容與韓家煒的Data Mining那本書重合,但這本書里詳細地講了MapRece的設計原理,PageRank(Google創業時期的核心排序演算法,現在也在不斷優化更新)講解得也比較詳細。
DevelopingAnalytic Talent: 作者是個從事了十幾年數據工作的geek,技術博客寫得很有個人風格,寫的內容都比較偏門,通常只有具備相關數據處理經驗的人能體會出來,絲毫不照顧初學者的感受。比如他會談到當數據流更新太快時該怎麼辦,或者MapRece在什麼時候不好用的問題,才不管你懂不懂相關基礎原理。所以這本書不太適合初學者閱讀。這本書其實是作者的博客文章的集結,用how to become a data scientist的邏輯把他近幾年的博客文章串聯了起來。
Past, Present and Future of Statistical Science:這本書是由COPSS(統計學社主席委員會,由國際各大統計學會的帶頭人組成)在50周年出版的一本紀念冊,裡面有50位統計學家每人分別貢獻出的一兩篇文章,有的回憶了自己當年如何走上統計學這條路,有的探討了一些統計學的根本問題,有的談了談自己在從事的前沿研究,有的則給年輕一代寫下了寄語。非常有愛的一本書。
其它資料
Harvard Data Science:這是H大的Data science在線課,我沒有修過,但口碑很好。這門課需要費用8千刀左右,比起華盛頓大學的4千刀的Data science在線課雖貴一倍,但比斯坦福的14千刀要便宜將近一半(而且斯坦福的更偏計算機)。如果想自學,早有好心人分享了slides:(https://drive.google.com/folderview?id=0BxYkKyLxfsNVd0xicUVDS1dIS0k&usp=sharing)和homeworks and solutions: (https://github.com/cs109/content)
PyData:PyData是來自各個domain的用Python做數據的人每年舉行一次的聚會,期間會有各路牛人舉行一些規模不大的seminar或workshop,有好心人已經把video上傳到github,有興趣的去認領吧(DataTau/datascience-anthology-pydata · GitHub)
工具
R/Python/MATLAB(必備):如果是做數據分析和模型開發,以我的觀察來看,使用這三種工具的最多。R生來就是一個統計學家開發的軟體,所做的事也自然圍繞統計學展開。MATLAB雖然算不上是個專業的數據分析工具,但因為很多人不是專業做數據的,做數據還是為了自己的domain expertise(特別是科學計算、信號處理等),而MATLAB又是個強大無比的Domain expertise工具,所以很多人也就順帶讓MATLAB也承擔了數據處理的工作,雖然它有時候顯得效率不高。Python雖然不是做數據分析的專業軟體,但作為一個面向對象的高級動態語言,其開源的生態使Python擁有無比豐富的庫,Numpy, Scipy 實現了矩陣運算/科學計算,相當於實現了MATLAB的功能,Pandas又使Python能夠像R一樣處理dataframe,scikit-learn又實現了機器學習。
SQL(必備):雖然現在人們都說傳統的關系型資料庫如Oracle、MySQL越來越無法適應大數據的發展,但對於很多人來說,他們每天都有處理數據的需要,但可能一輩子都沒機會接觸TB級的數據。不管怎麼說,不論是用關系型還是非關系型資料庫,SQL語言是必須要掌握的技能,用什麼資料庫視具體情況而定。
MongoDB(可選):目前最受歡迎的非關系型資料庫NoSQL之一,不少人認為MongoDB完全可以取代mySQL。確實MongoDB方便易用,擴展性強,Web2.0時代的必需品。
Hadoop/Spark/Storm(可選): MapRece是當前最著名也是運用最廣泛的分布式計算框架,由Google建立。Hadoop/Spark/storm都是基於MapRece的框架建立起來的分布式計算系統,要說他們之間的區別就是,Hadoop用硬碟存儲數據,Spark用內存存儲數據,Storm只接受實時數據流而不存儲數據。一言以蔽之,如果數據是離線的,如果數據比較復雜且對處理速度要求一般,就Hadoop,如果要速度,就Spark,如果數據是在線的實時的流數據,就Storm。
OpenRefine(可選):Google開發的一個易於操作的數據清洗工具,可以實現一些基本的清洗功能。
Tableau(可選):一個可交互的數據可視化工具,操作簡單,開箱即用。而且圖表都設計得非常漂亮。專業版1999美刀,終身使用。媒體和公關方面用得比較多。
Gephi(可選):跟Tableau類似,都是那種可交互的可視化工具,不需要編程基礎,生成的圖表在美學和設計上也是花了心血的。更擅長復雜網路的可視化。
來自知乎
以上是小編為大家分享的關於怎樣進行大數據的入門級學習?的相關內容,更多信息可以關注環球青藤分享更多干貨
⑷ 數據科學 怎樣進行大數據的入門級學習
數據科學 怎樣進行大數據的入門級學習?
數據科學並沒有一個獨立的學科體系,統計學,機器學習,數據挖掘,資料庫,分布式計算,雲計算,信息可視化等技術或方法來對付數據。
但從狹義上來看,我認為數據科學就是解決三個問題:
1. data pre-processing;(數據預處理)
2. data interpretation;(數據解讀)
3.data modeling and analysis.(數據建模與分析)
這也就是我們做數據工作的三個大步驟:
1、原始數據要經過一連串收集、提取、清洗、整理等等的預處理過程,才能形成高質量的數據;
2、我們想看看數據「長什麼樣」,有什麼特點和規律;
3、按照自己的需要,比如要對數據貼標簽分類,或者預測,或者想要從大量復雜的數據中提取有價值的且不易發現的信息,都要對數據建模,得到output。
這三個步驟未必嚴謹,每個大步驟下面可能依問題的不同也會有不同的小步驟,但按我這幾年的經驗來看,按照這個大思路走,數據一般不會做跑偏。
這樣看來,數據科學其實就是門復合型的技術,既然是技術就從編程語言談起吧,為了簡練,只說說R和Python。但既然是薦數據科學方面的書,我這里就不提R/Python編程基礎之類的書了,直接上跟數據科學相關的。
R programming
如果只是想初步了解一下R語言已經R在數據分析方面的應用,那不妨就看看這兩本:
R in action:我的R語言大數據101。其實對於一個沒有任何編程基礎的人來說,一開始就學這本書,學習曲線可能會比較陡峭。但如果配合上一些輔助材料,如官方發布的R basics(http://cran.r-project.org/doc/contrib/usingR.pdf),stackoverflow上有tag-R的問題集(Newest 『r』 Questions),遇到復雜的問題可在上面搜索,總會找到解決方案的。這樣一來,用這本書拿來入門學習也問題不大。而且這本書作者寫得也比較輕松,緊貼實戰。
Data analysis and graphics using R:使用R語言做數據分析的入門書。這本書的特點也是緊貼實戰,沒有過多地講解統計學理論,所以喜歡通過情境應用來學習的人應該會喜歡這本入門書。而且這本書可讀性比較強,也就是說哪怕你手頭沒電腦寫不了代碼,有事沒事拿出這本書翻一翻,也能讀得進去。
但如果你先用R來從事實實在在的數據工作,那麼上面兩本恐怕不夠,還需要這些:
Modern applied statistics with S:這本書里統計學的理論就講得比較多了,好處就是你可以用一本書既復習了統計學,又學了R語言。(S/Splus和R的關系就類似於Unix和Linux,所以用S教程學習R,一點問題都沒有)
Data manipulation with R:這本書實務性很強,它教給你怎麼從不同格式的原始數據文件里讀取、清洗、轉換、整合成高質量的數據。當然和任何一本注重實戰的書一樣,本書也有豐富的真實數據或模擬數據供你練習。對於真正從事數據處理工作的人來說,這本書的內容非常重要,因為對於任何研究,一項熟練的數據預處理技能可以幫你節省大量的時間和精力。否則,你的研究總是要等待你的數據。
R Graphics Cookbook:想用R做可視化,就用這本書吧。150多個recipes,足以幫你應付絕大多數類型的數據。以我現在極業余的可視化操作水平來看,R是最容易做出最漂亮的圖表的工具了。
An introction to statistical learning with application in R:這本書算是著名的the element of statistical learning的姊妹篇,後者更注重統計(機器)學習的模型和演算法,而前者所涉及的模型和演算法原沒有後者全面或深入,但卻是用R來學習和應用機器學習的很好的入口。
A handbook of statistical analysis using R:這本書內容同樣非常扎實,很多統計學的學生就是用這本書來學慣用R來進行統計建模的。
Python
Think Python,Think Stats,Think Bayes:這是Allen B. Downey寫的著名的Think X series三大卷。其實是三本精緻的小冊子,如果想快速地掌握Python在統計方面的操作,好好閱讀這三本書,認真做習題,答案鏈接在書里有。這三本書學通了,就可以上手用Python進行基本的統計建模了。
Python For Data Analysis: 作者是pandas的主要開發者,也正是Pandas使Python能夠像R一樣擁有dataframe的功能,能夠處理結構比較復雜的數據。這本書其實analysis講得不多,說成數據處理應該更合適。掌握了這本書,處理各種糟心的數據就問題不大了。
Introction to Python for Econometrics, Statistics and Data Analysis:這本書第一章就告訴你要安裝Numpy, Scipy, Matplotlib, Pandas, IPython等等。然後接下來的十好幾章就是逐一介紹這幾個庫該怎麼用。很全面,但讀起來比較枯燥,可以用來當工具書。
Practical Data Analysis: 這本書挺奇葩,貌似很暢銷,但作者把內容安排得東一榔頭西一棒子,什麼都講一點,但一個都沒講透。這本書可以作為我們學習數據分析的一個索引,看到哪塊內容有意思,就順著它這個藤去摸更多的瓜。
Python Data Visualization Cookbook: 用Python做可視化的教材肯定不少,我看過的也就這一本,覺得還不錯。其實這類書差別都不會很大,咬住一本啃下來就是王道
Exploratory Data Analysis 和 Data Visualization
Exploratory Data Analysis:John Tukey寫於1977年的經典老教材,是這一領域的開山之作。如今EDA已經是統計學里的重要一支,但當時還是有很多人對他的工作不屑一顧。可他愛數據,堅信數據可以以一種出人意料的方式呈現出來。正是他的努力,讓數據可視化成為一門無比迷人的技術。但這本書不推薦閱讀了,內容略過時。要想完整地了解EDA,推薦下一本:
Exploratory Data Analysis with MATLAB:這本書雖然標題帶了個MATLAB,但實際上內容幾乎沒怎麼講MATLAB,只是每講一個方法的時候就列出對應的MATALB函數。這本書的重要之處在於,這是我讀過的講EDA最系統的一本書,除了對visualization有不輸於John Tucky的講解外,對於高維的數據集,通過怎樣的方法才能讓我們從中找到潛在的pattern,這本書也做了詳盡的講解。全書所以案例都有對應的MATALB代碼,而且還提供了GUI(圖形用戶界面)。所以這本書學起來還是相當輕松愉悅的。
Visualize This:中譯本叫「鮮活的數據」,作者是個「超級數據迷」,建立了一個叫http://flowingdata.com的網頁展示他的數據可視化作品,這本書告訴你該選擇什麼樣的可視化工具,然後告訴你怎樣visualize關系型數據、時間序列、空間數據等,最後你就可以用數據講故事了。如果你只想感受一下數據可視化是個什麼,可以直接點開下面這個鏈接感受下吧!A tour through the visualization zoo(A Tour Through the Visualization Zoo)
Machine Learning & Data Mining
這一塊就不多說了,不是因為它不重要,而是因為它太太太重要。所以這一部分就推兩本書,都是」世界名著「,都比較難讀,需要一點點地啃。這兩本書拿下,基本就算是登堂入室了。其實作為機器學習的延伸和深化,概率圖模型(PGM)和深度學習(deep learning)同樣值得研究,特別是後者現在簡直火得不得了。但PGM偏難,啃K.Daphne那本大作實在太燒腦,也沒必要,而且在數據領域的應用也不算很廣。deep learning目前工業界的步子邁得比學術界的大,各個domain的應用如火如荼,但要有公認的好教材問世則還需時日,所以PGM和deep learning這兩塊就不薦書了。
The Element of Statistical Learning:要學機器學習,如果讓我只推薦一本書,我就推薦這本巨著。Hastie、Tibshirani、Friedman這三位大牛寫書寫得太用心了,大廈建得夠高夠大,結構也非常嚴謹,而且很有前瞻性,納入了很多前沿的內容,而不僅僅是一部綜述性的教材。(圖表也做得非常漂亮,應該是用R語言的ggplot2做的。)這本書注重講解模型和演算法本身,所以需要具備比較扎實的數理基礎,啃起這本書來才不會太吃力。事實上掌握模型和演算法的原理非常重要。機器學習(統計學習)的庫現在已經非常豐富,即使你沒有完全搞懂某個模型或演算法的原理和過程,只要會用那幾個庫,機器學習也能做得下去。但你會發現你把數據代進去,效果永遠都不好。但是,當你透徹地理解了模型和演算法本身,你再調用那幾個庫的時候,心情是完全不一樣的,效果也不一樣。
Data Mining: Concepts and Techniques, by Jiawei Han and Micheline Kamber 數據挖掘的教材汗牛充棟,之所以推薦這本韓家煒爺爺的,是因為雖然他這本書的出發點是應用,但原理上的內容也一點沒有落下,內容非常完整。而且緊跟時代,更新的很快,我看過的是第二版,就已經加進去了social network analysis這種當時的前沿內容。現在已經有第三版了,我還沒看過,但應該也加入了不少新內容。其實這本書並不難讀,只是篇幅較長,啃起來比較耗時。
其實這兩本書里單拎出來一塊內容可能又是幾本書的節奏,比如bayesian方法,再拿出兩三本書來講也不為過,我個人用到的比較多,而且也確實有不少好書。但並非是所有data scientist都要用到,所以這一塊就不再細說。
還有一些印象比較深刻的書:
Big Data Glossary: 主要講解大數據處理技術及工具,內容涵蓋了NoSQL,MapRece,Storage,Servers,NLP庫與工具包,機器學習工具包,數據可視化工具包,數據清洗,序列化指南等等。總之,是一本辭典式的大數據入門指導。
Mining of Massive Datasets:這本書是斯坦福大學Web Mining的講義,裡面很多內容與韓家煒的Data Mining那本書重合,但這本書里詳細地講了MapRece的設計原理,PageRank(Google創業時期的核心排序演算法,現在也在不斷優化更新)講解得也比較詳細。
Developing Analytic Talent: 作者是個從事了十幾年數據工作的geek,技術博客寫得很有個人風格,寫的內容都比較偏門,通常只有具備相關數據處理經驗的人能體會出來,絲毫不照顧初學者的感受。比如他會談到當數據流更新太快時該怎麼辦,或者MapRece在什麼時候不好用的問題,才不管你懂不懂相關基礎原理。所以這本書不太適合初學者閱讀。這本書其實是作者的博客文章的集結,用how to become a data scientist的邏輯把他近幾年的博客文章串聯了起來。
Past, Present and Future of Statistical Science:這本書是由COPSS(統計學社主席委員會,由國際各大統計學會的帶頭人組成)在50周年出版的一本紀念冊,裡面有50位統計學家每人分別貢獻出的一兩篇文章,有的回憶了自己當年如何走上統計學這條路,有的探討了一些統計學的根本問題,有的談了談自己在從事的前沿研究,有的則給年輕一代寫下了寄語。非常有愛的一本書。
其它資料
Harvard Data Science:這是H大的Data science在線課,我沒有修過,但口碑很好。這門課需要費用8千刀左右,比起華盛頓大學的4千刀的Data science在線課雖貴一倍,但比斯坦福的14千刀要便宜將近一半(而且斯坦福的更偏計算機)。如果想自學,早有好心人分享了slides:(https://drive.google.com/folderview?id=0BxYkKyLxfsNVd0xicUVDS1dIS0k&usp=sharing)和homeworks and solutions:(https://github.com/cs109/content)
PyData:PyData是來自各個domain的用Python做數據的人每年舉行一次的聚會,期間會有各路牛人舉行一些規模不大的seminar或workshop,有好心人已經把video上傳到github,有興趣的去認領吧(DataTau/datascience-anthology-pydata · GitHub)
工具
R/Python/MATLAB(必備):如果是做數據分析和模型開發,以我的觀察來看,使用這三種工具的最多。R生來就是一個統計學家開發的軟體,所做的事也自然圍繞統計學展開。MATLAB雖然算不上是個專業的數據分析工具,但因為很多人不是專業做數據的,做數據還是為了自己的domain expertise(特別是科學計算、信號處理等),而MATLAB又是個強大無比的Domain expertise工具,所以很多人也就順帶讓MATLAB也承擔了數據處理的工作,雖然它有時候顯得效率不高。Python雖然不是做數據分析的專業軟體,但作為一個面向對象的高級動態語言,其開源的生態使Python擁有無比豐富的庫,Numpy, Scipy 實現了矩陣運算/科學計算,相當於實現了MATLAB的功能,Pandas又使Python能夠像R一樣處理dataframe,scikit-learn又實現了機器學習。
SQL(必備):雖然現在人們都說傳統的關系型資料庫如Oracle、MySQL越來越無法適應大數據的發展,但對於很多人來說,他們每天都有處理數據的需要,但可能一輩子都沒機會接觸TB級的數據。不管怎麼說,不論是用關系型還是非關系型資料庫,SQL語言是必須要掌握的技能,用什麼資料庫視具體情況而定。
MongoDB(可選):目前最受歡迎的非關系型資料庫NoSQL之一,不少人認為MongoDB完全可以取代mySQL。確實MongoDB方便易用,擴展性強,Web2.0時代的必需品。
Hadoop/Spark/Storm(可選): MapRece是當前最著名也是運用最廣泛的分布式計算框架,由Google建立。Hadoop/Spark/storm都是基於MapRece的框架建立起來的分布式計算系統,要說他們之間的區別就是,Hadoop用硬碟存儲數據,Spark用內存存儲數據,Storm只接受實時數據流而不存儲數據。一言以蔽之,如果數據是離線的,如果數據比較復雜且對處理速度要求一般,就Hadoop,如果要速度,就Spark,如果數據是在線的實時的流數據,就Storm。
OpenRefine(可選):Google開發的一個易於操作的數據清洗工具,可以實現一些基本的清洗功能。
Tableau(可選):一個可交互的數據可視化工具,操作簡單,開箱即用。而且圖表都設計得非常漂亮。專業版1999美刀,終身使用。媒體和公關方面用得比較多。
Gephi(可選):跟Tableau類似,都是那種可交互的可視化工具,不需要編程基礎,生成的圖表在美學和設計上也是花了心血的。更擅長復雜網路的可視化。