利用Python进行数据分析(原书第3版)

[美] Wes McKinney
12 阅读 0 点赞 2026-05-30 IT 老游的虾
pandasWes McKinney数据分析Python编程NumPyJupyter数据清洗数据科学数据可视化科学计算

Wes McKinney是pandas项目的创始人、Voltron Data联合创始人兼CTO、Apache Arrow和Apache Parquet项目管理委员会成员。本书第1版于2012年出版,成为Python数据分析领域排名第一的经典畅销书。第3版针对Python 3.10和pandas 1.4进行了更新,通过实操讲解和实际案例向读者展示了如何高效解决数据分析问题,涵盖pandas、NumPy、IPython和Jupyter等工具。豆瓣评分8.2。

本书速读

📖 全书概述:Python数据分析领域的奠基之作

这本书要回答的核心问题很直接:如何用Python高效地进行数据分析?答案来自pandas的创始人Wes McKinney本人。他不仅创造了这个工具,还写出了最权威的指南。

Wes McKinney是Voltron Data的联合创始人兼首席技术官、Python数据社区的活跃成员,同时也是在数据分析、金融和统计计算等领域推广使用Python的倡导者。他毕业于麻省理工学院,同时也是Apache软件基金会的Apache Arrow和Apache Parquet项目的项目管理委员会成员。可以说,他是Python数据分析生态中最重要的人物之一。

本书第1版出版于2012年,彼时基于Python的开源数据分析库(例如pandas)仍然是一个发展迅速的新事物,本书也成为该领域排名第一的经典畅销书,前两版中文版累计销售近30万册。第3版针对Python 3.10和pandas 1.4进行了更新,通过实操讲解和实际案例向读者展示了如何高效地解决一系列数据分析问题。

豆瓣评分8.2,超过82%的读者给出4星或5星评价。这本书非常适合刚开始学习Python的数据分析师或刚开始学习数据科学和科学计算的Python程序员阅读。

🔧 Python数据科学生态:为什么选择Python

McKinney在开篇解释了为什么Python是数据分析的最佳选择。Python拥有一个庞大而活跃的开源数据科学生态系统——NumPy提供高效的数值计算能力,pandas提供灵活的数据结构和数据操作工具,Matplotlib和Seaborn提供丰富的可视化功能,SciPy提供科学计算算法,scikit-learn提供机器学习工具。这些工具的组合使得Python成为从数据获取、清洗、分析到可视化全流程的一站式解决方案。

与R语言相比,Python的优势在于它是一门通用编程语言——你不仅可以用它做数据分析,还可以用它做Web开发、自动化脚本、深度学习、自然语言处理等。这意味着掌握Python后,你的技能可以应用到数据分析之外的更多领域。

📊 pandas核心:数据结构与操作

pandas是本书的核心内容。McKinney详细讲解了pandas的两个核心数据结构:Series和DataFrame。

Series是一维的带标签数组,类似于一个有索引的列表。它可以存储任何数据类型(整数、浮点数、字符串、Python对象等),并且支持基于标签的索引和基于位置的索引。

DataFrame是二维的表格型数据结构,类似于Excel中的电子表格或SQL中的表。它是pandas中最常用的数据结构——每一列可以是不同的数据类型,每一行有唯一的索引,支持丰富的数据操作——筛选、排序、分组、聚合、合并、透视等。

McKinney强调,DataFrame是数据分析工作的"瑞士军刀"——几乎所有数据清洗和转换任务都可以用DataFrame来完成。他通过大量实例展示了DataFrame的各种操作——如何处理缺失值、如何转换数据类型、如何合并多个数据集、如何对数据进行分组聚合等。

🧮 NumPy基础:高性能数值计算

NumPy是Python科学计算的基础库,它提供了一个强大的N维数组对象(ndarray)以及一套完整的数学函数。pandas的底层数据结构就是基于NumPy的ndarray构建的,所以理解NumPy是理解pandas的前提。

McKinney讲解了NumPy的核心概念:数组创建(从列表创建、使用特定函数创建、从文件读取)、数组索引和切片、数组运算(逐元素运算、广播机制)、聚合函数(求和、均值、标准差等)、线性代数运算(矩阵乘法、求逆、特征值分解等)。

