10个方法:用Python执行SQL、Excel常见任务_python util

使用 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 中,不需要知道很多关于正则表达式的知识,但它们是一个强大的工具,可用于匹配和替换某些字符串或子字符串。如果你想了解更多,请参考以下内容。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

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

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

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

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

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

3.快速查看数据

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

4.重命名列

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

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5.删除列

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

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

6.在列中转换数据类型

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

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

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

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

7.选择/过滤数据

任何数据分析师的基本需求是将大型数据集分割成有价值的结果。为了做到这一点,你必须检查一部分数据:这对选择和过滤数据是非常有帮助的。在 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 中的过滤视图。

8.用计算机来处理数据

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

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

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
f86381401c05e862fe4e9.png)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 12
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在NiFi中使用ExecuteScript执行Python脚本获取数据库连接,执行SQL,可以按照以下步骤进行操作: 1. 在NiFi中创建一个ExecuteScript处理器,并选择要执行的脚本语言为Python。 2. 编写Python脚本,获取数据库连接,执行SQL并返回结果。以下是一个简单的示例: ```python from org.apache.nifi.processor.io import StreamCallback from org.apache.nifi.processor.util import StandardCharsets from org.apache.nifi.processor import * from java.io import BufferedReader, InputStreamReader import java.sql class PyStreamCallback(StreamCallback): def __init__(self): pass def process(self, inputStream, outputStream): connection = java.sql.DriverManager.getConnection('jdbc:mysql://localhost:3306/test', 'username', 'password') statement = connection.createStatement() resultSet = statement.executeQuery('SELECT * FROM table') while resultSet.next(): value = resultSet.getString('column_name') outputStream.write(bytearray(value, StandardCharsets.UTF_8)) flowFile = session.get() if flowFile != None: flowFile = session.write(flowFile, PyStreamCallback()) session.transfer(flowFile, REL_SUCCESS) ``` 在这个脚本中,我们首先导入了需要使用的Java类,包括StreamCallback、StandardCharsets、Processor等。然后定义了一个名为PyStreamCallback的类,继承自StreamCallback,用于处理输入流和输出流。 在process方法中,我们使用Java的JDBC API获取数据库连接,执行SQL语句,并将结果输出到输出流中。最后,我们使用NiFi的API将处理后的流传输到下一个处理器。 3. 配置ExecuteScript处理器的属性,包括Python解释器路径、脚本文件路径等。 4. 运行NiFi流程,执行Python脚本获取数据库连接,执行SQL并返回结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值