如何用Python执行常见的Excel和SQL任务

简介:

如何用Python执行常见的Excel和SQL任务


本教程的代码和数据可在 Github 资源库 中找到。有关如何使用 Github 的更多信息,请参阅本指南。

数据从业者有许多工具可用于分割数据。有些人使用 Excel,有些人使用SQL,有些人使用Python。对于某些任务,使用 Python 的优点是显而易见的。以更快的速度处理更大的数据集。使用基于 Python 构建的开源机器学习库。你可以轻松导入和导出不同格式的数据。

由于其多功能性,Python 可以成为任何数据分析师工具箱的重要组成部分。但是,这很难开始。大多数数据分析师可能熟悉 SQL 或 Excel。本教程是涉及帮助你将技能和技术从 EXcel 和 SQL 转移到 Python。

首先,让我们来设置 Python。最简单的方法就是使用 Jupyter Notebook 和 Anaconda。这个可视化界面将允许你插入 Python 代码并立即查看输出。这也将使你轻松跟随本教程的其余部分。

我强烈推荐使用 Anaconda,但这个初学者指南也将帮助你安装 Python — 尽管这将使本教程更加难以接受。

我们从基础开始:打开一个数据集。

导入数据

你可以导入.sql 数据库并用 SQL 查询中处理它们。在Excel中,你可以双击一个文件,然后在电子表格模式下开始处理它。在 Python 中,有更多复杂的特性,得益于能够处理许多不同类型的文件格式和数据源的。

使用一个数据处理库 Pandas,你可以使用 read 方法导入各种文件格式。,使用这个方法所能导入完整的文件格式清单是在 Pandas 文档中。你可以导入从 CSV 和 Excel 文件到 HTML 文件中的所有内容!

使用 Python 的最大优点之一是能够从网络的巨大范围中获取数据的能力,而不是只能访问手动下载的文件。在 Python 的 requests 库可以帮助你分类不同的网站,并从它们获取数据,而 BeautifulSoup 库可以帮助你处理和过滤数据,那么你精确得到你所需要的。如果你要去这条路线,请小心使用权问题。

