用 Python 進行數據分析,不懂 Python,求合適的 Python 書籍或資料推薦?


1、首先你要了解Python語言的整個架構和一些基本概念,也就是所說的Python入門,這裡推薦資料:簡明 Python 教程,很適合初學者,概念的講解簡單明了。還有大量的練習,跟著做會有很快的提高。
2、基本了解了python後,還要學習一些用於數據分析的工具,也就是一些基於python的科學計算庫。

  • 贊同 @杜客答案中提到的SciPy系列工具,尤其是NumPy工具包,可以說是用Python進行數據分析的最常用的。另外對於數據分析,少不了數據的可視化(也就是畫圖),首選matplotlib: python plotting,在Linux下非常好用,畫出來的圖很漂亮。
  • 還有一個工具包scikit-learn: machine learning in Python,這個工具包主要針對機器學習領域進行數據分析的,裡面大量的實例。幾乎各種數據分析方法在裡面都能找到相應的實現,一些程序有針對性的修改一下就可以了。

3、以下是一些不錯的參考資料:

  • NumPy的詳細教程,官方文檔的中文翻譯,適合快速入門;
  • Matplotlib Tutorial(譯),適合matplotlib快速入門;
  • Python Programming Tutorials,這個人手把手教你用python做Data Analysis;有視頻(只不過視頻是放在YouTube上的,需要梯子),有代碼,強烈推薦。
  • Python教程 - 廖雪峰的官方網站,Python 入門教程,另外兩個Python教程。

---------------------------7月11日更---------------------------

  1. 考慮到numpy的重要性,然而學習的時候,光看一些文檔真的很難記住和理解一些對象的操作方法,這裡提供給大家一個練習numpy的資料:100 numpy exercises (83/100 actually),一共80多個小例子,常見的數組操作和一些編程小技巧,這裡都會涉及到,跟著做能學到很多。
  2. 安利給大家一個學習Python的網站:Learn | Codecademy。這是一個在線學習編程知識的網站(不光可以學Python),有了它,即使你沒有在電腦上配置Python環境,仍然可以學習Python編程,很方便。重要的是它的交互做的也很好,概念的講解和配套的聯繫都有。它的界面是這樣:


