利用 Python 進行數據分析 (Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython, 2/e) 利用Python进行数据分析(原书第2版)

[美]韋斯·麥金尼(Wes McKinney)

買這商品的人也買了...

商品描述

閱讀本書可以獲得關於在Python下操作、處理、清洗、規整數據集的完整說明。

本書第2版針對Python 3.6進行了更新,並增加了實際案例向你展示如何高效地解決一系列數據分析問題。

你將在閱讀過程中學習到較新版本的pandas、NumPy、IPython和Jupyter。

本書作者Wes McKinney是Python pandas項目的創始人。

本書是對Python數據科學工具的實操化、現代化的介紹,非常適合剛學Python的數據分析師或剛學數據科學以及科學計算的Python編程者。

數據文件和相關的材料可以在GitHub上找到。

使用IPython shell和Jupyter notebook進行探索性計算

學習NumPy(Numerical Python)的基礎和高級特性

入門pandas庫中的數據分析工具

使用靈活工具對數據進行加載、清洗、變換、合併和重塑

使用matplotlib創建富含信息的可視化

將pandas的groupby功能應用於對數據集的切片、切塊和匯總

分析並操作規則和不規則的時間序列數據

利用完整的、詳細的示例學習如何解決現實中的數據分析問題

“本書是Python數據生態系統中的一本經典書籍,本次的新版本對從Python 3.6到pandas的最新特性等關鍵領域都進行了更新,增強了其獨特價值。通過解釋為什麼以及如何使用Python數據工具,本書以新穎、創造性的方式幫助讀者高效地學習這些工具。它是所有現代化數據密集型計算庫的重要組成部分。” 

Fernando Perez
加州大學伯克利分校統計學助理教授、IPython創始人、Jupyter項目聯合創始人

作者簡介

Wes McKinney 是流行的Python開源數據分析庫pandas的創始人。
他是一名活躍的演講者,
也是Python數據社區和Apache軟件基金會的Python/C 開源開發者。
目前他在紐約從事軟件架構師工作。

 

目錄大綱

前言1 


第1章準備工作7 
1.1本書內容7 
1.1.1什麼類型的數據7 
1.2為何利用Python進行數據分析8 
1.2.1 Python作為膠水8 
1.2.2解決“雙語言”難題8 
1.2.3為何不使用Python9 
1.3重要的Python庫9 
1.3.1 NumPy9 
1.3.2 pandas10 
1.3.3 matplotlib11 
1.3.4 IPython與Jupyter11 
1.3.5 SciPy12 
1.3.6 scikit-learn12 
1.3.7 statsmodels13 
1.4安裝與設置13 
1.4.1 Windows14 
1.4.2 Apple(OS X和macOS)14 
1.4.3 GNU/Linux14 
1.4.4安裝及更新Python包15 
1.4.5 Python 2和Python 316 
1.4.6集成開發環境和文本編輯器16 
1.5社區和會議17 
1.6快速瀏覽本書17 
1.6.1代碼示例18 
1.6.2示例數據18 
1.6.3導入約定18 
1.6.4術語19


第2章Python語言基礎、IPython及Jupyter notebook20 
2.1 Python解釋器21 
2.2 IPython基礎22 
2.2.1運行IPython命令行22 
2.2.2運行Jupyter notebook23 
2.2.3 Tab補全25 
2.2.4內省27 
2.2.5 %run命令28 
2.2.6執行剪貼板中的程序30 
2.2.7終端快捷鍵30 
2.2.8關於魔術命令31 
2.2.9 matplotlib集成33 
2.3 Python語言基礎34 
2.3.1語言語義34 
2.3.2標量類型42 
2.3.3控制流49 


