👇我的小册 45章教程:(小白零基础用Python量化股票分析小册) ,原价299,限时特价2杯咖啡,满100人涨10元。
转自:数据STUDIO
最近在尝试使用 Python 中的循环,并意识到在循环中使用“iloc”/“loc”需要花费大量时间来执行。下一个问题是为什么“loc”花费的时间太长,以及“loc”的替代方案是什么?
本文中,将通过一些实际例子来回答这些问题。
什么是 loc?
loc[]
函数是一个 pandas 函数,用于使用行索引和列名访问 DataFrame 内的值。当您知道要访问哪一行和哪一列时,可以使用它。
通过一个例子来理解 loc
。我们有以下名为 df 的 pandas DataFrame(如下所示),我们想要访问列“a”中第二行对应的值,即 10。
我们可以使用以下代码访问该值:
##df.loc[index, column_name]
df.loc[1,'a']
### 输出:10
类似地,iloc 用于使用索引和列号访问值。
##df.loc[index, column_number]
df.iloc[1,0]
### 输出:10
因此,loc 函数用于使用列名访问列,而iloc 函数用于使用列索引访问列。
如果在 Python 中将 loc/iloc 与循环一起使用会发生什么?
想象一下,我们想要在 DataFrame df 中添加一个新列“c”,其值等于“a”列和“b”列的值之和。
使用“for”循环,我们可以遍历我们的 DataFrame 并使用 loc
函数添加新列“c”,如下所示:
import timestart = time.time()
# 遍历 DataFrame df
for index, row in df.iterrows():
df.loc[index, 'c' ] = row.a + row.b
end = time.time()
print (end - start)
### 所用时间:2414 秒
使用 loc
进行迭代和更新值所需的时间大约为40 分钟,这是一个很长的时间。
替代方案:使用“at”代替“loc”
我们可以通过用“at”替换“loc”(或用“iat”替换“iloc”)来执行相同的操作,如下所示。
import timestart = time.time()
# 遍历 DataFrame
for index, row in df.iterrows():
df.at[index, 'c' ] = row.a + row.b
end = time.time()
print (end - start)
### 所用时间:40 秒
该代码执行时间约为0.7 分钟,比 loc 函数所用时间快 60 倍。
“loc”与“at”在运行时间上为何存在差异?
‘at’/‘iat’
at
用于iat
访问标量,即 DataFrame 中的单个元素,如下所示:
df.at[2,'a']
### 输出:22
df.iat[2,0]
### 输出:22
如果我们尝试使用以下方式访问系列at
和iat
,则会引发错误,如下所示:
## 这将导致错误,因为我们试图访问多行
df.at[:3,'a']
### 输出:ValueError: 基于整数索引的索引只能有整数索引器
‘loc’/‘iloc’
loc
旨在iloc
同时访问多个元素(系列/数据框),可能执行矢量化操作。
df.loc[:3,'a']
### 输出
##0 26
##1 10
##2 22
##3 22
df.loc[:3,0]
### 输出
##0 26
##1 10
##2 22
##3 22
因为,at
用于访问缩放器值,所以与loc
用于访问系列/数据帧相比,它是轻量级的(实现速度很快),因此占用更多的空间和时间。
最后推荐一下我们团队写的量化小册的内容,45篇内容!从Python安装,入门,数据分析,爬取股票基金的历史+实时数据,以及如何写一个简单量化策略,策略回测,如何看资金曲线统统都有介绍!非常超值!
欢迎订阅:原价299 早鸟价2杯咖啡钱,即可永久阅读。满500人又要涨价了,现在的价格非常非常低,只要2杯奶茶,就可以终身订阅+课程源码,还有永久陪伴群。48小时无理由退款,放心食用!
往期推荐
量化: 如何用Python爬取创业板历史+实时股票数据!|实战股票分析篇利用Pandas 9招挖掘五粮液股价!|实战股票数据分析篇 Pandas滚动操作 |量化股票第一步,用Python画股票K线,双均线图,可视化你的股票数据!|如何用Python爬取全部800多只ETF基金数据!|如何用Python写一个双均线策略 |如何用Python开发一个多策略机器人!上篇!|Python量化系列-用布林策略买五粮液能赚多少钱?|只要4秒钟!用Python 获取上证指数34年的历史日线数据!
入门: 最全的零基础学Python的问题 | 零基础学了8个月的Python | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 | 从万众期待到口碑扑街!唐探3令人失望 | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!| 再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