数据从业者有许多可用于分割数据的工具。有的用Excel,有的用SQL,有的用Python。对于某些任务,使用Python的优势是显而易见的。更快地处理更大的数据集。使用基于Python构建的开源机器学习库。您可以轻松导入和导出不同格式的数据。由于其多功能性,Python可以成为任何数据分析师工具箱的重要组成部分。然而,这很难开始。大多数数据分析师可能熟悉SQL或Excel。本文旨在帮助您将技能和技术从Excel和SQL转移到Python。首先,让我们设置Python。最简单的方法是使用JupyterNotebook和Anaconda。这个可视化界面将允许您插入Python代码并立即查看输出。这也将使您更容易跟上教程的其余部分。我强烈推荐使用Anaconda,但是这个初学者指南也将帮助您安装Python——尽管这会使这篇文章更难理解。我们从基础开始:打开数据集。01导入数据您可以导入.sql数据库并使用SQL查询对其进行处理。在Excel中,您可以双击文件并开始以电子表格模式处理它。在Python中,由于能够处理许多不同类型的文件格式和数据源,因此具有更复杂的功能。使用数据处理库Pandas,您可以使用read方法导入各种文件格式。可以使用此方法导入的文件格式的完整列表在Pandas文档中。您可以将CSV和Excel文件中的所有内容导入到HTML文件中!使用Python的最大优势之一是能够从广泛的网络中获取数据,而不是只能访问手动下载的文件。Python中的requests库可以帮助您对不同的网站进行分类并从中获取数据,而BeautifulSoup库可以帮助您处理和过滤数据,然后您将得到您所需要的。如果您要走这条路,请注意使用权问题。在此示例中,我们将使用维基百科上的许多国家的人均GDP(一个技术术语,表示一个国家的人均收入)表,并使用Pandas库在Python中对数据进行排序。首先,导入我们需要的库。我们需要Pandas库来处理我们的数据。需要numpy库来执行数值操作和转换。我们需要请求库从网站获取HTML数据。BeautifulSoup需要处理这些数据。最后,需要Python(re)的正则表达式库来改变处理数据时会出现的某些字符串。在Python中,你不需要了解很多关于正则表达式的知识,但它们是一个强大的工具,可以用来匹配和替换某些字符串或子字符串。如果您想了解更多,请参阅以下内容。02相信这个网站的一些代码这里有一个更技术性的解释,详细说明了如何使用Python代码来获取HTML表格。如果您使用一些Python代码运行它,您可以将上面的代码复制粘贴到您自己的Anaconda中并对其进行迭代!下面是代码的输出,如果不修改,就是所谓的字典。您会注意到逗号分隔的带括号的键值列表。每个带括号的列表代表我们数据框中的一行,每一列由一个键表示:我们正在处理一个国家的排名、人均GDP(以美元为单位)及其名称(以“国家”为单位)。有关列表和字典等数据结构如何在Python中工作的更多信息,本文将有所帮助。幸运的是,我们不需要理解数据就可以将其移动到Pandas数据框中,这与将数据聚合到SQL表或Excel电子表格中的方式类似。通过一行代码,我们已将这些数据分配并保存到Pandas数据帧中——事实证明,字典是转换为数据帧的完美数据格式。通过对变量gdp的这个简单的Python赋值,我们现在有了一个可以在编写gdp时打开和浏览的数据框。我们可以向该术语添加Python方法,以创建其中数据的战略视图。很有帮助,因为我们刚刚对在Python中使用等号和赋值有了一点了解。03快速查看数据现在,如果我们想快速查看我们做了什么,我们可以使用head()方法,它非常类似于Excel中的选择几行或SQL中的LIMIT方法。轻松使用它来快速查看数据集,而无需加载整个数据集!如果要查看特定行数,还可以在head()方法中插入行数。我们得到的输出是人均GDP数据集的前五行(head方法的默认值),我们可以看到它们被整齐地排列成三列加上索引列。请注意,Python索引从0而不是1开始,因此如果您想调用数据框中的第一个值,请使用0而不是1!您可以通过在括号内添加您选择的数字来更改显示的行数。尝试一下!04重命名列您在Python中很快意识到的一件事是处理带有某些特殊字符(如$)的名称会变得非常麻烦。我们将重命名一些列,在Excel中,您可以通过单击列名并键入新名称来完成此操作,在SQL中,您可以执行ALTERTABLE语句或在SQLServer中使用sp_rename。在Pandas中,执行此操作的方法是重命名方法。在实现上述方法时,我们将列标题“US$”替换为列标题“gdp_per_capita”。快速调用.head()方法可确认已进行更改。05删除列有一些数据损坏!如果您查看Rank列,您会注意到散布在周围的随机破折号。这不是很好,因为实际的数字顺序被打破了,这使得Rank列无用,尤其是Pandas默认提供的编号索引。幸运的是,使用内置的Python方法可以轻松删除列:del。现在,通过另外调用head方法,我们可以确认数据框不再包含排名列。06转换列中的数据类型有时,给定的数据类型很难使用。这个方便的教程分解了Python中不同数据类型之间的差异,以备您需要复习。在Excel中,您可以右键单击并找到将列数据转换为不同类型数据的方法。您可以复制一组由公式呈现的单元格并将它们粘贴为值,您可以使用格式设置选项在数字、日期和字符串之间快速切换。有时在Python中从一种数据类型切换到另一种数据类型并不容易,但这当然是可能的。我们首先使用Python中的re库。我们将使用正则表达式替换gdp_per_capita列中的逗号,以便我们可以更轻松地使用该列。re.sub方法本质上是用空格代替逗号。下面详细介绍re库的各个方法。现在我们已经删除了逗号,我们可以轻松地将列转换为数字。现在我们可以计算这一列的平均值。我们可以看到人均GDP的平均值约为$13037.27,如果这一列判断为字符串(不能进行算术运算)则无法做到这一点。现在可以对人均GDP列执行我们以前无法执行的各种计算,包括按不同值过滤列和确定列的百分位值。07选择/过滤数据任何数据分析师的基本需求是将大型数据集分割成有价值的结果。为此,您必须检查一部分数据:这对于选择和过滤数据非常有帮助。在SQL中,这是通过混合SELECT和各种其他函数来实现的,而在Excel中,这可以通过拖放数据和执行过滤器来实现。您可以使用Pandas库或查询的不同方法来快速过滤。作为快速代理,仅显示人均GDP超过50,000美元的国家/地区。它是这样工作的:我们将一个布尔索引过滤器分配给一个新的数据框,它基本上是说“创建一个人均GDP超过50,000的新数据框”。现在我们可以显示gdp50000。GDP超过5万的国家有12个!选择属于以s开头的国家/地区的行。现在可以显示仅包含以s开头的国家/地区的新数据框。使用len方法(计算数据框中行数的救星!)的快速检查显示我们有25个国家符合条件。如果我们想将这两个过滤器链接在一起怎么办?下面是连接过滤的方法。在进入多个过滤器之前,您想了解它是如何工作的。您还需要了解Python中的基本运算符。出于本练习的目的,您只需要知道“&”代表AND,“|”代表在Python中代表OR。但是,通过深入了解所有底层运算符,您可以轻松地在各种条件下操作数据。让我们继续筛选,选择以“S”开头且人均GDP大于50,000的国家/地区。现在过滤以“S”开头或人均GDP大于50000的国家/地区。我们正在努力处理Pandas中的过滤视图。08没有办法用计算机处理数据,可以帮助计算出不同的结果,Excel怎么办?在这种情况下,Pandas严重依赖numpy库和通用的Python语法来进行计算。对我们一直在处理的GDP数据集执行一系列简单的计算。比如计算人均国民生产总值5万以上的总和。这将为您提供770046的答案。使用相同的逻辑,我们可以计算各种值——完整列表在左侧菜单栏下的计算/描述统计部分的Pandas文档中。09数据可视化(图表/图形)数据可视化是一个非常强大的工具——它允许您以易于理解的格式与他人分享您获得的见解。毕竟,一张图片胜过一千个字。SQL和Excel都具有将查询转换为图表和图形的功能。您可以使用seaborn和matplotlib库对Python执行相同的操作。关于数据可视化选项的综合教程——我最喜欢的是这个Github自述文件(全部为文本),它解释了如何在Seaborn中构建概率分布和各种绘图。这应该让您了解Python中数据可视化的强大功能。如果你觉得不知所措,可以使用一些解决方案,比如Plot.ly,这可能更直观地掌握。我们不会检查每个数据可视化选项,只要说使用Python,您可以拥有比SQL所能提供的任何东西都更强大的可视化功能,您必须权衡使用Python获得的更多灵活性以及生成图表的便利性从Excel中的模板性。在这种情况下,我们将构建一个简单的直方图,显示人均GDP超过50,000美元的国家的人均GDP分布。有了这个强大的直方图方法(hist()),我们现在可以生成一个直方图,显示大多数人均GDP在5万美元到7万美元之间!10GroupandJoinData在Excel和SQL中,JOIN方法和PivotTables等强大的工具可以快速汇总数据。Pandas和Python共享许多从SQL和Excel移植的相同方法。数据可以在数据集中分组,不同的数据集可以连接在一起。您可以在此处查看文档。你会发现Pandas中的merge方法提供的连接功能与SQL通过join命令提供的连接功能非常相似,而且Pandas还为以前在Excel中使用过数据透视表的人提供了数据透视表的方法。我们只是将我们开发的人均GDP表与世界银行的世界发展指数列表联系起来。首先导入世界发展指数的.csv文件。使用.head()方法可以快速查看此数据集中的不同列。现在我们已经完成了,我们可以快速浏览一下,添加几个我们可以操作的列,包括不同年份的数据源。现在让我们结合数据:我们现在可以看到表格包含人均GDP列和全国不同列的数据。对于那些熟悉SQL连接的人,您可以看到我们正在对原始数据框的Country列进行内部连接。现在我们有了一个连接表,我们想按地区对国家和人均GDP进行分组。我们现在可以使用Pandas中的group方法按地区分组排列数据。如果我们想看groupby总结出来的永久视图怎么办?Groupby操作创建一个可以操作的临时对象,但它们不会创建用于构建聚合结果的永久接口。为此,我们必须使用Excel用户的旧最爱:数据透视表。幸运的是,Pandas有一个强大的数据透视表方法。您会看到我们收集了一些我们不需要的列。幸运的是,使用Pandas中的drop方法,您可以轻松地删除多个列。我们现在可以看到,人均GDP因世界不同地区而异。我们有一个干净的表,里面有我们想要的数据。这是一个很肤浅的分析:你其实想做一个加权平均,因为每个国家的人均GDP并不代表一个组里每个国家的人均GDP,因为组里的人口是不一样的。事实上,您会想要重复我们所有的计算,包括反映每个国家/地区的人口列的方式!看看您是否可以在刚开始使用的Python笔记本中执行此操作。如果你能弄明白,你就可以很好地将你的SQL或Excel知识转移到Python中。