我自己的碩士論文是用Python做數據分析的 (https://github.com/cqcn1991/Wind-Speed-Analysis)

也做過幾篇豆瓣的電影數據分析 (為什麼這部電影的豆瓣評分我不認可?- 知乎專欄, 豆瓣的電影評分靠譜嗎? - 知乎專欄)

這個回答,可能不是很適合題主。題主應該就是想稍微用一下Python. 我這裡介紹的是系統性、重度使用的

1. 什麼樣的教程最好,最快、最適合入門

對於0基礎的人來說,最簡答的辦法是從例子開始。

比如說,一個實際的數據分析案例,你跟著走一邊,從讀入數據、畫圖,怎麼解釋數據,其實就都大概懂了。而不是先去學Python語言特性、看某些庫的文檔(Numpy, Matplotlib, Pandas等等)。

另外重要的,就是最好能有視頻教程。因為你可能也不知道怎麼安裝、使用Python和相關的庫,怎麼使用Git, 用什麼樣的編輯器(IDE)來寫代碼等等。這些東西,如果有視頻的話,其實就一目了然了。看起來比書快很多。

也就是說最理想的教程,應該是以例子入手(而不是從Python基礎編程、語法入手),而且最好有視頻。可以按照這個標準自己去找教程

2. 具體教程

滿足這個標準的中文的教程不清楚有哪些。英文的話,目前沒有碰到過特別優秀的、完全符合上述要求的。

說說我熟悉的教程,都是英文的

①Harvard CS109 Data Science

http://cs109.github.io/2015/
首推。內容包括最基礎的概率、統計分析,到更深的Machine Learning。既包括理論內容講解,也包括實際的編程(用的Python)。課堂講解、程序均有相應視頻(而且有英文字幕)。有案例作業,拿數據進行分析,可以仔細的學習參考答案裡面的代碼(也就是有編程案例)。完全免費。

不過,為什麼還要學概率論這些一大堆東西?(這也是我最開始說的,這篇答案不是適合樓主的輕量級需求)

因為,你以為你想要學的是Python, 而實際上是分析數據的方法,這個是任何文檔、編程的書無法教給你的。但卻是最重要的。也就是背後的理論、思考等等。

這個教程唯一的缺點,就是沒有書。很難去快速查詢、複習。比如再學完這門課,碰到一個東西,想要查的時候。無從查起。

②Udemy, Learning Python for Data Analysis and Visualization

https://www.udemy.com/learning-python-for-data-analysis-and-visualization/
當時,按照我對於理想教程的要求,買的。Udemy上評價最好,賣得最好的教程

然而,並不好。不推薦。為什麼?因為這裡的視頻,僅僅是把文檔重新講了一遍,在最後才有一個例子。沒有人需要先學習如何「查詢數據」,如何「畫柱狀圖」。這種東西大家都可以搜得到。真正缺乏的,是以問題為導向,把這些東西實際運用起來。

對我來說,這個教程最大的好處,是知道了Kaggle,可以瞻仰一下真正大牛們是怎樣用Data Science來解決問題的

3. 不從0開始學Python語言

剩下的,就沒有什麼教程了。也就是開頭說了,目前還比較缺乏系統性的教程。只是,再次強調一點,不學什麼 —— 不從0開始學Python語言。

為什麼?簡單的If, For loop這些,其實大家都會。Python的基本語言用法,一看就懂,完全不需要在一開始就系統的學Python(其實一開始單調的學習語法特性,你也未必學得進去)。真正缺的,反而是例子,而且是使用Pandas, Matplotlib等等庫的做數據分析的例子。

只有當你真正發現,Python不會寫。或者代碼組織很麻煩。或者看到的代碼不理解的時候,才需要去認真學Python語言。其實這個時候,也才真正學得進去。

或者,可以讀《Data Science from Scratch: First Principles with Python》里的Python Crash Course部分,1個小時就足夠了解Python的基本語法和一些特性。(這本書里其他的東西,就完全不要看了。因為是講的是如何去實現Pandas, Numpy中的某些內容。而沒有講實際Pandas, Numpy等等的使用技巧。)

4. 一些補充

就像上面說的,Python只是一門語言。一般的數據分析,Python, R, Matlab,甚至Excel都可以做。很多同學可能已經會Matlab了,那麼其實直接用Matlab就行了(不過Excel、Matlab的工作效率可能比較低)

--------------------

UPDATE: 20170810, 最近出了本書,

Hands-On Machine Learning with Scikit-Learn and TensorFlow

或許會是一個好的入手的方式。

不過依然是書,而且偏機器學習和AI。其實作為0基礎起步的話,可能關於pandas的操作會更簡單實用一些,不過放在這裡做參考啦。


2016.07.10更新:根據知友的反饋,需要向知友們解釋的是,我和朋友的專欄智能單元 - 知乎專欄雖然關注人數挺多的(7000+),但是主要面向深度學習和增強學習,數據分析方面的內容極少,請專攻數據分析的知友們注意。

個人猜測題主只是需要一個輕量級快速上手的乾貨教程,於是就不推薦各種書籍,給出一個一小時內的教程:

  • 推薦教程:斯坦福CS231n的預備教程:Python Numpy Tutorial。在我的專欄里有翻譯好的版本:CS231n課程筆記翻譯:Python Numpy教程 - 智能單元 - 知乎專欄
  • 推薦理由:由於CS231n全部作業要求是Python完成,所以該教程是面向零基礎的學習者,介紹了Python中Numpy,Scipy和Matplotlib這3個基礎庫的最常用內容,良心乾貨。
  • 教程內容:目錄如下供參考:
  • Python
    • 基本數據類型
    • 容器
      • 列表
      • 字典
      • 集合
      • 元組
    • 函數
  • Numpy
    • 數組
    • 訪問數組
    • 數據類型
    • 數組計算
    • 廣播
  • SciPy
    • 圖像操作
    • MATLAB文件
    • 點之間的距離
  • Matplotlib
    • 繪製圖形
    • 繪製多個圖形
    • 圖像

  • 後續建議:推薦安裝Anaconda平台進行後續學習。Anaconda默認安裝各種主流科學計算、工程和數據分析庫,使用的交互方式是IPython Notebook(已經改名為Jupyter Notebook)。相關介紹在知乎關於Anaconda的提問中已經有人詳細介紹,這裡就不贅述了。

回答完畢,祝順利。


繪圖: matplotlib核心剖析
習慣了matlab,不太熟悉面向對象編程的朋友,看下這個,對python的這種面向對象的畫圖方法會有醍醐灌頂的效果。

Python教程 - 廖雪峰的官方網站
用來自學還不錯的,每個內容後面會有問題,下面有網友的留言與解答。

http://my.oschina.net/lionets/blog/279785
講pandas數據規整的,挺不錯的,記得學pandas時候最經常翻的。博主還有不少好文章,不妨看看。

10 Minutes to pandas
這個網站講pandas的,提醒一下,不光包括10min速成pandas,合理利用左側導航欄,內容很豐富。

Jupyter Notebook Viewer

(截得裡面一個講畫圖的地方,酷一點)
包含python,numpy,pandas,scipy,matplotlib等內容,是notebook形式的,難度適中,簡約不簡單,強烈推薦。

https://www.joinquant.com/research

(這是用seaborn庫話畫的,網站自帶不用安裝)
joinquant本身是個量化交易的平台,但它的投資研究模塊是個線上的notebook,用手機號註冊下就能用,python,numpy,pandas,scipy,matplotlib等,支持和上一個學習資源結合使用,效果拔群。這個網站社區里也有一些python,pandas,numpy等的學習資料,不過有點良莠不齊。

實驗樓 - 國內領先的IT技術實訓平台
線上邊動手邊實踐的學習平台,有較多的課程安排,有免費有收費,如果編程方面基礎較少的話,跟著課程一步一步來應該不錯。我嫌它進度太慢,感覺自己學效率高就沒怎麼用這個。

Stack Overflow
it問題,相比百度和谷歌,你更應該問它,如果你聽的懂它說的話的話。

最後,內個啥,求贊。。。


自己平時的工作中以Python為主要的數據分析工具,在這裡談一下自己的學習經驗,希望能有所幫助。

  • Python 0基礎到入門

Python是一種面向對象、解釋型計算機程序設計語言,很多人把它稱作可執行的偽代碼。用Python進行數據分析的第一步是要對Python這門語言有一個基本的了解,掌握基本的語法及數據結構。Python可以說是最容易上手的編程語言之一(或許可以把之一去掉),如果有一定的編程語言基礎,比如學過C、C++或者Java等,Python基本上可以算是無師自通。如果沒有編程基礎,那也不要緊,Python入門是非常容易的。
推薦材料:笨辦法學 Python (Learn Python The Hard Way)
推薦理由:內容簡潔,整本書以習題的方式展開,結構清晰,學練結合。

  • Python數據分析開發環境

對於很多沒有計算機背景的同學來說,設置Python的開發環境有時也會成為一個不小的挑戰。之前幫助過很多同學安裝Python及相關庫,所以非常理解同學的難處。工欲善其事,必先利其器。一個好的開發環境,對於提高數據分析的效率是大有幫助的。答主自己是習慣用命令行+Sublime Text的組合,但是,由於在數據分析過程中經常需要使用iPython進行交互,這種組合對於iPython支持不夠的缺點會被放大。同時,在命令行裡面逐個安裝Python及各種包,並進行維護升級管理,是非常的低效繁瑣。同時,可能會產生dependence的問題,解決起來比較麻煩費時。為了解決命令行+Sublime Text組合存在的問題,強烈向大家安利大殺器Anaconda。
Anaconda是Continuum Analytics公司推出的Python數據科學平台,說起Continuum Analytics這個公司,不得不提一下公司的CEO:Travis Oliphant。此君是Python數值及科學計算屆的大拿,是Numpy的主要貢獻者,也是Scipy的原始作者,Continuum Analytics是他在2012年以總裁身份離開Enthought後創建的一家公司。在我看來,Anaconda最大的優點在於,作為一個數據分析平台,包含了幾乎所有常見的Python數據分析庫,並提供了簡單易用的版本管理功能,能夠讓使用者專註於數據分析及開發。

  • 常用Python數據分析工具
  1. NumPy:為Python提供了N維矩陣,是Python科學計算的基礎,Python的數據分析工具基本都是以他為基礎進行搭建。
  2. Scipy:Python科學及工程計算庫。
  3. IPython:Python的互動式解釋器,提供了強大的探索性數據分析功能。
  4. Pandas:最好用的Python數據處理及控制工具,提供了Series和DataFrame這兩種在數據分析中最常用的數據結構。
  5. Matplotlib:Python最著名的繪圖庫,功能強大但是操作複雜,因此並不推薦初學者花太多時間在這個庫上。
  6. scikit-learn:Python最著名的機器學習庫,也是目前在數據科學領域應用最廣、最流行的工具之一。
  7. StatsModels:Python的統計建模工具。
  8. Seaborn:以Matplotlib為基礎的統計可視化工具,如有繪圖方面的需求,建議初學者用這個庫。
  9. Bokeh:互動式數據可視化工具,Python的D3.js

以上涵蓋了比較常用的Python數據分析工具,其中Numpy,Scipy,IPython,Pandas和Matplotlib是基礎,在掌握這幾個庫之後可以根據自己的需求選擇相應的Python庫進行學習。
推薦材料:Python for Data Analysis
推薦理由:這本書很全面,講的很細,涵蓋了Numpy、Scipy幾個主要的數據分析庫。但是這本書的缺點和優點一樣明顯,主要在於成書時間太早(2012年最後修改),部分內容有些陳舊,同時由於講的很細,很多內容不太適合初學者。
閱讀建議:前五章認真看一下,複製書里的代碼,並能夠調試運行成功,後面的章節根據需要挑著看。

  • Python數據分析實戰

用Python進行數據分析本質上是解決實際工作中遇到的數據分析有關的問題,Python作為一門編程語言,僅僅是我們解決問題的工具。掌握一門編程語言的關鍵是實踐,將實際問題與編程學習結合起來才是最有效的方法。因為對中文材料不是很熟悉,所以只能推薦英文的。

  1. Harvard CS109 Data Science

之前已經有同學提到過這門課,但是仍然要再安利一下。推薦這門課主要有如下原因

  • 有視頻教程,不會太枯燥。
  • 涵蓋面廣,難度適中,適合入門。
  • 課程包括了概率論、數理統計及機器學習等內容,這些都是實際工作中常用的分析工具。
  • 理論與實踐相結合,並以Python為主要編程語言。
  • 涉及到一點文本分析以及MapReduce、Spark等內容

2. Kaggle競賽
如果想更進一步的了解如何用Python進行數據分析,那麼,Kaggle一定是最好的選擇。這裡彙集了來自全世界各地的數據分析高手,社區非常的活躍,同時也有很多有趣的比賽及項目。從適合初學者入門的數字識別器、泰坦尼克號生存率預測,到獎金幾萬甚至幾十萬美元的競賽,再到由各大公司,如Facebook, Walmart等,舉辦的以招聘為導向的競賽,你總能找到一款適合你的。


樓上很全面但略複雜,建議先裝ipython notebook,然後聽南京大學Coursera公開課《python玩轉數據分析》一邊敲代碼,配合《用python進行數據分析》,你看看我編程零基礎學完的成果sherryup - 簡書


如果你是有過編程基礎,比如C/C++, java 什麼的。python基本就是無師自通快速上手,直接官方文檔,不懂的上stack overflow。基本可以解決大多數問題。

沒有編程基礎的話,個人推薦 《think python》這本書。《learn python the hard way》太淺, 《head first python》太繁,《think python》作為入門剛剛好,兩天可以看完,常用的東西都有包括。

然後做數據分析,還有一本 《python for data analysis》。我個人用的不多,但例子還是不錯的。


熟悉語言

Fluent Python

應用到數據分析

Python for Data Science For Dummies

Data Science from Scratch


其實python非常適合初學者入門,上手很容易。
以下是兩點經驗:
1.找一本淺顯易懂,常式比較好的教程,從頭到尾看下去。把裡面的例子都手打一遍,搞懂為什麼。
2.去找一個實際項目練手。如果金融相關的數據分析可以參考
量化分析師的Python日記【第3天:一大波金融Library來襲之numpy篇優礦
量化分析師的Python日記【第4天:一大波金融Library來襲之scipy篇】
優礦
量化分析師的Python日記【第5天:數據處理的瑞士軍刀pandas】
優礦
量化分析師的Python日記【第6天:數據處理的瑞士軍刀pandas下篇
優礦


另外推薦完全沒有編程基礎的新手先看《head first python》或者《與孩子一起學編程(老少咸宜的編程入門奇書,榮獲Jolt生產效率大獎)》((美)桑德...)【簡介,這類書其實是借 python 來講編程入門。
如果有一點點編程基礎,而想學 python,建議《簡明Python教程》或《Dive into Python》,這兩個都有在線中文版本:
簡明 Python 教程Dive Into Python
進階推薦看 Python高級編程, python高級編程
最後數據分析推薦《《利用Python進行數據分析》((美)麥金尼...)【簡介》


首先給出一個很吸睛,但是說實話很實用的結論:不管有沒有基礎,學習python這東西,入門半天就夠了,實在不會代碼知識的,琢磨著也就一兩天,書什麼的,都懶得推薦了。
以下步驟:
1、學習python基本語法,主要也就是數據類型,list、tuple用法,if判斷,for循環,函數的定義調用等,一些基本內容,這些隨便搜搜python教程都能找到,即使新手,一兩個小時都能搞定
2、按需coding,實際需要對數據需要什麼處理,考慮用python實現,一開始肯定不會,用百度或者Google即可,並將每一次的處理代碼保存整理為筆記,形成自己的python用法庫
3、定時對筆記進行整理擴展,比如有些需求用過pandas,就去看相關pandas文檔,用過什麼,擴展什麼就可以,不需要面面俱到,什麼都完全掌握

當然記筆記是個長期過程,不過做了一段時間之後,也就發現,工作裡面數據分析里用到的python就那麼點內容,根本不需要像有些人說的,把這本書可看一遍,那本書也看一遍,真的,夠用就行。二八原則,我們只需要會那百分之二十的東西就夠啦。

等用過一段時間之後,才會對coding找到感覺,才會找到代碼思維,才會學會看官方文檔,看API。
工作中,有時需要用到新的編程語言,都是看看基本用法,看看API,半天一天就上手幹活,哪有人會去看什麼三十天入門到精通。

我個人學習代碼,就是試錯化、經驗化。試錯,不斷倒騰某一用法,然後就會了;經驗化就是將一切用到的代碼都整理歸納,形成自己的知識庫。當需要理論支撐的時候,才去買書學習。

以前剛開始的時候,也像題主一樣,看各種入門資料,找各種入門書籍推薦,真的是走過很多彎路,之後才慢慢形成自己的套路的。

以上感悟,來自於一個工作一年半,從一個基本不怎麼會的數據分析入門者,到做數據挖掘模型演算法的從業人員的經驗之談。


迪艾姆python培訓黃哥推薦的三本書下載:
像計算機科學家一樣思考Python
Python編程實踐
Python核心編程(第2版)

How to Think Like a Computer Scientist- Learning with Python 3
Practical Programming, 2nd Edition An Introduction to Computer Science Using Python 3

Core Python Programming, 2nd Edition

請看黃哥本人寫的文章
如何捅破python編程的那層紙
article/pythonstudy.md at master · pythonpeixun/article · GitHub

剪刀石頭布小習題三種語言python2、php、go代碼
article/jdstb.md at master · pythonpeixun/article · GitHub
一段小代碼說明@property裝飾器的用法
一段小代碼說明@property裝飾器的用法


首先從心態上,想正經的學才行。
然後個人感覺簡單應用從下面的順序就可以的。(1. 代表學生花費時間;2. 代表全職工作花費時間)

廖雪峰官網(1. 一周時間;2. 大約半月)主要為python入門;
numpy and scipy 官網 (1. 3天到5天時間;2. 1周半時間);
pandas 官網 上面說過的 10分鐘教程,(最多半天時間);
機器學習實戰(書籍)(1. 半個月; 2. 一個月);

如果想搞一些偏向數學的演算法學習,入門建議李航《統計學習方法》。
再深入的等我學了再答。



python官網。大部分的python材料都是copy官網上的教程


利用Python進行數據分析


菜鳥教程 教會你基礎


很好的帖子!


Mark 最近正在學


深入 Python 3
這個入門挺好的,不過需要點別的語言的開發背景,再裝個ipython多試試就好了


用python進行數據分析, 看完然後就是查官網api了.


看其他的基礎,用過R的人喜歡pandas入手,用過matlab可以numpy入手,有其他編程語言基礎就直接過一遍語法然後找例子練習就行。


推薦《與孩子一起學編程》,專門寫Python編程的,而且比較有意思


推薦閱讀:

如何評價谷歌的「人工智慧先行」(AI First)戰略?
深度機器學習中的batch的大小對學習效果有何影響?
機器學習,在理論和編程方面要如何準備?
分布的相似度(距離)用什麼模型比較好?
怎樣進行大數據的入門級學習?

TAG:Python | 數據挖掘 | 數據分析 | 機器學習 |