《利用Python進行資料分析·第2版》 轉

weixin_34393428發表於2019-02-19

第1章 準備工作

第2章 Python語法基礎,IPython和Jupyter Notebooks

第3章 Python的資料結構、函式和檔案

第4章 NumPy基礎:陣列和向量計算

第5章 pandas入門

第6章 資料載入、儲存與檔案格式

第7章 資料清洗和準備

第8章 資料規整:聚合、合併和重塑

第9章 繪圖和視覺化

第10章 資料聚合與分組運算

第11章 時間序列

第12章 pandas高階應用

第13章 Python建模庫介紹

第14章 資料分析案例

附錄A NumPy高階應用

附錄B 更多關於IPython的內容(完)

7178691-0d965cf51eb5af9e.png

下載本書:http://www.jianshu.com/p/fad9e41c1a42

GitHub(歡迎提pull request,GitHub上的md檔案可以用來自制電子書,pdf、mobi、epub格式的都行):

https://github.com/iamseancheney/python_for_data_analysis_2nd_chinese_version

GitBook(有錨點功能):

https://seancheney.gitbook.io/python-for-data-analysis-2nd/

下載本書程式碼:https://github.com/wesm/pydata-book(建議把程式碼下載下來之後,安裝好Anaconda 3.6,在目錄資料夾中用Jupyter notebook開啟)

本書是2017年10月20號正式出版的,和第1版的不同之處有:

包括Python教程內的所有程式碼升級為Python 3.6(第1版使用的是Python 2.7)

更新了Anaconda和其它包的Python安裝方法

更新了Pandas為2017最新版

新增了一章,關於更高階的Pandas工具,外加一些tips

簡要介紹了使用StatsModels和scikit-learn

對有些內容進行了重新排版。(譯者注1:最大的改變是把第1版附錄中的Python教程,單列成了現在的第2章和第3章,並且進行了擴充。可以說,本書第2版對新手更為友好了!)

(譯者注2:毫無疑問,本書是學習Python資料分析最好的參考書(另一本不錯的是《Pandas Cookbook》)。本來想把書名直接譯為《Python資料分析》,這樣更簡短。但是為了尊重第1版的翻譯,考慮到繼承性,還是用老書名。這樣讀過第一版的老讀者可以方便的用之前的書名檢索到第二版。作者在寫第二版的時候,有些文字是照搬第一版的。所以第二版的翻譯也借鑑copy了第一版翻譯:即,如果第二版中有和第一版相同的文字,則copy第一版的中文譯本,覺得不妥的地方會稍加修改,剩下的不同的內容就自己翻譯。這樣做也是為讀過第一版的老讀者考慮——相同的內容可以直接跳過。)

1.1 本書的內容

本書講的是利用Python進行資料控制、處理、整理、分析等方面的具體細節和基本要點。我的目標是介紹Python程式設計和用於資料處理的庫和工具環境,掌握這些,可以讓你成為一個資料分析專家。雖然本書的標題是“資料分析”,重點卻是Python程式設計、庫,以及用於資料分析的工具。這就是資料分析要用到的Python程式設計。

什麼樣的資料?

當書中出現“資料”時,究竟指的是什麼呢?主要指的是結構化資料(structured data),這個故意含糊其辭的術語代指了所有通用格式的資料,例如:

表格型資料,其中各列可能是不同的型別(字串、數值、日期等)。比如儲存在關係型資料庫中或以製表符/逗號為分隔符的文字檔案中的那些資料。

多維陣列(矩陣)。

通過關鍵列(對於SQL使用者而言,就是主鍵和外來鍵)相互聯絡的多個表。

間隔平均或不平均的時間序列。

這絕不是一個完整的列表。大部分資料集都能被轉化為更加適合分析和建模的結構化形式,雖然有時這並不是很明顯。如果不行的話,也可以將資料集的特徵提取為某種結構化形式。例如,一組新聞文章可以被處理為一張詞頻表,而這張詞頻表就可以用於情感分析。

