基本信息
- 原书名:Python for Data Analysis
- 原出版社: O'Reilly Media
- 作者: Wes McKinney
- 译者: 唐学韬
- 丛书名: O’Reilly精品图书系列
- 出版社:机械工业出版社
- ISBN:9787111436737
- 上架时间:2014-12-19
- 出版日期:2014 年1月
- 开本:16开
- 页码:451
- 版次:1-1
- 所属分类:计算机 > 软件与程序设计 > Python

编辑推荐
O’Reilly Media, Inc.介绍
O’Reilly Media通过图书、杂志、在线服务、调查研究和会议等方式传播创新知识。自1978年开始,O’Reilly一直都是前沿发展的见证者和推动者。超级极客们正在开创着未来,而我们关注真正重要的技术趋势——通过放大那些“细微的信号”来刺激社会对新科技的应用。作为技术社区中活跃的参与者,O’Reilly的发展充满了对创新的倡导、创造和发扬光大。
O’Reilly为软件开发人员带来革命性的“动物书”;创建第一个商业网站(GNN);组织了影响深远的开放源代码峰会,以至于开源软件运动以此命名;创立了Make杂志,从而成为DIY革命的主要先锋;公司一如既往地通过多种形式缔结信息与人的纽带。O’Reilly的会议和峰会集聚了众多超级极客和高瞻远瞩的商业领袖,共同描绘出开创新产业的革命性思想。作为技术人士获取信息的选择,O’Reilly现在还将先锋专家的知识传递给普通的计算机用户。无论是通过书籍出版,在线服务或者面授课程,每一项O’Reilly的产品都反映了公司不可动摇的理念——信息是激发创新的力量。
内容简介
计算机书籍
还在苦苦寻觅用Python控制、处理、整理、分析结构化数据的完整课程?《利用Python进行数据分析》含有大量的实践案例,你将学会如何利用各种Python库(包括NumPy、pandas、matplotlib以及IPython等)高效地解决各式各样的数据分析问题。
由于作者Wes McKinney是pandas库的主要作者,所以本书也可以作为利用Python实现数据密集型应用的科学计算实践指南。本书适合刚刚接触Python的分析人员以及刚刚接触科学计算的Python程序员。
·将IPython这个交互式Shell作为你的首要开发环境。
·学习NumPy(Numerical Python)的基础和高级知识。
·从pandas库的数据分析工具开始。
·利用高性能工具对数据进行加载、清理、转换、合并以及重塑。
·利用matplotlib创建散点图以及静态或交互式的可视化结果。
·利用pandas的groupby功能对数据集进行切片、切块和汇总操作。
·处理各种各样的时间序列数据。
·通过详细的案例学习如何解决Web分析、社会科学、金融学以及经济学等领域的问题。
作译者
目录
前言 1
第1章 准备工作 5
本书主要内容 5
为什么要使用Python进行数据分析 6
重要的Python库 7
安装和设置 10
社区和研讨会 16
使用本书 16
致谢 18
第2章 引言 20
来自bit.ly的1.usa.gov数据 21
MovieLens 1M数据集 29
1880—2010年间全美婴儿姓名 35
小结及展望 47
第3章 IPython:一种交互式计算和开发环境 48
IPython基础 49
内省 51
使用命令历史 60
与操作系统交互 63
译者序
本书的内容非常好,至少有一点非常好 —— 集中火力对付特定的应用领域。市面上介绍编程的书多如牛毛,但几乎没有几本书是针对特定应用场景的。这本书对新手来说绝对是福音,因为每看完一点就可以马上将自己手上的工作直接拿来当例子练手,这种立竿见影的学习效果,绝对会增强新手的学习信心。
本书内容虽好,但由于作者是编辑界牛人,平时的工作肯定不少,写书方面的精力自然就不可能太多。加之美式英语本来就很口语化,导致原书口水话非常多,有些地方的从句跟绕口令似的。我在翻译的过程中尽量排除了一些,两次校稿的过程中又删除或大幅修改了一些废话,虽然这种“口水话”还存在不少,但至少不会对阅读造成太大影响。如果实在觉得语言不通顺,请随时发邮件给我,欢迎大家的善意指导(tonytang1999@126.com)。
此外,在翻译的过程中发现了不少小问题,用词方面的错误几乎都是直接改的(小部分写了译者注,因为编辑要求我尽量标出一些来以便核对),而其他错误则几乎全部采用译者注的形式说明,还有一些原文有歧义或不详尽的地方也通过译者注的形式给出了简单说明。
本书共12章,除非你已经什么都会了,否则我建议全部阅读。如果没有学过Python,建议先看看本书后面的附录。本书所用到的Python编程基础知识很少,所以只看那个附录完全足够了。但是,如果你一点儿编程基础都没有的话,可能需要再看一本有关Python入门的书才行(比如《Python编程实践》编注1)。
对了,还有几件事情需要说明一下:
每章的代码示例最好在一个IPython会话中完成,否则可能会出现一些不必要的麻烦,比如“xxx未定义”。
如果在Windows里面用IPython,复制代码的时候建议使用cpaste,这个不多解释了。
有关地图的那段代码可能需要找英文资料看才行,我在译者注中也说明了。这可能需要花不少时间和精力。
由于原文各种说法不统一(甚至包括术语),虽然我尽量做了统一处理,但由于精力和时间有限,无法完全修改,所以译文中的“xxx接受yyy”、“将yyy传入xxx”说的都是“xxx函数有yyy这么个参数”;“选项”、“位置参数”、“关键字参数”、“形参”、“实参”说的都是“参数”……还有不少,我也记不清了。
“金融和经济数据”那一章翻译得非常痛苦,因为我根本不了解那个行业,原文的术语又不标准,于是我基本都是用wikipedia和bing查英文资料,看懂之后再到baidu找中文资料,并最终确定译文。因此,可能会有不准确的情况,如果您发现了,请及时通过邮件告诉我,万分感谢。
此外,我必须感谢华章公司的编辑们。非常感谢他们能够给我这样的机会,也非常感谢他们在整个过程中给予我的各种支持和理解。希望以后还能有更加愉快的合作。
本书大部分内容的翻译工作以及全书的统稿工作由我完成,参与本书翻译校对工作的还有黄惠庄、卢彦良、蒲巧惠、陈丽丽、胡元江、张杨、赵杰、吴斌、郭敏、林丹、王跃等。
由于译者水平有限,书中肯定会存在一些错误或不妥之处,因此,在阅读过程中发现有任何问题,请随时联系我们(tonytang1999@126.com)或机械工业出版社,我们将及时更新本书的勘误表。当然,也非常欢迎大家对本书提出宝贵的意见和建议。
唐学韬
2013年6月于广州
前言
本书的约定
本书使用了以下排版约定:
斜体(Italic)
用于新术语、URL、电子邮件地址、文件名与文件扩展名。
等宽字体(Constant width)
用于表明程序清单,以及在段落中引用的程序中的元素,如变量、函数名、数据库、数据类型、环境变量、语句、关键字等。
等宽粗体(Constant width bold)
用于表明命令,或者需要读者逐字输入的文本内容。
等宽斜体(Constant width italic)
用于表示需要使用用户提供的值或者由上下文决定的值来替代的文本内容。
注意: 代表一个技巧、建议或一般性说明。
警告: 代表一个警告或注意事项。
示例代码的使用
本书提供代码的目的是帮你快速完成工作。一般情况下,你可以在你的程序或文档中使用本书中的代码,而不必取得我们的许可,除非你想复制书中很大一部分代码。例如,你在编写程序时,用到了本书中的几个代码片段,这不必取得我们的许可。但若将O扲eilly图书中的代码制作成光盘并进行出售或传播,则需获得我们的许可。引用示例代码或书中内容来解答问题无需许可。将书中很大一部分的示例代码用于你个人的产品文档,这需要我们的许可。
如果你引用了本书的内容并标明版权归属声明,我们对此表示感谢,但这不是必需的。版权归属声明通常包括:标题、作者、出版社和ISBN号,例如:“Python for Data Analysis by William Wesley McKinney (O'eilly). Copyright 2013 William Wesley McKinney, 978-1-449-31979-3”。
如果你认为你对示例代码的使用已经超出上述范围,或者你对是否需要获得示例代码的授权还不清楚,请随时联系我们:permissions@oreilly.com。
联系我们
有关本书的任何建议和疑问,可以通过下列方式与我们取得联系:
美国:
媒体评论
——Wired
“O’Reilly凭借一系列(真希望当初我也想到了)非凡想法建立了数百万美元的业务。”
——Business 2.0
“O’Reilly Conference是聚集关键思想领袖的绝对典范。”
——CRN
“一本O’Reilly的书就代表一个有用、有前途、需要学习的主题。”
——Irish Times
“Tim是位特立独行的商人,他不光放眼于最长远、最广阔的视野并且切实地按照Yogi Berra的建议去做了:‘如果你在路上遇到岔路口,走小路(岔路)。’回顾过去Tim似乎每一次都选择了小路,而且有几次都是一闪即逝的机会,尽管大路也不错。”
——Linux Journal
“科学计算和数据分析社区已经等待这本书很多年了:大量具体的实践建议,以及大量综合应用方法。本书在未来几年里肯定会成为Python领域中技术计算的权威指南。”
——Fernando Pérez 加州大学伯克利分校 研究科学家, IPython的创始人之一
书摘
准备工作
本书主要内容
本书讲的是利用Python进行数据控制、处理、整理、分析等方面的具体细节和基本要点。同时,它也是利用Python进行科学计算的实用指南(专门针对数据密集型应用)。本书重点介绍了用于高效解决各种数据分析问题的Python语言和库。本书没有阐述如何利用Python实现具体的分析方法。
当书中出现“数据”时,究竟指的是什么呢?主要指的是结构化数据(structured data),这个故意含糊其辞的术语代指了所有通用格式的数据,例如:
多维数组(矩阵)。
表格型数据,其中各列可能是不同的类型(字符串、数值、日期等)。比如保存在关系型数据库中或以制表符/逗号为分隔符的文本文件中的那些数据。
通过关键列(对于SQL用户而言,就是主键和外键)相互联系的多个表。
间隔平均或不平均的时间序列。
这绝不是一个完整的列表。大部分数据集都能被转化为更加适合分析和建模的结构化形式,虽然有时这并不是很明显。如果不行的话,也可以将数据集的特征提取为某种结构化形式。例如,一组新闻文章可以被处理为一张词频表,而这张词频表就可以用于情感分析。
大部分电子表格软件(比如Microsoft Excel,它可能是世界上使用最广泛的数据分析工具了)的用户不会对此类数据感到陌生。
为什么要使用Python进行数据分析
许许多多的人(包括我自己)都很容易爱上Python这门语言。自从1991年诞生以来,Python现在已经成为最受欢迎的动态编程语言之一,其他还有Perl、Ruby等。由于拥有大量的Web框架(比如Rails(Ruby)和Django(Python)),最近几年非常流行使用Python和Ruby进行网站建设工作。这些语言常被称作脚本(scripting)语言,因为它们可以用于编写简短而粗糙的小程序(也就是脚本)。我个人并不喜欢“脚本语言”这个术语,因为它好像在说这些语言无法用于构建严谨的软件。在众多解释型语言中,Python最大的特点是拥有一个巨大而活跃的科学计算(scientific computing)社区。进入21世纪以来,在行业应用和学术研究中采用Python进行科学计算的势头越来越猛。
在数据分析和交互、探索性计算以及数据可视化等方面,Python将不可避免地接近于其他开源和商业的领域特定编程语言/工具,如R、MATLAB、SAS、Stata等。近年来,由于Python有不断改良的库(主要是pandas),使其成为数据处理任务的一大替代方案。结合其在通用编程方面的强大实力,我们完全可以只使用Python这一种语言去构建以数据为中心的应用程序。
把Python当做粘合剂
作为一个科学计算平台,Python的成功部分源于其能够轻松地集成C、C++以及Fortran代码。大部分现代计算环境都利用了一些Fortran和C库来实现线性代数、优选、积分、快速傅里叶变换以及其他诸如此类的算法。许多企业和国家实验室也利用Python来“粘合”那些已经用了30多年的遗留软件系统。
大多数软件都是由两部分代码组成的:少量需要占用大部分执行时间的代码,以及大量不经常执行的“粘合剂代码”。粘合剂代码的执行时间通常是微不足道的。开发人员的精力几乎都是花在优化计算瓶颈上面的,有时更是直接转用更低级的语言(比如C)。
最近这几年,Cython项目(http://cython.org)已经成为Python领域中创建编译型扩展以及对接C/C++代码的一大途径。
解决“两种语言”问题
很多组织通常都会用一种类似于领域特定的计算语言(如MATLAB和R)对新的想法进行研究、原型构建和测试,然后再将这些想法移植到某个更大的生产系统中去(可能是用Java、C#或C++编写的)。人们逐渐意识到,Python不仅适用于研究和原型构建,同时也适用于构建生产系统。我相信越来越多的企业也会这样看,因为研究人员和工程技术人员使用同一种编程工具将会给企业带来非常显著的组织效益。