python快速导入数据库用哪个 Python使用Pandas读取数据库很慢,应该如何提速?
Python使用Pandas读取数据库很慢,应该如何提速?
谢谢你邀请我!
熊猫编程库是数据科学社区的天赐之物。无论你问哪个数据科学家,他们是如何用Python处理他们的数据集的,他们无疑都会谈到熊猫。
Pandas是一个伟大的编程库的缩影。:简单、直观、多才多艺。
但是,要把数据科学家的熊猫数据框架计算上千次甚至上百万次,仍然是一个挑战。你可以 不要只是在编写Python for循环语句时输入数据,并期望在合理的时间内处理数据。
Pandas被设计为一次处理整个行或列的矢量化,在每个单元格、行或列中循环,但它不是为使用库而设计的。所以在使用熊猫的时候,要考虑高度并行化的矩阵运算方法。
本指南将教你如何使用熊猫,这是一个旨在使用和思考的矩阵操作。在这个过程中,我将向您展示一些实用且省时的技巧和诀窍,它们将使您的熊猫代码运行得比那些可怕的Python for loops更快!
我们的设置
在本教程中,我们将使用经典的鸢尾花数据集。让 开始滚动,用seaborn加载数据集,输入前5行。
现在让我们 让我们构建一个基线,并用Python for loop测量我们的速度。我们将通过循环遍历每一行来设置要在数据集上执行的计算,然后测量整个操作的速度。这将为我们提供一个基线,看看我们的新优化能在多大程度上帮助我们摆脱困境。
在上面的代码中,我们创建了一个基本函数,它使用了If-Else语句。我们编写一个for循环,通过循环dataframe对每一行应用一个函数,然后测量循环的总运行时间。
在我的i7-8700k电脑上,循环5次平均需要0.01345秒。
循环语句。iterrows()
这是最简单但最有价值的方法,它可以加快。熊猫内置iterrows()函数。
在上一节编写for循环时,我们使用了range()函数。然而,当我们在Python中循环大量的值时,生成器通常要快得多。在本文中,您可以阅读更多关于发电机如何工作并使其运行更快的信息。
潘朵拉 s. iterrows()函数在内部实现了一个生成器函数,它将在每次迭代时生成一行Dataframe。更具体地说,。iterrows()为DataFrame中的每一行生成(index,Series)元组。这实际上与原始Pyt中的相同类似enumerate()这样的东西在hon中也是一样的,但是运行起来要快得多。
接下来,我们修改了代码以使用。iterrows()而不是常规的for循环。在我上一节测试的同一台机器上,平均运行时间是0.005892秒——快了2.28倍!
使用。apply()完全删除循环。
的。iterrows()函数给我们带来了巨大的速度,但是我们还远远没有完成。永远记住,当使用为向量操作设计的库时,可能有一种方法可以在不使用for循环的情况下最有效地完成任务。
熊猫函数为我们提供了这个函数。apply()函数。Our()接受另一个函数作为它的输入,并沿着轴(行、列等)应用它。)的数据帧。以我们的传递函数为例,lambda通常可以方便地将所有东西打包在一起。
在下面的代码中,我们用。应用()和lambda函数来封装我们想要的计算。在我的机器上,这段代码的平均运行时间是0.0020897秒,比我们原来的for循环快6.44倍。
Apply()之所以这么快,是因为它在内部尝试了Cython迭代器。如果你的函数恰好是为Cython优化的,那么。apply()会给你带来更快的速度。一个额外的好处是,使用内置函数可以生成更干净、更易读的代码。
最后
正如我前面提到的,如果您使用的是为矢量化而设计的库,您应该总是寻找一种不使用for循环的计算方法。
同样,也有很多这样设计的库,包括熊猫,会有方便的内置函数,可以进行你要找的精确计算,而且会更快。
的。熊猫的cut()函数定义了一组bin作为输入,这些bin定义了If-Else的每个范围和每组标签,这些标签定义了每个范围返回的值。然后,它执行与我们使用compute_class()函数手工编写的操作完全相同的操作。
查看下面的代码以了解如何操作。cut()有效。我们又一次获得了代码更清晰、可读性更好的好处。最后是。cut()函数平均运行0.001423秒,比原来的for循环快9.39倍!
更多关于人工智能的资讯、深度报道、访谈,欢迎关注AI。不管你是小白还是大神,你想要的在这里都有!
电脑能同时安装python数据库和java数据库么?
数据库中没有语言区分。
常用的数据库有mysql、oracle等。
你只需要在电脑上安装一个数据库,那么python和jav。可以使用。
It 只是连接到数据库的方法不同。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。