介绍

我们通常在短暂的浏览了某个社交网络后,一断时间内将不会再次访问它,甚至永远不在访问。比如,在Instagram上点赞一张照片,在Facebook上分享别人发布的帖子,或者在whatsapp上给朋友发消息——不管具体的做的什么,很多时间我们只做一次,之后可能就不会再访问了。

但访问过程中的每一次操作(包括翻页、点击、状态更新等),都会被社交公司捕捉和记录,并将我们产生的记录用来完善其数据服务器。今天,我们在网络上产生的数据比以往任何时候都多。通过将这些数据作为一个整体来观察,可以有效地帮助我们对用户行为进行了解。通过这些数据,我们还可以研究这些系统造成的危害,比如从检测虚假的在线参与者(例如,机器人账户或虚假的个人资料),到理解算法如何随着时间的推移向用户呈现有问题的内容。

如果我们集中观察这些数据,我们可以发现模式、趋势或异常情况,并可以更好地理解用户上网习惯以及改善用户体验。

什么是数据分析?

数据分析师的主要目标是从大量信息中获取有用的内容。我们可以把数据分析看作是访问大量记录的一种方式:我们可以观察某个事件,或者可以观察数据长期变化趋势。观察一个数据集可能是一个曲折的漫长过程:可能需要一些不同的方法来找到问题的答案,同样,可能需要一些不同类型的数据来了解一个用户。

即使我们的问题是简单和集中的,要得到答案仍然需要我们做出几个逻辑性和哲学性的决定。哪些数据集可能对分析用户的行为有用,我们如何获得这些数据?如果我们想要确定一篇Facebook帖子的受欢迎程度,通常我们是通过单一的点赞、收藏、浏览数、评论数等来衡量,还是将这些指标结合起来进行衡量?如果我们想更好地理解人们如何在Twitter上讨论一个特定的话题,那么对有关该话题的tweet进行分类的最佳方法是什么?

所以,虽然分析数据需要一定的技术技巧,但这也是一个创造性的过程。换句话说,数据分析既是科学也是艺术。

谁适合阅读这本书?

这本书是为那些没有编程经验的人写的。鉴于社交媒体、互联网和技术在我们生活中的巨大作用,这本书旨在以一种简单且直接的方式探索它们。通过实践练习,您将学习编程、数据分析和社交网络的基本概念。

在某种程度上,这本书是针对像以前的自我一样的人——一个对世界非常好奇,但也被各种术语、会议和在线教程所吓倒的人。我们将采取宏观和微观的方法,观察社交网络的生态系统以及编写代码的细节。

编码不仅仅是一种构建机器或应用程序的方式:它是一种满足你在这个日益依赖技术的世界中的好奇心的方式。

本书约定

为了从社交媒体获取和理解数据,我们需要了解数据存储在哪里,如何访问它,以及我们如何理解它。换句话说,分析来自网络的数据涉及多个步骤:收集、研究和探索以及分析。在最后一步中,我们还将从数据中得出结论,并回答我们关于人类行为和最初产生这些行为的动机等相关问题。

注意,本书所插入的代码片段包含了可以帮助你从社交网络收集和分析数据的脚本,但它首先是用来教授数据分析过程的基本概念和工具。可以把这些章节看作是对那些渴望研究某个特定主题或问题的研究人员的指导。我的希望是,你会根据你的自身需要,来学习和探索相关的领域。毕竟,社交媒体的前景是不断变化的,这意味着你需要灵活,不断调整你的分析方法,以理解它产生的数据。

类似地,本书中的约定是为了优先考虑您的学习而不是代码的优雅。例如,这段代码使用了很多全局变量。(不要恐慌!我们将在接下来的章节中介绍那些变量。)虽然这可能不是最有效的编码方式,但它对可能是Python新手的人来说是友好的。

至于所涉及的工具,我有两个主要标准。我试着在网上选择一些免费的工具,这些工具的入门门槛相对较低,让初学者能够开始简单的项目。

本书涵盖的内容