大部分電子表格軟體(比如Microsoft Excel,它可能是世界上使用最廣泛的資料分析工具了)的使用者不會對此類資料感到陌生。

1.2 為什麼要使用Python進行資料分析

許許多多的人(包括我自己)都很容易愛上Python這門語言。自從1991年誕生以來,Python現在已經成為最受歡迎的動態程式語言之一,其他還有Perl、Ruby等。由於擁有大量的Web框架(比如Rails(Ruby)和Django(Python)),自從2005年,使用Python和Ruby進行網站建設工作非常流行。這些語言常被稱作指令碼(scripting)語言,因為它們可以用於編寫簡短而粗糙的小程式(也就是指令碼)。我個人並不喜歡“指令碼語言”這個術語,因為它好像在說這些語言無法用於構建嚴謹的軟體。在眾多解釋型語言中,由於各種歷史和文化的原因,Python發展出了一個巨大而活躍的科學計算(scientific computing)社群。在過去的10年,Python從一個邊緣或“自擔風險”的科學計算語言,成為了資料科學、機器學習、學界和工業界軟體開發最重要的語言之一。

在資料分析、互動式計算以及資料視覺化方面,Python將不可避免地與其他開源和商業的領域特定程式語言/工具進行對比,如R、MATLAB、SAS、Stata等。近年來,由於Python的庫(例如pandas和scikit-learn)不斷改良,使其成為資料分析任務的一個優選方案。結合其在通用程式設計方面的強大實力,我們完全可以只使用Python這一種語言構建以資料為中心的應用。

Python作為膠水語言

Python成為成功的科學計算工具的部分原因是,它能夠輕鬆地整合C、C++以及Fortran程式碼。大部分現代計算環境都利用了一些Fortran和C庫來實現線性代數、優選、積分、快速傅立葉變換以及其他諸如此類的演算法。許多企業和國家實驗室也利用Python來“粘合”那些已經用了多年的遺留軟體系統。

大多數軟體都是由兩部分程式碼組成的:少量需要佔用大部分執行時間的程式碼,以及大量不經常執行的“膠水程式碼”。大部分情況下,膠水程式碼的執行時間是微不足道的。開發人員的精力幾乎都是花在優化計算瓶頸上面,有時更是直接轉用更低階的語言(比如C)。

解決“兩種語言”問題

