每週一書《Python資料科學手冊》分享!

shenmanli發表於2019-02-22

Python資料科學手冊是對以資料深度需求為中心的科學、研究以及針對計算和統計方法的參考書。本書共五章,每章介紹一到兩個Python資料科學中的重點工具包。首先從IPython和Jupyter開始,它們提供了資料科學家需要的計算環境;第2章講解能提供ndarray物件的NumPy,它可以用Python高效地儲存和操作大型陣列;第3章主要涉及提供DataFrame物件的Pandas,它可以用Python高效地儲存和操作帶標籤的/列式資料;第4章的主角是Matplotlib,它為Python提供了許多資料視覺化功能;第5章以Scikit-Learn為主,這個程式庫為最重要的機器學習演算法提供了高效整潔的Python版實現。

本書適合有程式設計背景,並打算將開源Python工具用作分析、操作、視覺化以及學習資料的資料科學研究人員。

目錄

第 1 章 IPython:超越Python

1.1  shell還是Notebook

1.1.1 啟動IPython shell

1.1.2 啟動Jupyter Notebook

1.2 IPython的幫助和文件

1.2.1 用符號?獲取文件

1.2.2 通過符號??獲取原始碼

1.2.3 用Tab補全的方式探索模組

1.3 IPython shell中的快捷鍵

1.3.1 導航快捷鍵

1.3.2 文字輸入快捷鍵

1.3.3 命令歷史快捷鍵

1.3.4 其他快捷鍵

1.4 IPython魔法命令

1.4.1 貼上程式碼塊:%paste和%cpaste

1.4.2 執行外部程式碼:%run

1.4.3 計算程式碼執行時間:%timeit

1.4.4 魔法函式的幫助:?、%magic和%lsmagic

1.5 輸入和輸出歷史

1.5.1 IPython的輸入和輸出物件

1.5.2 下劃線快捷鍵和以前的輸出

1.5.3 禁止輸出

1.5.4 相關的魔法命令

1.6 IPython和shell命令

1.6.1 shell快速入門

1.6.2 IPython中的shell命令

1.6.3 在shell中傳入或傳出值

1.7 與shell相關的魔法命令

1.8 錯誤和除錯

1.8.1 控制異常:%xmode

1.8.2 除錯:當閱讀軌跡追溯不足以解決問題時

1.9 程式碼的分析和計時

1.9.1 程式碼段計時:%timeit和%time

1.9.2 分析整個指令碼:%prun

1.9.3 用%lprun進行逐行分析

1.9.4 用%memit和%mprun進行記憶體分析

1.10 IPython參考資料

1.10.1 網路資源

1.10.2 相關圖書

第 2 章 NumPy入門

2.1 理解Python中的資料型別

2.1.1 Python整型不僅僅是一個整型

2.1.2 Python列表不僅僅是一個列表

2.1.3 Python中的固定型別陣列

2.1.4 從Python列表建立陣列

2.1.5 從頭建立陣列

2.1.6 NumPy標準資料型別

2.2 NumPy陣列基礎

2.2.1 NumPy陣列的屬性

2.2.2 陣列索引:獲取單個元素

2.2.3 陣列切片:獲取子陣列

2.2.4 陣列的變形

2.2.5 陣列拼接和分裂

2.3 NumPy陣列的計算:通用函式

2.3.1 緩慢的迴圈

2.3.2 通用函式介紹

2.3.3 探索NumPy的通用函式

2.3.4 高階的通用函式特性

2.3.5 通用函式:更多的資訊

2.4 聚合:最小值、最大值和其他值

2.4.1 陣列值求和

2.4.2 最小值和最大值

2.4.3 示例:美國總統的身高是多少

2.5 陣列的計算:廣播

2.5.1 廣播的介紹

2.5.2 廣播的規則

2.5.3 廣播的實際應用

2.6 比較、掩碼和布林邏輯

2.6.1 示例:統計下雨天數

2.6.2 和通用函式類似的比較操作

2.6.3 操作布林陣列

2.6.4 將布林陣列作為掩碼

2.7 花哨的索引

2.7.1 探索花哨的索引

2.7.2 組合索引

2.7.3 示例:選擇隨機點

2.7.4 用花哨的索引修改值

2.7.5 示例:資料區間劃分

2.8 陣列的排序

2.8.1 NumPy中的快速排序:np.sort和np.argsort

2.8.2 部分排序:分隔

2.8.3 示例:K個最近鄰

2.9 結構化資料:NumPy的結構化陣列

2.9.1 生成結構化陣列