第一部分:数据挖掘

  • 第1章:本章介绍了前端编程语言(HTML, CSS和JavaScript),以及为什么它们在社交媒体数据挖掘环境中很重要。您还将通过交互式shell中的实践练习学习Python的基础知识。
  • 第2章:本章解释了什么是API,你可以通过它们访问什么类型的数据,并指导你如何访问JSON格式的数据。本章还涵盖了为数据分析制定研究问题的过程。
  • 第3章:本章展示了如何收集从YouTube API返回的数据,并使用Python将其从JSON重组为电子表格,并生成.csv文件。
  • 第4章:本章定义了抓取并描述了如何检查HTML来将网页中的内容结构成数据。它还涵盖了社交媒体公司向用户提供的数据,并向您展示了如何将数据提取到.csv文件中。
  • 第5章:本章解释了抓取网站的道德考虑,并引导您完成为 Wikipedia 页面抓取器的过程。

第二部分:数据分析

  • 第6章:涵盖数据分析中涉及的各种流程,并通过分析来自自动化帐户或机器人的数据来介绍 Google 表格。
  • 第7章:探索可视化工具(例如在 Google 表格中制作图表和使用条件格式突出显示数据变化)如何帮助我们更好地理解数据。
  • 第8章:将您从分析Google工作表中的数据中学到的概念转移到编程分析领域。您将看到如何在Python3中设置虚拟环境,如何浏览Jupyter笔记本(一个能够读取和运行Python代码的Web应用程序),以及如何使用Python库。您还将探索数据集的结构和广度。
  • 第9章:以上一章为基础,向您展示如何使用 Pandas 中的函数修改数据、过滤数据和运行基本聚合。
  • 第10章:解释如何将数据格式化为时间戳,使用 lambda 函数更有效地修改它,并在 Pandas 中对其进行临时重新采样。
  • 第11章:列出资源以成为更好的 Python 编码员、学习更多有关统计分析的知识以及使用自然语言处理和机器学习分析文本。

下载和安装 Python

要完成本书中的练习,您需要在计算机上设置一些工具。在相关章节中,我将帮助您完成大部分工作,包括注册Google帐户和安装Python库。但在我们深入阅读本书内容之前,我们现在需要做一个设置:在您的机器上安装Python。

虽然有多种方法可以安装Python,但最简单的方法之一是 http://python.org/downloads/ 并为您的Windows或macOS计算机下载最新版本的Python。您应该可以找到各种64位和32位计算机的安装程序(请继续阅读以了解这两种计算机之间的差异)。

警告:与所有编程语言一样,Python也经历了很多变化。Python2是该语言的旧版本,不能与本书中的练习一起使用,因此请确保从网站下载Python3的最新版本。最新Python版本的名称可能附加了版本数字(例如,Python3.7.3代表Python3的7.3版),但重要的是,Python一词后面的第一个数字是3。

在 Windows 上安装

要确定您的 Windows 计算机是 64 位还是 32 位,请选择 Start4Control > Panel4System,然后查看系统类型下是否显示 64 位或 32 位。

完成后,下载 Python 安装程序(以文件扩展名 .exe 结尾),然后双击它。在打开的安装程序显示屏幕上,按照以下说明操作:

  • 选择为所有用户安装,然后单击下一步。
  • 再次单击下一步将 Python 安装到 C:\Python34
  • 系统会提示您“自定义 Python”。对于本书中的练习,您不需要这样做,因此再次单击“下一步”。

在 macOS 上安装

要了解您的Mac是64位还是32位,请单击Apple菜单并选择About This Mac。这将打开一个窗口,其中包含有关Mac的一些基本信息。在文字处理器旁边,如果上面写着“英特尔Core Solo”或“英特尔Core Duo”,那么就有一台32位机器。如果它说的是其他东西,比如英特尔酷睿2双核或英特尔酷睿i5,那么您就拥有一台64位机器。

然后为您的计算机下载相应的安装程序文件(以.dmg结尾)。下载文件后,双击它以开始安装。这将弹出一个安装窗口(有时可能会要求您输入计算机的管理员密码)。按照以下说明完成安装:

  • 您应该会看到许多描述该软件的屏幕(介绍和自述部分)。单击继续以跳过它们并同意软件许可。
  • 选择您的主硬盘驱动器名称(例如 HD Macintosh)并单击安装。