很多組織通常都會用一種類似於領域特定的計算語言(如SAS和R)對新想法做研究、原型構建和測試,然後再將這些想法移植到某個更大的生產系統中去(可能是用Java、C#或C++編寫的)。人們逐漸意識到,Python不僅適用於研究和原型構建,同時也適用於構建生產系統。為什麼一種語言就夠了,卻要使用兩個語言的開發環境呢?我相信越來越多的企業也會這樣看,因為研究人員和工程技術人員使用同一種程式設計工具將會給企業帶來非常顯著的組織效益。

為什麼不選Python

雖然Python非常適合構建分析應用以及通用系統,但它對不少應用場景適用性較差。

由於Python是一種解釋型程式語言,因此大部分Python程式碼都要比用編譯型語言(比如Java和C++)編寫的程式碼執行慢得多。由於程式設計師的時間通常都比CPU時間值錢,因此許多人也願意對此做一些取捨。但是,在那些延遲要求非常小或高資源利用率的應用中(例如高頻交易系統),耗費時間使用諸如C++這樣更低階、更低生產率的語言進行程式設計也是值得的。

對於高併發、多執行緒的應用程式而言(尤其是擁有許多計算密集型執行緒的應用程式),Python並不是一種理想的程式語言。這是因為Python有一個叫做全域性直譯器鎖(Global Interpreter Lock,GIL)的元件,這是一種防止直譯器同時執行多條Python位元組碼指令的機制。有關“為什麼會存在GIL”的技術性原因超出了本書的範圍。雖然很多大資料處理應用程式為了能在較短的時間內完成資料集的處理工作都需要執行在計算機叢集上,但是仍然有一些情況需要用單程式多執行緒系統來解決。

這並不是說Python不能執行真正的多執行緒並行程式碼。例如,Python的C外掛使用原生的C或C++的多執行緒,可以並行執行而不被GIL影響,只要它們不頻繁地與Python物件互動。

1.3 重要的Python庫

考慮到那些還不太瞭解Python科學計算生態系統和庫的讀者,下面我先對各個庫做一個簡單的介紹。

NumPy

NumPy(Numerical Python的簡稱)是Python科學計算的基礎包。本書大部分內容都基於NumPy以及構建於其上的庫。它提供了以下功能(不限於此):

快速高效的多維陣列物件ndarray。

用於對陣列執行元素級計算以及直接對陣列執行數學運算的函式。

用於讀寫硬碟上基於陣列的資料集的工具。

線性代數運算、傅立葉變換,以及隨機數生成。

-成熟的C API, 用於Python外掛和原生C、C++、Fortran程式碼訪問NumPy的資料結構和計算工具。

除了為Python提供快速的陣列處理能力,NumPy在資料分析方面還有另外一個主要作用,即作為在演算法和庫之間傳遞資料的容器。對於數值型資料,NumPy陣列在儲存和處理資料時要比內建的Python資料結構高效得多。此外,由低階語言(比如C和Fortran)編寫的庫可以直接操作NumPy陣列中的資料,無需進行任何資料複製工作。因此,許多Python的數值計算工具要麼使用NumPy陣列作為主要的資料結構,要麼可以與NumPy進行無縫互動操作。

pandas

pandas提供了快速便捷處理結構化資料的大量資料結構和函式。自從2010年出現以來,它助使Python成為強大而高效的資料分析環境。本書用得最多的pandas物件是DataFrame,它是一個面向列(column-oriented)的二維表結構,另一個是Series,一個一維的標籤化陣列物件。

pandas兼具NumPy高效能的陣列計算功能以及電子表格和關係型資料庫(如SQL)靈活的資料處理功能。它提供了複雜精細的索引功能,能更加便捷地完成重塑、切片和切塊、聚合以及選取資料子集等操作。因為資料操作、準備、清洗是資料分析最重要的技能,pandas是本書的重點。

作為背景,我是在2008年初開始開發pandas的,那時我任職於AQR Capital Management,一家量化投資管理公司,我有許多工作需求都不能用任何單一的工具解決:

有標籤軸的資料結構,支援自動或清晰的資料對齊。這可以防止由於資料不對齊,或處理來源不同的索引不同的資料,所造成的錯誤。

整合時間序列功能。

相同的資料結構用於處理時間序列資料和非時間序列資料。

儲存後設資料的算術運算和壓縮。

靈活處理缺失資料。

合併和其它流行資料庫(例如基於SQL的資料庫)的關係操作。

我想只用一種工具就實現所有功能,並使用通用軟體開發語言。Python是一個不錯的候選語言,但是此時沒有整合的資料結構和工具來實現。我一開始就是想把pandas設計為一款適用於金融和商業分析的工具,pandas專注於深度時間序列功能和工具,適用於時間索引化的資料。

對於使用R語言進行統計計算的使用者,肯定不會對DataFrame這個名字感到陌生,因為它源自於R的data.frame物件。但與Python不同,data frames是構建於R和它的標準庫。因此,pandas的許多功能不屬於R或它的擴充套件包。

pandas這個名字源於panel data(皮膚資料,這是多維結構化資料集在計量經濟學中的術語)以及Python data analysis(Python資料分析)。

matplotlib

matplotlib是最流行的用於繪製圖表和其它二維資料視覺化的Python庫。它最初由John D.Hunter(JDH)建立,目前由一個龐大的開發團隊維護。它非常適合建立出版物上用的圖表。雖然還有其它的Python視覺化庫,matplotlib卻是使用最廣泛的,並且它和其它生態工具配合也非常完美。我認為,可以使用它作為預設的視覺化工具。

IPython和Jupyter

IPython專案起初是Fernando Pérez在2001年的一個用以加強和Python互動的子專案。在隨後的16年中,它成為了Python資料棧最重要的工具之一。雖然IPython本身沒有提供計算和資料分析的工具,它卻可以大大提高互動式計算和軟體開發的生產率。IPython鼓勵“執行-探索”的工作流,區別於其它程式設計軟體的“編輯-編譯-執行”的工作流。它還可以方便地訪問系統的shell和檔案系統。因為大部分的資料分析程式碼包括探索、試錯和重複,IPython可以使工作更快。

2014年,Fernando和IPython團隊宣佈了Jupyter專案,一個更寬泛的多語言互動計算工具的計劃。IPython web notebook變成了Jupyter notebook,現在支援40種程式語言。IPython現在可以作為Jupyter使用Python的核心(一種程式語言模式)。

IPython變成了Jupyter龐大開源專案(一個互動和探索式計算的高效環境)中的一個元件。它最老也是最簡單的模式,現在是一個用於編寫、測試、除錯Python程式碼的強化shell。你還可以使用通過Jupyter Notebook,一個支援多種語言的互動式網路程式碼“筆記本”,來使用IPython。IPython shell 和Jupyter notebooks特別適合進行資料探索和視覺化。

Jupyter notebooks還可以編寫Markdown和HTML內容,它提供了一種建立程式碼和文字的富文字方法。其它程式語言也在Jupyter中植入了核心,好讓在Jupyter中可以使用Python以外的語言。

對我個人而言,我的大部分Python工作都要用到IPython,包括執行、除錯和測試程式碼。

在本書的GitHub頁面,你可以找到包含各章節所有程式碼例項的Jupyter notebooks。

SciPy

SciPy是一組專門解決科學計算中各種標準問題域的包的集合,主要包括下面這些包:

scipy.integrate:數值積分例程和微分方程求解器。

scipy.linalg:擴充套件了由numpy.linalg提供的線性代數例程和矩陣分解功能。

scipy.optimize:函式優化器(最小化器)以及根查詢演算法。

scipy.signal:訊號處理工具。

scipy.sparse:稀疏矩陣和稀疏線性系統求解器。

scipy.special:SPECFUN(這是一個實現了許多常用數學函式(如伽瑪函式)的Fortran庫)的包裝器。

scipy.stats:標準連續和離散概率分佈(如密度函式、取樣器、連續分佈函式等)、各種統計檢驗方法,以及更好的描述統計法。

NumPy和SciPy結合使用,便形成了一個相當完備和成熟的計算平臺,可以處理多種傳統的科學計算問題。

scikit-learn

2010年誕生以來,scikit-learn成為了Python的通用機器學習工具包。僅僅七年,就匯聚了全世界超過1500名貢獻者。它的子模組包括:

分類:SVM、近鄰、隨機森林、邏輯迴歸等等。

迴歸:Lasso、嶺迴歸等等。

聚類:k-均值、譜聚類等等。

降維:PCA、特徵選擇、矩陣分解等等。

選型:網格搜尋、交叉驗證、度量。

預處理:特徵提取、標準化。

與pandas、statsmodels和IPython一起,scikit-learn對於Python成為高效資料科學程式語言起到了關鍵作用。雖然本書不會詳細講解scikit-learn,我會簡要介紹它的一些模型,以及用其它工具如何使用這些模型。

statsmodels

statsmodels是一個統計分析包,起源於史丹佛大學統計學教授Jonathan Taylor,他設計了多種流行於R語言的迴歸分析模型。Skipper Seabold和Josef Perktold在2010年正式建立了statsmodels專案,隨後匯聚了大量的使用者和貢獻者。受到R的公式系統的啟發,Nathaniel Smith發展出了Patsy專案,它提供了statsmodels的公式或模型的規範框架。

與scikit-learn比較,statsmodels包含經典統計學和經濟計量學的演算法。包括如下子模組:

迴歸模型:線性迴歸,廣義線性模型,健壯線性模型,線性混合效應模型等等。

方差分析(ANOVA)。

時間序列分析:AR,ARMA,ARIMA,VAR和其它模型。

非引數方法: 核密度估計,核迴歸。

統計模型結果視覺化。

statsmodels更關注與統計推斷,提供不確定估計和引數p-值。相反的,scikit-learn注重預測。

同scikit-learn一樣,我也只是簡要介紹statsmodels,以及如何用NumPy和pandas使用它。

1.4 安裝和設定

由於人們用Python所做的事情不同,所以沒有一個普適的Python及其外掛包的安裝方案。由於許多讀者的Python科學計算環境都不能完全滿足本書的需要,所以接下來我將詳細介紹各個作業系統上的安裝方法。我推薦免費的Anaconda安裝包。寫作本書時,Anaconda提供Python 2.7和3.6兩個版本,以後可能發生變化。本書使用的是Python 3.6,因此推薦選擇Python 3.6或更高版本。

Windows

要在Windows上執行,先下載Anaconda安裝包。推薦跟隨Anaconda下載頁面的Windows安裝指導,安裝指導在寫作本書和讀者看到此文的的這段時間內可能發生變化。

現在,來確認設定是否正確。開啟命令列視窗(cmd.exe),輸入python以開啟Python直譯器。可以看到類似下面的Anaconda版本的輸出:

C:\Users\wesm>pythonPython3.5.2|Anaconda 4.1.1 (64-bit)|(default, Jul52016,11:41:13)[MSC v.190064bit (AMD64)] on win32>>>

要退出shell,按Ctrl-D(Linux或macOS上),Ctrl-Z(Windows上),或輸入命令exit(),再按Enter。

Apple (OS X, macOS)

下載OS X Anaconda安裝包,它的名字類似Anaconda3-4.1.0-MacOSX-x86_64.pkg。雙擊.pkg檔案,執行安裝包。安裝包執行時,會自動將Anaconda執行路徑新增到.bash_profile檔案,它位於/Users/$USER/.bash_profile。

為了確認成功,在系統shell開啟IPython:

$ ipython

要退出shell,按Ctrl-D,或輸入命令exit(),再按Enter。

GNU/Linux

Linux版本很多,這裡給出Debian、Ubantu、CentOS和Fedora的安裝方法。安裝包是一個指令碼檔案,必須在shell中執行。取決於系統是32位還是64位,要麼選擇x86 (32位)或x86_64 (64位)安裝包。隨後你會得到一個檔案,名字類似於Anaconda3-4.1.0-Linux-x86_64.sh。用bash進行安裝:

$ bash Anaconda3-4.1.0-Linux-x86_64.sh

筆記:某些Linux版本在包管理器中有滿足需求的Python包,只需用類似apt的工具安裝就行。這裡講的用Anaconda安裝,適用於不同的Linux安裝包,也很容易將包升級到最新版本。

接受許可之後,會向你詢問在哪裡放置Anaconda的檔案。我推薦將檔案安裝到預設的home目錄,例如/home/$USER/anaconda。

Anaconda安裝包可能會詢問你是否將bin/目錄新增到$PATH變數。如果在安裝之後有任何問題,你可以修改檔案.bashrc(或.zshrc,如果使用的是zsh shell)為類似以下的內容:

exportPATH=/home/$USER/anaconda/bin:$PATH

做完之後,你可以開啟一個新視窗,或再次用~/.bashrc執行.bashrc。

安裝或升級Python包

在你閱讀本書的時候,你可能想安裝另外的不在Anaconda中的Python包。通常,可以用以下命令安裝:

conda install package_name

如果這個命令不行,也可以用pip包管理工具:

pip install package_name

你可以用conda update命令升級包:

conda update package_name

pip可以用--upgrade升級:

pip install --upgrade package_name

本書中,你有許多機會嘗試這些命令。

注意:當你使用conda和pip二者安裝包時,千萬不要用pip升級conda的包,這樣會導致環境發生問題。當使用Anaconda或Miniconda時,最好首先使用conda進行升級。

Python 2 和 Python 3

第一版的Python 3.x出現於2008年。它有一系列的變化,與之前的Python 2.x程式碼有不相容的地方。因為從1991年Python出現算起,已經過了17年,Python 3 的出現被視為吸取一些列教訓的更優結果。

2012年,因為許多包還沒有完全支援Python 3,許多科學和資料分析社群還是在使用Python 2.x。因此,本書第一版使用的是Python 2.7。現在,使用者可以在Python 2.x和Python 3.x間自由選擇,二者都有良好的支援。

但是,Python 2.x在2020年就會到期(包括重要的安全補丁),因此再用Python 2.7就不是好的選擇了。因此,本書使用了Python 3.6,這一廣泛使用、支援良好的穩定版本。我們已經稱Python 2.x為“遺留版本”,簡稱Python 3.x為“Python”。我建議你也是如此。

本書基於Python 3.6。你的Python版本也許高於3.6,但是示例程式碼應該是向前相容的。一些示例程式碼可能在Python 2.7上有所不同,或完全不相容。

整合開發環境(IDEs)和文字編輯器

當被問到我的標準開發環境,我幾乎總是回答“IPython加文字編輯器”。我通常在程式設計時,反覆在IPython或Jupyter notebooks中測試和除錯每條程式碼。也可以互動式運算元據,和視覺化驗證資料操作中某一特殊集合。在shell中使用pandas和NumPy也很容易。

但是,當建立軟體時,一些使用者可能更想使用特點更為豐富的IDE,而不僅僅是原始的Emacs或Vim的文字編輯器。以下是一些IDE:

PyDev(免費),基於Eclipse平臺的IDE;

JetBrains的PyCharm(商業使用者需要訂閱,開源開發者免費);

Visual Studio(Windows使用者)的Python Tools;

Spyder(免費),Anaconda附帶的IDE;

Komodo IDE(商業)。

因為Python的流行,大多數文字編輯器,比如Atom和Sublime Text 3,對Python的支援也非常好。

1.5 社群和會議

除了在網上搜尋,各式各樣的科學和資料相關的Python郵件列表是非常有幫助的,很容易獲得回答。包括:

pydata:一個Google群組列表,用以回答Python資料分析和pandas的問題;

pystatsmodels: statsmodels或pandas相關的問題;

scikit-learn和Python機器學習郵件列表,scikit-learn@python.org

numpy-discussion:和NumPy相關的問題;

scipy-user:SciPy和科學計算的問題;

因為這些郵件列表的URLs可以很容易搜尋到,但因為可能發生變化,所以沒有給出。

每年,世界各地會舉辦許多Python開發者大會。如果你想結識其他有相同興趣的人,如果可能的話,我建議你去參加一個。許多會議會對無力支付入場費和差旅費的人提供財力幫助。下面是一些會議:

PyCon和EuroPython:北美和歐洲的兩大Python會議;

SciPy和EuroSciPy:北美和歐洲兩大面向科學計算的會議;

PyData:世界範圍內,一些列的地區性會議,專注資料科學和資料分析;

國際和地區的PyCon會議(http://pycon.org有完整列表) 。

1.6 本書導航

如果之前從未使用過Python,那你可能需要先看看本書的第2章和第3章,我簡要介紹了Python的特點,IPython和Jupyter notebooks。這些知識是為本書後面的內容做鋪墊。如果你已經掌握Python,可以選擇跳過。

接下來,簡單地介紹了NumPy的關鍵特性,附錄A中是更高階的NumPy功能。然後,我介紹了pandas,本書剩餘的內容全部是使用pandas、NumPy和matplotlib處理資料分析的問題。我已經儘量讓全書的結構循序漸進,但偶爾會有章節之間的交叉,有時用到的概念還沒有介紹過。

儘管讀者各自的工作任務不同,大體可以分為幾類:

與外部世界互動

閱讀編寫多種檔案格式和資料儲存;

資料準備

清洗、修改、結合、標準化、重塑、切片、切割、轉換資料,以進行分析;

轉換資料

對舊的資料集進行數學和統計操作,生成新的資料集(例如,通過各組變數聚類成大的表);

建模和計算

將資料繫結統計模型、機器學習演算法、或其他計算工具;

展示

建立互動式和靜態的圖表視覺化和文字總結。

程式碼示例

本書大部分程式碼示例的輸入形式和輸出結果都會按照其在IPython shell或Jupyter notebooks中執行時的樣子進行排版:

In[5]:CODEEXAMPLEOut[5]:OUTPUT

但你看到類似的示例程式碼,就是讓你在in的部分輸入程式碼,按Enter鍵執行(Jupyter中是按Shift-Enter)。然後就可以在out看到輸出。

示例資料

各章的示例資料都存放在GitHub上:http://github.com/pydata/pydata-book。下載這些資料的方法有二:使用git版本控制命令列程式;直接從網站上下載該GitHub庫的zip檔案。如果遇到了問題,可以到我的個人主頁,http://wesmckinney.com/,獲取最新的指導。

為了讓所有示例都能重現,我已經盡我所能使其包含所有必需的東西,但仍然可能會有一些錯誤或遺漏。如果出現這種情況的話,請給我發郵件:wesmckinn@gmail.com。報告本書錯誤的最好方法是O’Reilly的errata頁面,http://www.bit.ly/pyDataAnalysis_errata

引入慣例

Python社群已經廣泛採取了一些常用模組的命名慣例:

importnumpyasnpimportmatplotlib.pyplotaspltimportpandasaspdimportseabornassnsimportstatsmodelsassm

也就是說,當你看到np.arange時,就應該想到它引用的是NumPy中的arange函式。這樣做的原因是:在Python軟體開發過程中,不建議直接引入類似NumPy這種大型庫的全部內容(from numpy import *)。

行話

由於你可能不太熟悉書中使用的一些有關程式設計和資料科學方面的常用術語,所以我在這裡先給出其簡單定義:

資料規整(Munge/Munging/Wrangling)

指的是將非結構化和(或)散亂資料處理為結構化或整潔形式的整個過程。這幾個詞已經悄悄成為當今資料黑客們的行話了。Munge這個詞跟Lunge押韻。

偽碼(Pseudocode)

演算法或過程的“程式碼式”描述,而這些程式碼本身並不是實際有效的原始碼。

語法糖(Syntactic sugar)

這是一種程式設計語法,它並不會帶來新的特性,但卻能使程式碼更易讀、更易寫。

第1章 準備工作

第2章 Python語法基礎,IPython和Jupyter Notebooks

第3章 Python的資料結構、函式和檔案

第4章 NumPy基礎:陣列和向量計算

第5章 pandas入門

第6章 資料載入、儲存與檔案格式

第7章 資料清洗和準備

第8章 資料規整:聚合、合併和重塑

第9章 繪圖和視覺化

第10章 資料聚合與分組運算

第11章 時間序列

第12章 pandas高階應用

第13章 Python建模庫介紹

第14章 資料分析案例

附錄A NumPy高階應用

附錄B 更多關於IPython的內容(完)

作者:SeanCheney

連結:https://www.jianshu.com/p/04d180d90a3f

來源:簡書

相關文章