2.9.2 更高階的複合型別

2.9.3 記錄陣列:結構化陣列的扭轉

2.9.4 關於Pandas

第 3 章 Pandas資料處理

3.1 安裝並使用Pandas

3.2 Pandas物件簡介

3.2.1 Pandas的Series物件

3.2.2 Pandas的DataFrame物件

3.2.3 Pandas的Index物件

3.3 資料取值與選擇

3.3.1 Series資料選擇方法

3.3.2 DataFrame資料選擇方法

3.4 Pandas數值運算方法

3.4.1 通用函式:保留索引

3.4.2 通用函式:索引對齊

3.4.3 通用函式:DataFrame與Series的運算

3.5 處理缺失值

3.5.1 選擇處理缺失值的方法

3.5.2 Pandas的缺失值

3.5.3 處理缺失值

3.6 層級索引

3.6.1 多級索引Series

3.6.2 多級索引的建立方法

3.6.3 多級索引的取值與切片

3.6.4 多級索引行列轉換

3.6.5 多級索引的資料累計方法

3.7 合併資料集:Concat與Append操作

3.7.1 知識回顧:NumPy陣列的合併

3.7.2 通過pd.concat實現簡易合併

3.8 合併資料集:合併與連線

3.8.1 關係代數

3.8.2 資料連線的型別

3.8.3 設定資料合併的鍵

3.8.4 設定資料連線的集合操作規則

3.8.5 重複列名:suffixes引數

3.8.6 案例:美國各州的統計資料

3.9 累計與分組

3.9.1 行星資料

3.9.2 Pandas的簡單累計功能

3.9.3 GroupBy:分割、應用和組合

3.10 資料透視表

3.10.1 演示資料透視表

3.10.2 手工製作資料透視表

3.10.3 資料透視表語法

3.10.4 案例:美國人的生日

3.11 向量化字串操作

3.11.1 Pandas字串操作簡介

3.11.2 Pandas字串方法列表

3.11.3 案例:食譜資料庫

3.12 處理時間序列

3.12.1 Python的日期與時間工具

3.12.2 Pandas時間序列:用時間作索引

3.12.3 Pandas時間序列資料結構

3.12.4 時間頻率與偏移量

3.12.5 重新取樣、遷移和視窗

3.12.6 更多學習資料

3.12.7 案例:美國西雅圖自行車統計資料的視覺化

3.13 高效能Pandas:eval()與query()

3.13.1 query()與eval()的設計動機:複合代數式

3.13.2 用pandas.eval()實現高效能運算

3.13.3 用DataFrame.eval()實現列間運算

3.13.4 DataFrame.query()方法

3.13.5 效能決定使用時機

3.14 參考資料

第 4 章 Matplotlib資料視覺化

4.1 Matplotlib常用技巧

4.1.1 匯入Matplotlib

4.1.2 設定繪圖樣式

4.1.3 用不用show()?如何顯示圖形

4.1.4 將圖形儲存為檔案

4.2 兩種畫圖介面

4.2.1 MATLAB風格介面

4.2.2 物件導向介面

4.3 簡易線形圖

4.3.1 調整圖形:線條的顏色與風格

4.3.2 調整圖形:座標軸上下限

4.3.3 設定圖形標籤

4.4 簡易散點圖

4.4.1 用plt.plot畫散點圖

4.4.2 用plt.scatter畫散點圖

4.4.3 plot與scatter:效率對比

4.5 視覺化異常處理

4.5.1 基本誤差線

4.5.2 連續誤差

4.6 密度圖與等高線圖

三維函式的視覺化

4.7 頻次直方圖、資料區間劃分和分佈密度

二維頻次直方圖與資料區間劃分

4.8 配置圖例

4.8.1 選擇圖例顯示的元素

4.8.2 在圖例中顯示不同尺寸的點

4.8.3 同時顯示多個圖例

4.9 配置顏色條

4.9.1 配置顏色條

4.9.2 案例:手寫數字

4.10 多子圖

4.10.1 plt.axes:手動建立子圖

4.10.2 plt.subplot:簡易網格子圖

4.10.3 plt.subplots:用一行程式碼建立網格

4.10.4 plt.GridSpec:實現更復雜的排列方式

4.11 文字與註釋

4.11.1 案例:節假日對美國出生率的影響

4.11.2 座標變換與文字位置

4.11.3 箭頭與註釋

4.12 自定義座標軸刻度

4.12.1 主要刻度與次要刻度

4.12.2 隱藏刻度與標籤