遇到困难时寻求帮助

学习如何编写代码是一个渐进的过程,在这个过程中,你会不断失败,但会从错误中吸取教训。一个冒号的缺失,一个小的拼写错误,一个错误的逗号,都会让初学者感到不快,也会让人泄气。但不要绝望!每个编码员都要经历这个过程;学习如何发现并消除错误只是编程的一部分。

如前所述,社交媒体不断变化的性质意味着我们必须不断适应,有一天我们可能需要分析基于文本的内容,而有一天我们可能会看到成千上万的图像。换句话说,要成为一个好的程序员,意味着你必须是一个足智多谋的程序员,一个知道如何寻找并寻求帮助来解决你遇到的任何问题的人。

首先,有一些问题可以通过谷歌找到解决方案。例如,按照以下公式输入搜索的关键字会得到更好的搜索结果:编码语言+动词+特定关键字。一个例子可能是“Python open.csv文件”

注意:有关优化搜索词的更多信息,请参阅Suyeon Son的文章“Googleing For Code Solutions可能会很棘手,这里是如何开始”,可在此处找到。

这个公式是一个很好的起点,可以找到相关的编码示例或其他人提出的类似问题,其中许多可能会发布在Stack Overflow上,这是一个程序员交流有用解决方案的论坛。在浏览搜索结果时,您可能会看到更多的关键字,并可以优化查询。

然后是错误消息。对于新手程序员来说,最令人沮丧的事情之一是,最小的错误可能会导致代码中断和没有显示错误消息。当您编写一行包含错误的代码时,Python通常会显示错误,而不是运行代码。下面是一个错误示例,如果我尝试添加两种不同的数据类型—文本和数字(我们将在第一章中介绍数据类型和数学运算!):

>>> "R2D" + 2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
u TypeError: can only concatenate str (not "int") to str

对于Python错误,问题的要点通常在错误消息u的末尾。在本例中,这就是 TypeError:can only concatenate str (not "int") to str。要找到此错误的解决方案,可以复制此错误并将其粘贴到搜索引擎中,如图1所示。

以下列表描述了让 Stack Overflow 和类似论坛的用户为您提供帮助的最有效方法,模仿了 Al Sweigart 所著的另一本 No Starch 书籍《使用 Python 自动化无聊的东西》中提供的技巧:

陈述你的目标,而不仅仅是你做了什么。这使开发人员可以查看是否有其他方法可以实现您希望做的事情。

解释您做了什么,您已经尝试了什么来解决您的问题,以及可能与开发人员相关的任何其他信息,以便能够帮助您(例如,确保您提到了您正在使用的Python版本和正在使用的计算机)。

如果您遇到错误,请将整个错误消息复制并粘贴到论坛帖子中(不过请确保通过编辑任何标识信息来保护您的隐私和其他人的隐私,如您的全名(如果它也是您的计算机名),或密码和其他登录详细信息)。要以节省空间的方式将真正长的代码片段嵌入到文章中,您可以使用诸如Paste Bin之类的有用平台(http://pastebin.com/).

最后但并非最不重要的一点是,请参阅Stack Overflow的便捷指南,了解论坛上提问的其他最佳实践:https://stackoverflow.com/help/how-to-ask/.

在互联网上向陌生人寻求帮助似乎令人望而生畏,但如果你能有礼貌地并尊重他人的时间,它会产生奇妙的效果。

总结

我们的许多互动和行为现在都被社交媒体平台捕捉到了。虽然像Facebook或Twitter这样的公司肯定已经找到了利用这些数据的方法,但我坚信研究人员和用户自己应该能够从这些庞大的数据集中收集自己的见解。这本书提供了一个初学者友好的介绍这种数据分析。

我做了十多年的讲师,非常喜欢看到学生和同龄人取得成功。虽然这本书的范围有限,但我希望它能激发初学者足够的好奇心,迫使他们继续学习。为此,请在我的网站上随意浏览我的大部分教材,网址为 https://lamivo.com/tips.html.

现在,不用再麻烦了,让我们开始吧!