- 本书赞誉
- 前言
- 目标读者
- 不适合阅读本书的读者
- 本书结构
- 什么是数据处理
- 遇到困难怎么办
- 排版约定
- 使用代码示例
- 致谢
- 第 1 章 Python 简介
- 第 2 章 Python 基础
- 第 3 章 供机器读取的数据
- 第 4 章 处理 Excel 文件
- 第 5 章 处理 PDF 文件 以及用 Python 解决问题
- 第 6 章 数据获取与存储
- 第 7 章 数据清洗:研究、匹配与格式化
- 第 8 章 数据清洗:标准化和脚本化
- 第 9 章 数据探索和分析
- 第 10 章 展示数据
- 第 11 章 网页抓取:获取并存储网络数据
- 第 12 章 高级网页抓取:屏幕抓取器与爬虫
- 第 13 章 应用编程接口
- 第 14 章 自动化和规模化
- 第 15 章 结论
- 附录 A 编程语言对比
- 附录 B 初学者的 Python 学习资源
- 附录 C 学习命令行
- 附录 D 高级 Python 设置
- 附录 E Python 陷阱
- 附录 F IPython 指南
- 附录 G 使用亚马逊网络服务
- 关于作者
- 关于封面
第 1 章 Python 简介
无论你是一名记者、分析师,还是初出茅庐的数据科学家,选择这本书可能是因为你想学习如何用编程来分析数据,得出结论,并将结论清楚地传达给别人。你可能会用报告、图表或归纳统计的方式来展示你的结论。重要的是,你想讲述一个故事。
传统的故事讲述或新闻报道往往使用单一的故事来描述总体结论或趋势。在这种故事中,数据成为了相对次要的部分。然而,其他讲故事的人,比如 Christian Rudde[Datacylsm(http://dataclysm.org/)的作者,OkCupid 的创始人之一]认为数据本身应该是故事的重点。
首先,你需要确定想要研究的主题。你可能对研究不同人或群体的沟通习惯感兴趣,这时你可以从一个具体的问题入手,例如在网络上被人们广为分享的信息都有哪些特点。又或许你可能对棒球的历史统计数据感兴趣,并想弄清楚一个问题:这些数据能否表明棒球运动随时间发生了变化。
确定了感兴趣的领域之后,你需要寻找数据,以进一步探索这一主题。想研究人类行为,你可以从 Twitter API(https://dev.twitter.com/overview/api)中获取数据,研究人们在 Twitter 上分享的内容。如果想深入研究棒球历史,你可以使用 Sean Lahman 的棒球数据库(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。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论