第3章內建數據結構、函數及文件54 
3.1數據結構和序列54 
3.1.1元組54 
3.1.2列表57 
3.1.3內建序列函數61 
3.1.4字典64 
3.1 .5集合67 
3.1.6列表、集合和字典的推導式69 
3.2函數72 
3.2.1命名空間、作用域和本地函數72 
3.2.2返回多個值73 
3.2.3函數是對象74 
3.2.4匿名(Lambda)函數75
3.2.5柯里化:部分參數應用76 
3.2.6生成器77 
3.2.7錯誤和異常處理79 
3.3文件與操作系統82 
3.3.1字節與Unicode文件85 
3.4本章小結86

 
第4章NumPy基礎:數組與向量化計算87 
4.1 NumPy ndarray:多維數組對象89 
4.1.1生成ndarray90 
4.1.2 ndarray的數據類型92 
4.1.3 NumPy數組算術94 
4.1.4基礎索引與切片95 
4.1.5布爾索引100 
4.1. 6神奇索引103 
4.1.7數組轉置和換軸104 
4.2通用函數:快速的逐元素數組函數106 
4.3使用數組進行面向數組編程109 
4.3.1將條件邏輯作為數組操作110 
4.3.2數學和統計方法111 
4.3.3布爾值數組的方法113 
4.3.4排序114 
4.3.5唯一值與其他集合邏輯115 
4.4使用數組進行文件輸入和輸出115 
4.5線性代數116 
4.6偽隨機數生成118 
4.7示例:隨機漫步120 
4.7.1一次性模擬多次隨機漫步121 
4.8本章小結122


第5章pandas入門123 
5.1 pandas數據結構介紹123 
5.1.1 Series123 
5.1.2 DataFrame128 
5.1.3索引對象134 
5.2基本功能135 
5.2.1重建索引136 
5.2.2軸向上刪除條目138 
5.2.3索引、選擇與過濾140 
5.2.4整數索引144 
5.2.5算術和數據對齊145 
5.2.6函數應用和映射150 
5.2.7排序和排名152 
5.2.8含有重複標籤的軸索引155 
5.3描述性統計的概述與計算157 
5.3.1相關性和協方差159 
5.3.2唯一值、計數和成員屬性161 
5.4本章小結164 


第6章數據載入、存儲及文件格式165 
6.1文本格式數據的讀寫165 
6.1.1分塊讀入文本文件171 
6.1.2將數據寫入文本格式172 
6.1.3使用分隔格式174 
6.1.4 JSON數據176 
6.1.5 XML和HTML:網絡抓取177 
6.2二進制格式180 
6.2.1使用HDF5格式181 
6.2.2讀取Microsoft Excel文件183
6.3與Web API交互184 
6.4與數據庫交互186 
6.5本章小結187 


第7章數據清洗與準備188 
7.1處理缺失值188 
7.1.1過濾缺失值189 
7.1.2補全缺失值191 
7.2數據轉換194 
7.2.1刪除重複值194 
7.2.2使用函數或映射進行數據轉換195 
7.2.3替代值197 
7.2.4重命名軸索引198 
7.2.5離散化和分箱199 
7.2.6檢測和過濾異常值202 
7.2.7置換和隨機抽樣203 
7.2.8計算指標/虛擬變量204 
7.3字符串操作207 
7.3.1字符串對象方法208 
7.3.2正則表達式210 
7.3.3 pandas中的向量化字符串函數213 
7.4本章小結215 


第8章數據規整:連接、聯合與重塑216 
8.1分層索引216 
8.1.1重排序和層級排序219 
8.1.2按層級進行匯總統計220 
8.1.3使用DataFrame的列進行索引220 
8.2聯合與合併數據集221 
8.2.1數據庫風格的DataFrame連接222
8.2.2根據索引合併226 
8.2.3沿軸向連接230 
8.2.4聯合重疊數據235 
8.3重塑和透視236 
8.3.1使用多層索引進行重塑236 
8.3.2將“長”透視為“寬”240 
8.3.3將“寬”透視為“長”242 
8.4本章小結244 


