Python数据处理(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-10 13:47:04

点击下载

作者:[美] 杰奎琳·凯泽尔(Jacqueline Kazil)凯瑟琳·贾缪尔(Katharine Jarmul)

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Python数据处理

Python数据处理试读:

前言

欢迎打开这本书。在本书中,我们将会让你的数据处理技术更上一层楼,不再只是使用电子表格,而是可以利用 Python 编程语言,将噪声数据轻松快速地转换成可用的报告。 Python 语法简单,上手很快,人人都可以用 Python 编程。

想象一下,你每周都要手动重复同一过程,比如从多个来源复制数据并粘贴到一个电子表格中,用于后续处理。这项任务可能每周都需要花费一两个小时。但当你用脚本把这项任务自动化之后,它可能只需要 30 秒就可以完成!这会节省你的时间,让你做点其他事情,或者把更多的任务自动化。再想象一下,之前你无法处理某种格式的数据,但你现在能对数据进行格式转换,完成之前无法完成的任务。但在完成本书的 Python 练习后,你应该可以更有效地从之前认为不可用的数据(过于混乱,或者数据量过大)中采集信息。

我们将带领你完成数据获取、数据清洗、数据呈现、数据规模化和自动化的过程。我们的目标是教你学会轻松处理数据的方法,这样你就可以花更多的时间专注于内容和分析。我们将克服现有工具的局限,将手动处理过程替换为简洁、易读的 Python 代码。读完这本书后,你能够将数据处理过程自动化,定期执行文件编辑和清洗任务,获取并解析你之前无法获取的数据,还能处理数据量更大的数据集。

采用基于项目的方法,每一章的复杂度会逐渐增加。我们建议你跟随本书的节奏,将书中的方法应用到自己的数据集上。如果你没有一个特定的项目或研究,也可以使用本书线上的样本数据集。目标读者

本书针对的是那些不想用桌面工具来探索数据处理的人。如果你精于 Excel,想进一步提升数据分析水平,本书将助你一臂之力!如果你之前学过其他语言,想用 Python 学习数据处理,也会发现本书非常有用。

如果你遇到不懂的问题,建议你联系我们,这样我们可以改进书的内容。你也应该使用互联网搜索或在线提问(在线提问有一些方法和技巧,请参考 https://www.propublica.org/nerds/item/how-to-ask-programming-questions)来补充学习。我们在附录 E 中介绍了一些调试的技巧,你可以翻到那里看一下。不适合阅读本书的读者

本书肯定不适合经验丰富的 Python 程序员,他们已经知道数据处理任务需要用到哪些库和技术。(对于这些人,我们推荐 Wes McKinney 写的《利用 Python 进行数据分析》。)如果你是经验丰富的 Python 开发者,或使用过 Scala、R 等其他具有数据分析能力的语言,本书可能也不适合你。但如果你是经验丰富的 Web 语言开发者,使用的 PHP、JavaScript 等语言本身缺乏数据分析能力,那么本书可以通过数据处理来教你 Python 的知识。本书结构

本书的结构沿循一般数据分析项目或故事的整个生命周期。首先提出一个问题,然后获取数据、清洗数据、探索数据、传达数据中的发现、扩展到更大的数据集,最后将整个过程自动化。这种方法可以让你从简单的问题逐步过渡到更复杂的问题和研究。我们会先讲传达数据中发现的基本方法,然后再讲数据采集的高级技巧。

如果对某些章节的内容比较熟悉,你也可以将本书当作参考,或者跳过那些章节。但我们建议你大致浏览一下每一章节的内容,确保没有错过新的资源与技术。什么是数据处理

数据处理是指将杂乱的或未加工的数据源转换成有用的信息。先寻找原始数据源,并判断其价值:这些数据集的数据质量有多好?它们与你的目标是否相关?能否找到更好的数据源?在对数据进行解析与清洗后,数据集变得可用,这时你可以利用工具和方法(如 Python 脚本)来帮你分析数据,并以报告的形式展示结果。这样你可以将无人问津的数据变得清晰可用。遇到困难怎么办

不必担心——每个人都会遇到困难!把编程过程看作困难重重的一连串事件。作为一名开发者和数据分析人员,遇到困难,然后解决问题,你会学到知识,并得到成长。大多数人并非掌握了编程,而是掌握了解决困难的方法。

解决困难都有哪些技巧呢?首先,你可以利用搜索引擎尝试寻找答案。通常情况下,你会发现许多人已经遇到过相同的问题。如果找不到有用的答案,你可以在网上提问。我们在附录 B 中给出了一些优质的在线资源和线下资源。

提出问题是很难的。但无论处于学习的哪个阶段,都不要害怕向大型编程社区求助。本书作者 Jackie 早期在公共论坛上问了一个关于编程的问题(http://stackoverflow.com/questions/3329943/git-branch-fork-fetch-merge-rebase-and-clone-what-are-the-differences),之后被许多人引用过。像你一样的新手程序员硬着头皮问了一个可能很傻的问题,但之后却帮助了许多人,这种感觉是很爽的。

在网上发布问题之前,我们还推荐你阅读“如何提问”(https://www.propublica.org/nerds/item/how-to-ask-programming-questions)。这篇文章讲了许多方法,可以帮你正确地描述问题,这样其他人才能最大限度地帮助你。

最后,有时你还需要现实生活中的额外帮助。可能是你的问题涉及面太广,在网站或邮件列表里不方便问答。也可能是你的问题有些偏重哲学,或者需要不同方法之间的对比或修改。无论是哪种情况,你都可以在当地 Python 小组中找到能回答你问题的人。想要找到当地的线下聚会,你可以试试 Meetup 网站(http://www.meetup.com/)。关于如何找到有帮助且乐于助人的社区,你会在第 1 章中读到更多详细信息。排版约定

本书使用了下列排版约定。● 楷体表示新术语和重点强调的内容。● 等宽字体(constant width)表示程序片段,以及正文中出现的变量、函数名、数据库、

数据类型、环境变量、语句和关键词等。● 斜体等宽字体(constant width italic)表示应该替换成用户输入的值,或根据上下文替换的值。 该图标表示提示或建议。 该图标表示一般性说明。 该图标表示警告或警示。使用代码示例

我们在 GitHub 上建了一个数据仓库(https://github.com/jackiekazil/data-wrangling)。在这个仓库中,你会找到我们在本书中使用的数据,以及一些代码示例,让你可以跟上本书的节奏。如果你在仓库中发现任何问题或者有任何疑问,请提交一个 issue(issue 提交地址:https://github.com/jackiekazil/data-wrangling/issues)。

本书是要帮你完成工作的。一般来说,如果本书提供了示例代码,你可以把它用在你的程序和文档中。除非你使用了很大一部分代码,否则无需联系我们获得许可。比如,用本书的几个代码片段写一个程序就无需获得许可。销售或分发 O'Reilly 图书的示例光盘则需要获得许可。引用本书中的示例代码来回答问题无需获得许可。将书中大量示例代码放到你的产品文档中则需要获得许可。

我们很希望但并不强制要求你在引用本书内容时加上引用说明。引用说明一般包括书名、作者、出版社和 ISBN。比如:“Data Wrangling with Python by Jacqueline Kazil and Katharine Jarmul (O'Reilly). Copyright 2016 Jacqueline Kazil and Kjamistan, Inc., 978-1-4919-4881-1.”

如果你觉得自己对示例代码的用法超出了上述许可的范围,欢迎你通过 permissions@oreilly.com 与我们联系。®Safari Books Online

Safari Books Online(http://safaribooksonline.com/)是应运而生的数字图书馆,它同时以图书和视频的形式出版世界顶级技术和商业作家的专业作品(https://www.safaribooksonline.com/explore/)。

技术专家、软件开发人员、Web 设计师、商务人士和创意专家等,在开展调研、解决问题、学习和认证培训时,都将 Safari Books Online 视作获取资料的首选渠道。

对于企业(https://www.safaribooksonline.com/enterprise/)、政府(https://www.safaribooksonline.com/government/)、教育机构(https://www.safaribooksonline.com/academic-public-library/)和个人,Safari Books Online 提供各种产品组合和灵活的定价策略(https://www.safaribooksonline.com/pricing/)。

用户可通过一个功能完备的数据库检索系统访问 O'Reilly Media、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology 以及其他数百家出版社(https://www.safaribooksonline.com/our-library/)的上千种图书、培训视频和正式出版之前的书稿。要了解 Safari Books Online 的更多信息,请访问我们的网站(https://www.safaribooksonline.com/)。致谢

我们想要感谢本书的编辑 Dawn Schanafelt 和 Meghan Blanchette,感谢他们给予极大的帮助和付出以及了不起的工作——没有你们就不可能有这本书的问世。我们还想感谢本书的技术编辑 Ryan Balfanz、Sarah Boslaugh、Kat Calvin 和 Ruchi Parekh,感谢他们帮助完成代码示例以及思考本书受众。

Jacqueline Kazil(Jackie)想要感谢她的丈夫 Josh 支持她写作本书——无论是鼓励的话语还是纸杯蛋糕。如果没有他的全力支持,房子可能就散架了。她还想要感谢 Katharine(Kjam)与她合作。没有 Kjam 就没有这本书。Jackie 很高兴在分别多年之后再次有机会与 Kjam 合作。最后,Jackie 想感谢自己的母亲 Lydie,教给她写作本书所必须的许多技能(除了英语)。

Katharine Jarmul 想要拥抱并特别感谢她的伴侣 Aaron Glenn,感谢他无数个小时的自言自语、反复阅读、争论 Unix 首字母是否应该大写,以及在她写作时制作美味的意大利面。她还要感谢她的父母和公婆,感谢他们对她无数次图书校正和响铃的忍耐。她还要感谢德国的 Hoffmann 夫人,感谢她在讨论本书的过程中所付出的极大耐心。第 1 章Python简介

无论你是一名记者、分析师,还是初出茅庐的数据科学家,选择这本书可能是因为你想学习如何用编程来分析数据,得出结论,并将结论清楚地传达给别人。你可能会用报告、图表或归纳统计的方式来展示你的结论。重要的是,你想讲述一个故事。

传统的故事讲述或新闻报道往往使用单一的故事来描述总体结论或趋势。在这种故事中,数据成为了相对次要的部分。然而,其他讲故事的人,比如 Christian Rudde[Datacylsm(http://dataclysm.org/)的作者,OkCupid 的创始人之一]认为数据本身应该是故事的重点。

首先,你需要确定想要研究的主题。你可能对研究不同人或群体的沟通习惯感兴趣,这时你可以从一个具体的问题入手,例如在网络上被人们广为分享的信息都有哪些特点。又或许你可能对棒球的历史统计数据感兴趣,并想弄清楚一个问题:这些数据能否表明棒球运动随时间发生了变化。

确定了感兴趣的领域之后,你需要寻找数据,以进一步探索这一主题。想研究人类行为,你可以从 Twitter API(http://www.seanlahman.com/baseball-archive/statistics/)。

Twitter 和棒球数据集都属于综合的大型数据集。为了回答你的具体问题,应把这些数据集分成便于管理的小块,然后进行筛选和分析。有时,较小的数据集也同样有趣有料,尤其当你的主题是关于本地或区域问题时。让我们来看一个例子。

在写这本书的时候,本书的一位作者读到一篇关于她的公立高中母校 1 的文章(http://www.foxnews.com/on-air/fox-and-friends/blog/2014/05/20/manatee-high-school-charges-200-row-prime-seating-graduation)。文中写道,这所高中开始向每名即将毕业的学生收取 20 美元,并且对于毕业典礼上最好的几排座位,每排收取 200 美元。

1美国公立高中是政府办的学校,财政主要由当地社区的税收资助。孩子们在这里上学受教育是免费的,或只需花父母很少的钱。

据当地新闻报道:“学区今年财政困难,撤出了 3400 美元的资助。新的收费是为了支付海牛高中约 12 000 美元的毕业典礼费用而采取的措施之一。”

这篇文章解释了毕业典礼花费远高于学区预算的原因。然而文中并没有解释学区今年为何无法像往年一样进行资助。所以我们仍有疑问:海牛郡学区的财政为何如此困难,以至于无法像往年一样资助毕业班级?

调查之初所提出的疑问,往往会引出更深入的疑问,直指问题的本质。例如,学区把钱都花到了什么地方?学区的开支模式近些年发生了哪些变化?

确定了具体的主题和要回答的问题,可以让我们明确需要寻找哪些数据。在提出上述问题后,我们要寻找的第一个数据集就是海牛郡学区的开支和预算数据。

在继续讨论之前,我们先简单回顾一下整个过程,从开始确定问题一直到最终的故事(见图 1-1)。图 1-1:数据处理过程

一旦确定了问题,你就可以开始提出有关数据的问题,例如:哪些数据集最能帮助我讲好故事?哪些数据集能帮助我深入探索这一主题?总的主题是什么?哪些数据集与这些主题相关?谁会记录并保存这些数据?可以公开获取这些数据集吗?在开始讲故事时,你应该专心研究想要回答的问题。然后你可以找出哪些数据集对你是最有价值的。在这个初始阶段,不要过分纠结于分析数据的工具或数据处理过程。

寻找数据集

如果使用搜索引擎来寻找数据集,你不一定总能找到最合适的。有时你需要在一个网站中仔细寻找数据。即使数据难以找到或难以获取,也一定不要放弃!

如果你的主题出现在一份调查或报告中,或者某个特定的机构或组织可能会收集关于这一主题的数据,你应该去查找联系人号码,并联系研究人员或组织。礼貌而直接地询问如何能够访问他们的数据。如果数据集属于政府部门(联邦、州或地方),那么根据(美国)信息自由法案(https://en.wikipedia.org/wiki/Freedom_of_Information_Act_(United_States)),你也许可以合法地直接获取这些数据。我们将在第 6 章中更全面地讨论数据获取。

一旦确定了需要的数据集并获取了这些数据,你需要将其转换成可用的格式。在第 3、4、 5 章中,你将会学习各种方法,用于通过编程的方式获取数据并对其进行格式转换。第 6 章讲的是在获取数据时如何与不同的人打交道,并稍稍提到合法性的问题。在第 3 章至第 5 章中,我们还将介绍如何从 CSV、Excel、XML、JSON 和 PDF 文件中提取数据。在第 11、12、13 章中,你将会学习如何从网站和 API 中提取数据。如果你不认识某些缩写词,别担心!在遇到这些缩写词时我们会详细解释,也会一并解释其他你可能不熟悉的技术术语。

在取得数据并转换格式后,你将开始初步的数据探索。你将会探寻数据中可能隐藏的所有故事,同时判断哪些故事有用,哪些故事可以舍弃。你还可以把数据分组,观察各组之间的变化趋势。然后还可以将数据集合并,寻找其中的关联,发现更大的趋势,并发现潜在的矛盾之处。在这一过程中,你将学习如何清洗数据,发现并解决隐藏在数据集中的问题。

在第 7 章和第 8 章中你将学习如何解析与清洗数据。你既可以使用 Python,也可以探索其他开源工具。在讨论可能遇到的数据问题时,你将学会应该选择哪种方法清洗数据:是写一个清洗脚本,还是使用现成的方法。在第 7 章中,我们将讲到如何处理常见的错误,如重复记录、离群值与格式化问题。

在确定你要讲述的故事,清洗并处理数据之后,我们将探讨如何利用 Python 来展示数据。你将学习用各种形式来讲故事,并比较不同的发布方式。在第 10 章中,你将学习在网站上展示与组织数据的基本方法。

第 14 章将使数据分析过程规模化,让你可以在更短的时间内处理更多的数据。我们将对存储与获取数据的方法进行分析,并研究在云中使数据规模化的方法。

第 14 章还将讨论如何完成一次性的项目,并使其能够自动完成。通过自动化过程,你可以将一次性的特殊报告变成年度报告。这种自动化可以让你专注于改善讲故事的过程,继续讲下一个故事,或者至少续杯咖啡。本书主要使用的工具是 Python 编程语言。在我们讲故事过程的每一步,从最初的探索直到标准化与自动化,都会用到 Python。1.1 为什么选择Python

有那么多种编程语言,本书为什么选择使用 Python ?你可能听说过以下这些语言中的一种或多种:R、MATLAB、Java、C/C++、HTML、JavaScript 和 Ruby,这取决于你的专业背景。这些语言都有一种或多种主要用途,有些还可以用于数据处理。你也可以用 Excel 等程序进行数据处理。用 Excel 和 Python 编程,通常会得到相同的结果,但其中一种语言的效率更高。然而有时候,像 Excel 这样的程序无法完成任务。我们选择 Python 而不是其他语言,是因为 Python 很容易上手,处理数据的过程也简单明了。

如果你想了解 Python 和其他语言的技术性区别,可查阅附录 A。看完里面的解释,你就可以告诉其他分析师或开发人员你使用 Python 的原因。我们相信作为开发新人,你会从 Python 的易用性中受益,同时我们希望本书能成为你的数据处理工具箱中有参考价值的一本书。

Python 除了上述作为语言的优点,Python 社区还是最开放和最乐于助人的社区之一。世上没有完美的社区,但 Python 社区为新人创造了一个良好的环境:有时会有本地的教程、免费课堂、线下聚会等,有时还会举办大型会议,人们聚在一起解决问题并分享知识。

拥有大型社区的好处显而易见——有人能回答你的问题,有人能为你的代码或模块的结构出谋划策,有人能让你学习借鉴,还有共享代码供你在其之上构建自己的代码。想了解更多的内容,可查阅附录 B。

社区因成员的支持而存在。刚开始使用 Python 时,你从社区中得到的帮助会多于你的付出。但即使你不是专家,也可以为社区做很多贡献。我们鼓励你分享你的问题和解决方法。这会帮到下一个遇到相同问题的人,你也可能会在开源工具中发现需要处理的 bug。在现阶段,你是从新鲜视角看待问题,而 Python 社区的很多成员已经不再这样看待问题了。当开始敲 Python 代码时,你应该把自己当作编程社区的一员。你的贡献与那些有 20 年编程经验的人一样重要。

言归正传,我们开始讲 Python。1.2 开始使用Python

编程的第一步是最难的。(其难度和你学习走路时迈的第一步没有什么不同!)回想一下你培养新爱好或学习新运动的时候。在入门 Python(或任何其他编程语言)时,你将会遇到类似的焦虑和障碍。或许你很幸运,有一个优秀的导师帮你迈出第一步。如果没有的话,你可能已经历过类似的挑战。无论你如何迈出第一步,一定要记住,这个阶段往往是最艰难的。我们希望本书可以成为你的入门指南,但它无法替代优秀的导师或使用 Python 的丰富经验。在本书中,我们提供了一些资源和网站信息,以便你在遇到书中没有讲到的问题时有所参考。

为了避免浪费太多时间进行大量配置和高级安装,我们的 Python 环境将采用最简单的初始安装。在接下来的几节中,我们将选定 Python 版本,安装 Python 以及一个可以帮助我们使用外部代码和库的工具(pip),并安装代码编辑器,以便编写并运行代码。1.2.1 Python版本选择

你需要选择使用哪个版本的 Python。Python 版本实际上指的是 Python 解释器的版本。解释器让你可以在计算机上读写并运行 Python。维基百科(https://en.wikipedia.org/wiki/Interpreter_(computing))是这样描述解释器的:

在计算机科学中,解释器是一种计算机程序,可以直接运行用编程语言或脚本语言编写的指令,而无需事先将其编译成机器语言程序。

没有人会让你背诵这个定义,所以即使你没有完全理解也不必担心。本书的作者之一 Jackie 刚开始编程的时候,无法理解入门书中“批处理编译”(batch compiling)这一概念,所以她就卡在这一部分无法继续读下去。如果她连这都不懂,怎么能编程呢?我们在后面会讨论编译的话题,但是现在将上述定义总结如下:

解释器是读取并运行 Python 代码的计算机程序。

Python(或 Python 解释器)主要有两个版本:Python 2.X 和 Python 3.X。Python 2.X 的最新版本是 Python 2.7,这也是本书使用的 Python 版本。Python 3.X 的最新版本是 Python 3.5,这也是最新可用的 Python 版本。目前你可以认为 Python 2.7 的代码无法在 Python 3.4 中运行。专业的说法是,Python 3.4 破坏了向后兼容。

你可以写出同时兼容 Python 2.7 和 Python 3.4 的代码,但这既非本书的要求,也不是本书的重点。一开始就在这件事情上花费大量精力,就好比住在佛罗里达州的人担心如何在雪中开车一样 2。有一天你可能会需要这项技能,但此时此刻这并不是你需要关注的重点。

2美国佛罗里达州又名“阳光之州”,一年四季很少下雪。——译者注

有些读者可能会好奇我们为何决定使用 Python 2.7 而不是 Python 3.4。这个话题在 Python 社区中是很有争议的。Python 2.7 是被广泛使用的版本,而 Python 3.X 正在被逐步接受。我们之所以选择 Python 2.7,是想保证你能够找到容易阅读且容易获取的资源,并确保你的操作系统及服务支持你使用的 Python 版本。本书中的很多代码在 Python 3 中也可以运行。如果你想在 Python 3 中运行其中一些示例,当然可以;但我们更希望你专注于学习 Python 2.7,在学完本书后再继续学习 Python 3。为了兼容 Python 3 需要修改代码,想了解这方面的更多内容,可以查看官方更改文档:https://docs.python.org/3.0/whatsnew/3.0.html。

在阅读本书的过程中,你会用到自己编写的代码,还会用到其他(牛)人编写的代码。这些外部代码大部分都可以在 Python 2.7 下运行,但可能无法兼容 Python 3.4。如果你正在使用 Python 3 的话,需要重写代码(如果对遇到的每一段代码都要进行重写和编辑,这会浪费大量的时间,你可能很难完成第一个项目)。

把你的第一段代码当作草稿,以后你可以回来进一步修订完善。现在我们开始来安装 Python。1.2.2 安装Python

好消息是,Python 可以在所有操作系统上运行。坏消息是,不同操作系统的安装方法有所不同。按照 Python 编程的流行程度排序,我们将讨论两个主要的操作系统:Mac OS X 和 Windows。如果你用的是 Mac OS X 或 Linux,可能已经安装了 Python。想了解更详细的安装过程,我们推荐以你的 Linux 发行版加“Python 高级安装”(advanced Python setup)为关键词在 Web 上搜索,以寻求更多建议。与 Windows 系统相比,在 OS X 系统和 Linux 系统上安装和运行 Python 要容易一些。想深入了解这种差异存在的原因,我们推荐阅读 Windows 和基于 Unix 的操作系统的历史。可以对照阅读这两篇文章:一篇是 Hadeel Tariq Al-Rayes 写的“Studying Main Differences Between Linux & Windows Operating Systems”(http://www.ijens.org/vol_12_i_04/126704-8181-ijecs-ijens.pdf),文中的观点支持 Unix;另一篇是微软的“Functional Comparison of UNIX and Windows”(https://technet.microsoft.com/en-us/library/bb496993.aspx)。

如果你用的是 Windows,应该也可以运行所有的代码;但是在 Windows 下可能还需要安装代码编译器和额外的系统库,以及设置环境变量。

为了安装 Python 并能正常使用,请根据你的操作系统安装提示,按照相应的步骤来操作。我们还将进行一系列的测试,确保一切正常运行,然后才能进入下一章。

Mac OS X系统

首先打开终端(http://en.wikipedia.org/wiki/Terminal_(OS_X)),一个让你可以和计算机进行交互的命令行界面。个人计算机(PC)刚刚出现时,你只能通过命令行界面与计算机交互。现在大多数人用的都是图形界面操作系统,因为这种操作系统访问更方便,用户也更加广泛。

有两种方法可以在计算机上找到终端。第一种方法是通过 OS X 系统的 Spotlight。点击 Spotlight 图标——屏幕右上角的放大镜——输入“Terminal”。然后选择出现在“应用程序”(Applications)类别旁边的图标。

选定之后,会弹出一个类似图 1-2 中的小窗口(请注意,你的 Mac OS X 版本不同,界面可能也会有所不同)。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载