pandas提升计算效率有哪些方法?
Admin 2021-08-21 群英技术资�
pandas提升计算效率有哪些方法?在Python中我们使用pandas来处理数据是非常方便的,但是一些新手可能对于提升pandas的计算效率的方法不是很了解,对此这篇文章就主要给大家介绍几个pandas提升计算效率的方法�
Pandas是为一次性处理整个行或列的矢量化操作而设计的,循环遍历每个单元格、行或列并不是它的设计用途。所以,在使用Pandas时,你应该考虑高度可并行化的矩阵运算�
尽量使用列号或者行号进行矩阵检索,避免使用for循环�
1.1使用for循环
import os import pandas as pd import datetime path = r'E:\科研文件\shiyan\LZQ\LZQ_all_sampledata.csv' def read_csv(target_csv): target = pd.read_csv(path,header=None,sep=',') return target start_time = datetime.datetime.now() a = read_csv(path) for i in range(10000): b = a.iloc[i] end_time = datetime.datetime.now() print(end_time-start_time)
耗时�0:00:02.455211
1.2使用行号检�
path = r'E:\科研文件\shiyan\LZQ\LZQ_all_sampledata.csv' def read_csv(target_csv): target = pd.read_csv(path,header=None,sep=',') return target start_time = datetime.datetime.now() a = read_csv(path) b = a.iloc[10000] end_time = datetime.datetime.now() print(end_time-start_time)
耗时�0:00:00.464756
2.0 如果必须使用for循环如何提高效率
我们可以做的最简单但非常有价值的加速是使用Pandas的内� .iterrows() 函数�
在上一节中编写for循环时,我们使用� range() 函数。然而,当我们在Python中对大范围的值进行循环时,生成器往往要快得多�
Pandas� .iterrows() 函数在内部实现了一个生成器函数,该函数将在每次迭代中生成一行Dataframe。更准确地说�.iterrows() 为DataFrame中的每一行生�(index, Series)的对(元组)。这实际上与在原始Python中使� enumerate() 之类的东西是一样的,但运行速度要快得多�
生成器(Generators�
生成器函数允许你声明一个行为类似迭代器的函数,也就是说,它可以在for循环中使用。这大大简化了代码,并且比简单的for循环更节省内存�
当你想要处理一个庞大的列表时,比如10亿个浮点数,问题就出现了。使用for循环,在内存中创建了大量的内存huge列表,并不是每个人都有无限的RAM来存储这样的东西�
生成器将创建元素时,仅在需要时将它们存储在内存中。一次一个。这意味着,如果必须创�10亿个浮点数,那么只能一次将它们存储在内存中。Python中的range()函数使用生成器来构建列表�
也就是说,如果你想多次迭代列表并且它足够小以适应内存,那么使用for循环和range函数会更好。这是因为每次访问list值时,生成器和range都会重新生成它们,而range是一个静态列表,并且内存中已存在整数以便快速访问�
2.1使用range
import os import pandas as pd import datetime path = r'E:\科研文件\shiyan\LZQ\LZQ_all_sampledata.csv' def read_csv(target_csv): target = pd.read_csv(path,header=None,sep=',') return target start_time = datetime.datetime.now() a = read_csv(path) for data_row in range(a.shape[0]): b = a.iloc[data_row] end_time = datetime.datetime.now() print(end_time-start_time)
耗时:0:00:07.642816
2.2使用 .iterrows() 代替 range
import os import pandas as pd import datetime path = r'E:\科研文件\shiyan\LZQ\LZQ_all_sampledata.csv' def read_csv(target_csv): target = pd.read_csv(path,header=None,sep=',') return target start_time = datetime.datetime.now() a = read_csv(path) for index,data_row in a.iterrows(): b = data_row end_time = datetime.datetime.now() print(end_time-start_time)
耗时�0:00:03.513161
iterrows()函数极大地提高了速度,但我们还远远没有完成。请始终记住,当使用为向量操作设计的库时,可能有一种方法可以在完全没有for循环的情况下最高效地完成任务�
为我们提供此功能的Pandas功能� .apply() 函数。apply()函数接受另一个函数作为输入,并沿着DataFrame的轴(行、列等)应用它。在传递函数的这种情况下,lambda通常可以方便地将所有内容打包在一起�
关于pandas提升计算效率的方法就介绍到这,上述几种技巧大家在应用pandas时要注意,希望本文对大家学习pandas有帮助,想要了解更多提升pandas计算效率的方法,大家可以继续关注其他文章�
文本转载自脚本之�免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容�
猜你喜欢
这篇文章给大家分享的是关于CNN的内容,CNN也就是卷积神经网络,那么CNN到底有什么用呢?可以解决什么问题呢?CNN的权值共享网络结构使之更类似于生物神经网络,降低了网络模型的复杂度,减少了权值的数量。接下来小编就给大家来详细的介绍一下CNN的基础内容,感兴趣的朋友就继续往下看吧�
python open()方法用于打开一个文件,并返回文件对象,在对文件处理的过程中都需要用到这个函数,如果文件无法打开,会抛出OSError�
python模块重载的方法有哪些?一些新手对于python模块重载的方法不是很了解,对此下面给大家分享几个python模块重载的方法,供大家参考,希望能对大家学习Python有帮助�
在数据分析的过程中通常要对数据进行清洗与处�,而其中比较重要和常见的操作就有对数据进行筛选与查询,下面这篇文章主要给大家介绍了关于如何利用Pandas查询选取数据的相关资�,需要的朋友可以参考下
python中对字符串进行分割,可以用split()方法,其语法表达式为str.split(s, num)[n]。s:表示指定的分隔符,不写的话,默认是空格(� �)。如果字符串中没有给定的分隔符时,则把整个字符串作为列表的一个元素返回�
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所�
增值电信经营许可证 : B1.B2-20140078