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