(不用担心,如果你想跳过这个部分,可以的!原始的 csv 文件在这里,你可以随意下载,如果你宁愿开始这个练习而不从网络上获取数据,或者你可以 git](https://rogerdudler.github.io/git-guide/) clone 整个存储库。)

在这个例子中,我们将获取许多国家人均 GDP(一个技术术语,意思是一个国家的人均收入)的维基百科表格,并在 Python 中使用 Pandas 库对数据进行排序。

首先,导入我们需要的库。有关 Python 中如何 import 的更多信息,请点击此处。

需要 Pandas 库处理我们的数据。需要 numpy 库来执行数值的操作和转换。我们需要 requests 库来从网站获取 HTML 数据。需要 BeautifulSoup 来处理这些数据。最后,需要 Python(re)的正则表达式库来更改在处理数据时将出现的某些字符串。

在 Python 中,不需要知道很多关于正则表达式的知识,但它们是一个强大的工具,可用于匹配和替换某些字符串或子字符串。如果你想了解更多,请参考以下教程。

信任这个网站的一些代码。

这是一个更具技术性的解释,详细说明如何使用 Python 代码来获取 HTML 表格。

你可以将上面的代码复制粘贴到你自己的 Anaconda 中,如果你用一些 Python 代码运行,可以迭代它!

下面是代码的输出,如果你不修改它,就是所谓的字典。

你会注意到逗号分隔起来的括号的 key-value 列表。每个括号内的列表都代表了我们 dataframe 中的一行,每列都以 key 表示:我们正在处理一个国家的排名,人均 GDP(以美元表示)及其名称(用「国家」)。

有关数据结构,如列表和词典,如何在 Python 中的运行的更多信息,本教程将有所帮助。

幸运的是,为了将数据移动到 Pandas dataframe 中,我们不需要理解这些数据,这是将数据聚合到 SQL 表或 Excel 电子表格的类似方式。使用一行代码,我们已经将这些数据分配并保存到 Pandas dataframe 中 – 事实证明是这种情况,字典是要转换为 dataframe 的完美数据格式。

通过这个简单的 Python 赋值给变量 gdp,我们现在有了一个 dataframe,可以在我们编写 gdp 的时候打开和浏览。我们可以为该词添加 Python 方法,以创建其中的数据的策略视图。作为我们刚刚在 Python 中使用等号和赋值的一点深入了解,教程很有帮助。

快速查看数据

现在,如果要快速查看我们所做的工作,我们可以使用 head() 方法,它与 Excel 中的选择几行或SQL中的 LIMIT 方法非常相似。轻松地使用它来快速查看数据集,而无需加载整个数据集!如果要查看特定数量的行,还可以在 head() 方法中插入行数。

我们得到的输出是人均 GDP 数据集的前五行(head 方法的默认值),我们可以看到它们整齐地排列成三列以及索引列。请注意,Python 索引从0开始,而不是1,这样,如果要调用 dataframe 中的第一个值,则使用0而不是1!你可以通过在圆括号内添加你选择的数字来更改显示的行数。试试看!

重命名列

有一件你在 Python 中很快意识到的事是,具有某些特殊字符(例如$)的名称处理可能变得非常麻烦。我们将要重命名某些列,在 Excel 中,可以通过单击列名称并键入新名称,在SQL中,你可以执行 ALTER TABLE 语句或使用 SQL Server 中的 sp_rename。

在 Pandas 中,这样做的方式是rename 方法。

在实现上述方法时,我们将使用列标题 「gdp_per_capita」 替换列标题「US $」。一个快速的 .head() 方法调用确认已经更改。

删除列

有一些数据损坏!如果你查看 Rank 列,你会注意到散乱的随机破折号。这不是很好,由于实际的数字顺序被破坏,这使得 Rank 列无用,特别是使用 Pandas 默认提供的编号索引。

幸运的是,使用内置的 Python 方法:del,删除列变得很容易。

现在,通过另外调用 head 方法,我们可以确认 dataframe 不再包含 rank 列。

在列中转换数据类型

有时,给定的数据类型很难使用。这个方便的教程将分解 Python 中不同数据类型之间的差异,以便你需要复习。

在 Excel 中,你可以右键单击并找到将列数据转换为不同类型的数据的方法。你可以复制一组由公式呈现的单元格,并将其粘贴为值,你可以使用格式选项快速切换数字,日期和字符串。

有时候,在 Python 中切换一种数据类型为其他数据类型并不容易,但当然有可能。

我们首先在 Python 中使用 re 库。我们将使用正则表达式来替换 gdp_per_capita 列中的逗号,以便我们可以更容易地使用该列。

 

re.sub 方法本质上是使用空格替换逗号。以下教程详细介绍了 re库 的各个方法。

现在我们已经删除了逗号,我们可以轻易地将列转换为数字。

现在我们可以计算这列的平均值。

我们可以看到,人均 GDP 的平均值约为13037.27美元,如果这列被判断为字符串(不能执行算术运算),我们就无法做到这一点。现在,可以对我们以前不能做的人均 GDP 列进行各种计算,包括通过不同的值过滤列,并确定列的百分位数值。

选择/过滤数据

任何数据分析师的基本需求是将大型数据集分割成有价值的结果。为了做到这一点,你必须检查一部分数据:这对选择和过滤数据是非常有帮助的。在 SQL 中,这是通过混合使用 SELECT 和不同的其他函数实现的,而在 Excel 中,可以通过拖放数据和执行过滤器来实现。

你可以使用 Pandas 库不同的方法或查询快速过滤。

作为一个快速的代表,只显示人均 GDP 高于 5 万美元的国家。

这是这样做到的:

我们为一个新的 dataframe 分配一个布尔索引的过滤器,这个方法基本上就是说「创建一个人均 GDP 超过 50000 的新 dataframe」。现在我们可以显示gdp50000。

有12个国家的 GDP 超过 50000!

选择属于以 s 开头的国家的行。

现在可以显示一个新 dataframe,其中只包含以 s 开头的国家。使用 len 方法快速检查(一个用于计算 dataframe 中的行数的救星!)表示我们有 25 个国家符合。

 

要是我们想把这两个过滤条件连在一起呢?

这里是连接过滤的方法。在多个过滤条件之前,你想要了解它的工作原理。你还需要了解 Python 中的基本操作符。为了这个练习的目的,你只需要知道「&」代表 AND,而「|」代表 Python 中的 OR。然而,通过更深入地了解所有基础运算符,你可以用各种条件轻松地处理的数据。

让我们继续工作,并在过滤选择以「S」开头且有大于 50,000 人均 GDP 的国家。

 

现在过滤以「S」开头 或人均 GDP 超过 50000 的国家。

我们正在努力处理 Pandas 中的过滤视图。

用计算机来处理数据

没有可以帮助计算不同的结果的方法,那么 Excel 会变成什么?

在这种情况下,Pandas 大量依赖于 numpy 库和通用 Python 语法将计算放在一起。对我们一直在研究的 GDP 数据集进行一系列简单的计算。例如,计算人均国民生产总值超过 5 万的总和。

这将给你答案为 770046 。使用相同的逻辑,我们可以计算各种的值 — 完整列表位于左侧菜单栏下的计算/描述性统计部分的 Pandas 文档。

数据可视化(图表/图形)

数据可视化是一个非常强大的工具 – 它允许你以可理解的格式与其他人分享你获得的见解。毕竟,一张照片值得一千字。SQL 和 Excel 都具有将查询转换为图表和图形的功能。使用 seaborn 和 matplotlib 库,你可以使用 Python 执行相同操作。

有关数据可视化选项的综合的教程 – 我最喜欢的是这个 Github readme document (全部在文本中),它解释了如何在 Seaborn 中构建概率分布和各种各样的图。这应该让你了解 Python 中数据可视化的强大功能。如果你感到不知所措,你可以使用一些解决方案,如Plot.ly,这可能更直观地掌握。

我们不会检查每一个数据可视化选项,只要说使用 Python,可以比任何 SQL 提供的功能具有更强大的可视化功能,必须权衡使用 Python 获得更多的灵活性,以及在 Excel 中通过模板生成图表的简易性。

在这种情况下,我们将建立一个简单的直方图,显示人均 GDP 超过 5 万美元的国家的人均 GDP 分布。

 

有了这个强大的直方图方法 (hist()),我们现在可以生成一个直方图,显示出大部分人均 GDP 在 5 万到 7 万美元之间!

分组和连接数据

在 Excel 和 SQL 中,诸如 JOIN 方法和数据透视表之类的强大工具可以快速汇总数据。

Pandas 和 Python 共享了许多从 SQL 和 Excel 被移植的相同方法。可以在数据集中对数据进行分组,并将不同的数据集连接在一起。你可以看看这里的文档。你会发现,由 Pandas 中的merge 方法提供的连接功能与 SQL 通过 join 命令提供的连接功能非常相似,而 Pandas 还为过去在 Excel 中使用数据透视表的人提供了 pivot table 方法。

我们将制定的人均 GDP 的表格与世界银行的世界发展指数清单进行简单的连接。

首先导入世界发展指数的 .csv文件。

使用 .head() 方法快速查看这个数据集中的不同列。

现在我们完成了,我们可以快速看看,添加了几个可以操作的列,包括不同年份的数据来源。

现在我们来合并数据:

我们现在可以看到,这个表格包含了人均 GDP 列和具有不同列的遍及全国的数据。对于熟悉 SQL join 的用户,你可以看到我们正在对原始 dataframe 的 Country 列进行内部连接。

现在我们有一个连接表,我们希望将国家和人均 GDP 按其所在地区进行分组。

我们现在可以使用 Pandas 中的 group 方法排列按区域分组的数据。

要是我们想看到 groupby 总结的永久观点怎么办?Groupby 操作创建一个可以被操纵的临时对象,但是它们不会创建一个永久接口来为构建聚合结果。为此,我们必须使用 Excel 用户的旧喜爱:数据透视表。幸运的是,Pandas 拥有强大的数据透视表方法。

 

你会看到我们收集了一些不需要的列。幸运的是,使用 Pandas 中的 drop 方法,你可以轻松地删除几列。

 

现在我们可以看到,人均 GDP 根据世界不同地区而不同。我们有一个干净的、包含我们想要的数据的表。

这是一个非常肤浅的分析:你想实际做一个加权平均数,因为每个国家的人均 GDP 不代表一个群体中每个国家的人均 GDP,因为在群体中的人口不同。

事实上,你将要重复我们所有的计算,包括反映每个国家的人口列的方法!看看你是否可以在刚刚启动的 Python notebook 中执行此操作。如果你可以弄清楚,你将会很好地将 SQL 或 Excel 知识转移到 Python 中。


作者:ROGER HUANG

来源:51CTO

相关文章
|
1月前
|
数据采集 数据可视化 数据挖掘
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
174 10
|
15天前
|
SQL 机器学习/深度学习 运维
SQL优化有绝招,使用DAS提升工作效率!完成任务可领取保暖手套!
数据库自治服务(Database Autonomy Service,简称DAS)是一种基于机器学习和专家经验实现数据库自感知、自修复、自优化、自运维及自安全的云服务。数据库自治服务DAS支持自动SQL优化,相比传统的优化方式,能够自动识别问题SQL,生成索引优化建议。
|
19天前
|
数据可视化 数据挖掘 大数据
1.1 学习Python操作Excel的必要性
学习Python操作Excel在当今数据驱动的商业环境中至关重要。Python能处理大规模数据集,突破Excel行数限制;提供丰富的库实现复杂数据分析和自动化任务,显著提高效率。掌握这项技能不仅能提升个人能力,还能为企业带来价值,减少人为错误,提高决策效率。推荐从基础语法、Excel操作库开始学习,逐步进阶到数据可视化和自动化报表系统。通过实际项目巩固知识,关注新技术,为职业发展奠定坚实基础。
|
16天前
|
存储 安全 数据可视化
用Python实现简单的任务自动化
本文介绍如何使用Python实现任务自动化,提高效率和准确性。通过三个实用案例展示:1. 使用`smtplib`和`schedule`库自动发送邮件提醒;2. 利用`shutil`和`os`库自动备份文件;3. 借助`requests`库自动下载网页内容。每个案例包含详细代码和解释,并附带注意事项。掌握这些技能有助于个人和企业优化流程、节约成本。
48 3
|
1月前
|
数据采集 存储 监控
21个Python脚本自动执行日常任务(2)
21个Python脚本自动执行日常任务(2)
106 7
21个Python脚本自动执行日常任务(2)
|
1月前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
58 18
|
1月前
|
数据采集 分布式计算 大数据
构建高效的数据管道:使用Python进行ETL任务
在数据驱动的世界中,高效地处理和移动数据是至关重要的。本文将引导你通过一个实际的Python ETL(提取、转换、加载)项目,从概念到实现。我们将探索如何设计一个灵活且可扩展的数据管道,确保数据的准确性和完整性。无论你是数据工程师、分析师还是任何对数据处理感兴趣的人,这篇文章都将成为你工具箱中的宝贵资源。
|
2月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
149 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
2月前
|
SQL 关系型数据库 MySQL
体验使用DAS实现数据库SQL优化,完成任务可得羊羔绒加厚坐垫!
本实验介绍如何通过数据库自治服务DAS对RDS MySQL高可用实例进行SQL优化,包含购买RDS实例并创建数据库、数据导入、生成并优化慢SQL、执行优化后的SQL语句等实验步骤。完成任务,即可领取羊羔绒加厚坐垫,限量500个,先到先得。
222 13
|
2月前
|
运维 监控 网络安全
自动化运维的崛起:如何利用Python脚本简化日常任务
【10月更文挑战第43天】在数字化时代的浪潮中,运维工作已从繁琐的手工操作转变为高效的自动化流程。本文将引导您了解如何运用Python编写脚本,以实现日常运维任务的自动化,从而提升工作效率和准确性。我们将通过一个实际案例,展示如何使用Python来自动部署应用、监控服务器状态并生成报告。文章不仅适合运维新手入门,也能为有经验的运维工程师提供新的视角和灵感。

热门文章

最新文章