第9章繪圖與可視化245 
9.1簡明matplotlib API入門245 
9.1.1圖片與子圖246 
9.1.2顏色、標記和線類型250 
9.1.3刻度、標籤和圖例252 
9.1.4註釋與子圖加工255 
9.1.5將圖片保存到文件258 
9.1.6 matplotlib設置258 
9.2使用pandas和seaborn繪圖259 
9.2.1折線圖259 
9.2.2柱狀圖262 
9.2.3直方圖和密度圖266 
9.2.4散點圖或點圖269 
9.2.5分面網格和分類數據270 
9.3其他Python可視化工具271 
9.4本章小結272 


第10章數據聚合與分組操作274 
10.1 GroupBy機制274 
10.1.1遍歷各分組278 
10.1.2選擇一列或所有列的子集279
10.1.3使用字典和Series分組280 
10.1.4使用函數分組281 
10.1.5根據索引層級分組282 
10.2數據聚合282 
10.2.1逐列及多函數應用284 
10.2.2返回不含行索引的聚合數據287 
10.3應用:通用拆分-應用-聯合288 
10.3.1壓縮分組鍵290 
10.3.2分位數與桶分析291 
10.3.3示例:使用指定分組值填充缺失值292 
10.3.4示例:隨機採樣與排列294 
10.3.5示例:分組加權平均和相關性296 
10.3.6示例:逐組線性回歸298 
10.4數據透視表與交叉表298 
10.4.1交叉表:crosstab301 
10.5本章小結302 


第11章時間序列303 
11.1日期和時間數據的類型及工具303 
11.1.1字符串與datetime互相轉換305 
11.2時間序列基礎307 
11.2.1索引、選擇、子集308 
11.2.2含有重複索引的時間序列311 
11.3日期範圍、頻率和移位312 
11.3.1生成日期範圍313 
11.3.2頻率和日期偏置316 
11.3.3移位(前向和後向)日期317
11.4時區處理320 
11.4.1時區的本地化和轉換320 
11.4.2時區感知時間戳對象的操作323 
11.4.3不同時區間的操作324 
11.5時間區間和區間算術324 
11.5.1區間頻率轉換326 
11.5. 2季度區間頻率327 
11.5.3將時間戳轉換為區間(以及逆轉換)329 
11.5.4從數組生成PeriodIndex330 
11.6重新採樣與頻率轉換332 
11.6.1向下採樣334 
11.6.2向上採樣與插值336 
11.6 .3使用區間進行重新採樣337 
11.7移動窗口函數339 
11.7.1指數加權函數342 
11.7.2二元移動窗口函數343 
11.7.3用戶自定義的移動窗口函數344 
11.8本章小結344 


第12章高階pandas346 
12.1分類數據346 
12.1.1背景和目標346 
12.1.2 pandas中的Categorical類型348 
12.1.3使用Categorical對象進行計算350 
12.1.4分類方法352 
12.2高階GroupBy應用355 
12.2.1分組轉換和“展開”GroupBy355
12.2.2分組的時間重新採樣359 
12.3方法鏈技術361 
12.3.1 pipe方法362 
12.4本章小結363 


第13章Python建模庫介紹364 
13.1 pandas與建模代碼的結合364 
13.2使用Patsy創建模型描述367 
13.2 .1 Patsy公式中的數據轉換369 
13.2.2分類數據與Patsy371 
13.3 statsmodels介紹373 
13.3.1評估線性模型374 
13.3.2評估時間序列處理377 
13.4 scikit-learn介紹377 
13.5繼續你的教育381 


第14章數據分析示例382 
14.1從Bitly獲取1.USA.gov數據382 
14.1.1純Python時區計數383 
14.1.2使用pandas進行時區計數385 
14.2 MovieLens 1M數據集392 
14.2.1測量評價分歧396 
14.3美國1880~2010年的嬰兒名字397 
14.3.1分析名字趨勢402 
14.4美國農業部食品數據庫410 
14.5 2012年聯邦選舉委員會數據庫416 
14.5.1按職業和雇主的捐獻統計419
14.5.2捐贈金額分桶421 
14.5.3按州進行捐贈統計423 
14.6本章小結424 


附錄A高階NumPy425

 
附錄B更多IPython系統相關內容457