前言

欢迎打开这本书。在本书中,我们将会让你的数据处理技术更上一层楼,不再只是使用电子表格,而是可以利用 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

表示应该替换成用户输入的值,或根据上下文替换的值。

前言 - 图1 该图标表示提示或建议。

前言 - 图2 该图标表示一般性说明。

前言 - 图3 该图标表示警告或警示。

使用代码示例

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

前言 - 图4

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/)。

联系我们

请把对本书的评价和问题发给出版社。美国:

O'Reilly Media, Inc.

1005 Gravenstein Highway North

Sebastopol, CA 95472

中国:

北京市西城区西直门南大街 2 号成铭大厦 C 座 807 室(100035)

奥莱利技术咨询(北京)有限公司

O'Reilly 的每一本书都有专属网页,你可以在那里找到本书的相关信息,包括勘误表、示例以及其他信息。本书的网站地址是:http://bit.ly/data_wrangling_w_python。1

1本书中文版勘误可到 ituring.cn/book/1819 查看和提交。——编者注

对于本书的评论和技术性问题,请发送电子邮件到:bookquestions@oreilly.com

要了解更多 O'Reilly 图书、培训课程、会议和新闻的信息,请访问以下网站:

http://www.oreilly.com

我们在 Facebook 的地址如下:http://facebook.com/oreilly

请关注我们的 Twitter 动态:http://twitter.com/oreillymedia

我们的 YouTube 视频地址如下:http://www.youtube.com/oreillymedia

致谢

我们想要感谢本书的编辑 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 夫人,感谢她在讨论本书的过程中所付出的极大耐心。

电子书

扫描如下二维码,可购买本书电子版。

{%}