4.12.3 增減刻度數量

4.12.4 花哨的刻度格式

4.12.5 格式生成器與定位器小結

4.13 Matplotlib自定義:配置檔案與樣式表

4.13.1 手動配置圖形

4.13.2 修改預設配置:rcParams

4.13.3 樣式表

4.14 用Matplotlib畫三維圖

4.14.1 三維資料點與線

4.14.2 三維等高線圖

4.14.3 線框圖和曲面圖

4.14.4 曲面三角剖分

4.15 用Basemap視覺化地理資料

4.15.1 地圖投影

4.15.2 畫一個地圖背景

4.15.3 在地圖上畫資料

4.15.4 案例:美國加州城市資料

4.15.5 案例:地表溫度資料

4.16 用Seaborn做資料視覺化

4.16.1 Seaborn與Matplotlib

4.16.2 Seaborn圖形介紹

4.16.3 案例:探索馬拉松比賽成績資料

4.17 參考資料

4.17.1 Matplotlib資源

4.17.2 其他Python畫圖程式庫

第 5 章 機器學習

5.1 什麼是機器學習

5.1.1 機器學習的分類

5.1.2 機器學習應用的定性示例

5.1.3 小結

5.2 Scikit-Learn簡介

5.2.1 Scikit-Learn的資料表示

5.2.2 Scikit-Learn的評估器API

5.2.3 應用:手寫數字探索

5.2.4 小結

5.3 超引數與模型驗證

5.3.1 什麼是模型驗證

5.3.2 選擇最優模型

5.3.3 學習曲線

5.3.4 驗證實踐:網格搜尋

5.3.5 小結

5.4 特徵工程

5.4.1 分類特徵

5.4.2 文字特徵

5.4.3 影像特徵

5.4.4 衍生特徵

5.4.5 缺失值填充

5.4.6 特徵管道

5.5 專題:樸素貝葉斯分類

5.5.1 貝葉斯分類

5.5.2 高斯樸素貝葉斯

5.5.3 多項式樸素貝葉斯

5.5.4 樸素貝葉斯的應用場景

5.6 專題:線性迴歸

5.6.1 簡單線性迴歸

5.6.2 基函式迴歸

5.6.3 正則化

5.6.4 案例:預測自行車流量

5.7 專題:支援向量機

5.7.1 支援向量機的由來

5.7.2 支援向量機:邊界最大化

5.7.3 案例:人臉識別

5.7.4 支援向量機總結

5.8 專題:決策樹與隨機森林

5.8.1 隨機森林的誘因:決策樹

5.8.2 評估器整合演算法:隨機森林

5.8.3 隨機森林迴歸

5.8.4 案例:用隨機森林識別手寫數字

5.8.5 隨機森林總結

5.9 專題:主成分分析

5.9.1 主成分分析簡介

5.9.2 用PCA作噪音過濾

5.9.3 案例:特徵臉

5.9.4 主成分分析總結

5.10 專題:流形學習

5.10.1 流形學習:“HELLO”

5.10.2 多維標度法(MDS)

5.10.3 將MDS用於流形學習

5.10.4 非線性嵌入:當MDS失敗時

5.10.5 非線性流形:區域性線性嵌入

5.10.6 關於流形方法的一些思考

5.10.7 示例:用Isomap處理人臉資料

5.10.8 示例:手寫數字的視覺化結構

5.11 專題:k-means聚類

5.11.1 k-means簡介

5.11.2 k-means演算法:期望最大化

5.11.3 案例

5.12 專題:高斯混合模型

5.12.1 高斯混合模型(GMM)為什麼會出現:k-means 演算法

的缺陷

5.12.2 一般化E-M:高斯混合模型

5.12.3 將GMM用作密度估計

5.12.4 示例:用GMM生成新的資料

5.13 專題:核密度估計

5.13.1 KDE的由來:直方圖

5.13.2 核密度估計的實際應用

5.13.3 示例:球形空間的KDE

5.13.4 示例:不是很樸素的貝葉斯

5.14 應用:人臉識別管道

5.14.1 HOG特徵

5.14.2 HOG實戰:簡單人臉識別器

5.14.3 注意事項與改進方案

5.15 機器學習參考資料

5.15.1 Python中的機器學習

5.15.2 通用機器學習資源

如果想得到下載地址,請微信搜尋關注“中科院計算所培訓中心”公眾號,新增中科院計算所培訓中心助教“zhongkeyuanjss666”,幫助進入中科院IT技術分享群,群裡有地址分享。

相關文章