他特别强调了NumPy的性能优势——NumPy的底层是用C语言实现的,所以它的运算速度比纯Python快几个数量级。当你需要处理大量数值数据时,NumPy是必不可少的工具。需要注意的是,数组切片是原始数据的视图——这意味着数据不会被复制,视图上的任何修改都会直接反映到源数组上。理解这一点对于避免意外的数据修改非常重要。

📁 数据获取与清洗:数据分析中最耗时的部分

McKinney指出,数据分析工作中,80%的时间花在数据获取和清洗上,只有20%的时间花在真正的分析和建模上。所以,掌握数据获取和清洗的技能是高效进行数据分析的关键。

在数据获取方面,本书覆盖了多种数据格式——CSV、JSON、Excel、XML、HDF5、Parquet、数据库(SQL)、Web API等。McKinney讲解了pandas如何读取和写入这些数据格式,以及每种格式的适用场景。

在数据清洗方面,本书涵盖了最常见的清洗任务——处理缺失值(填充、删除、插值)、数据类型转换(字符串转数字、日期解析等)、字符串操作(正则表达式、字符串提取和替换)、数据转换(标准化、归一化、离散化)、异常值检测和处理、数据去重等。

📈 数据探索与分析:从数据中获取洞察

在数据清洗完成后,下一步是探索性数据分析(EDA)。McKinney讲解了如何进行EDA——描述性统计(均值、中位数、标准差、分位数等)、分组聚合(groupby操作)、透视表(pivot_table)、时间序列分析、相关性分析等。

groupby是pandas中最强大的功能之一——它允许你按照一个或多个列对数据进行分组,然后对每个组应用聚合函数(求和、均值、计数等)、转换函数或过滤操作。McKinney通过大量实例展示了groupby的各种用法,从简单的单列分组到复杂的多列分组和嵌套分组。

时间序列分析是另一个重要的主题——pandas提供了强大的时间序列处理能力,包括日期解析、时间索引、重采样(resample)、滚动窗口(rolling window)、时区处理等。对于金融数据分析、销售趋势分析等场景,时间序列分析是必备技能。

📊 数据可视化:让数据说话

McKinney讲解了使用Matplotlib和pandas内置可视化功能进行数据可视化的方法。虽然pandas的内置可视化功能不如专业的可视化工库(如Seaborn、Plotly)丰富,但对于快速探索性分析来说已经足够。

他建议的数据可视化流程是:先用pandas内置的简单图表(折线图、柱状图、散点图、直方图等)进行快速探索,找到有意义的模式后,再用更专业的可视化工具制作精美的图表用于报告和展示。

⭐ 金句摘录

数据分析工作中,80%的时间花在数据获取和清洗上,只有20%的时间花在真正的分析和建模上。

DataFrame是数据分析工作的"瑞士军刀"——几乎所有数据清洗和转换任务都可以用它来完成。

数组切片是原始数据的视图——数据不会被复制,视图上的任何修改都会直接反映到源数组上。

NumPy的底层是用C语言实现的,所以它的运算速度比纯Python快几个数量级。

先用pandas内置的简单图表进行快速探索,找到有意义的模式后,再用更专业的可视化工具制作精美的图表。

📚 阅读建议

适合刚开始学习Python的数据分析师或刚开始学习数据科学和科学计算的Python程序员。需要基本的Python编程基础——如果你还不了解Python的基本语法(变量、函数、循环、条件语句等),建议先学习Python基础教程再读本书。

阅读方法:这本书最好当作一本实操指南来读——边读边在Jupyter Notebook中练习每一个示例。读者可以从GitHub获取本书的数据文件和相关资料。不要只看不练——数据分析是一门实践性很强的技能,只有亲自动手操作,才能真正理解和掌握。

需要注意:有读者评价"内容太过程序员化,是以程序员而不是普通用户的角度讲述数据分析""代码举例用的都是随机编的数字""本质上是个字典,查字典的话直接和LLM对话更高效"。建议将本书视为pandas的系统性参考手册——虽然LLM可以快速回答具体问题,但本书提供了完整的知识框架和系统性的学习路径,这是LLM无法替代的。读完本书后,它可以作为工具书随时查阅。

一句话总结:pandas创始人亲笔撰写的数据分析圣经——从pandas、NumPy到Jupyter,一站式掌握Python数据分析全流程。