Pandas循环提速7万多倍!Python数据分析攻略

本文展示了如何使用Pandas、Numpy等工具显著提高Python数据分析的效率。通过实例比较了标准循环、iterrows()、apply()、Pandas向量化和Numpy向量化处理数据的速度,揭示了Numpy向量化可以实现7万多倍的性能提升。文章还提供了Python技术学习路线和资源,帮助读者提升数据分析技能。
摘要由CSDN通过智能技术生成

用Python和Pandas进行数据分析,很快就会用到循环。

但在这其中,就算是较小的DataFrame,使用标准循环也比较耗时。

遇到较大的DataFrame时,需要的时间会更长,会让人更加头疼。

现在,有人忍不了了。他是一位来自德国的数据分析师,名叫Benedikt Droste。

他说,当自己花了大半个小时等待代码执行的时候,决定寻找速度更快的替代方案。

在给出的替代方案中,使用Numpy向量化,与使用标准循环相比,速度提升了71803倍。

在这里插入图片描述
他是怎么实现的?我们一起来看看~

标准循环处理3年足球赛数据:20.7秒

DataFrame是具有行和列的Pandas对象。如果使用循环,需要遍历整个对象。

Python不能利用任何内置函数,而且速度很慢。在Benedikt Droste的提供的示例中,是一个包含65列和1140行的Dataframe,包含了2016-2019赛季的足球赛结果。

需要解决的问题是:创建一个新的列,用于指示某个特定的队是否打了平局。可以这样开始:

def soc_loop(leaguedf,TEAM,):
 leaguedf['Draws'] = 99999
 for row in range(0, len(leaguedf)):
 if ((leaguedf['HomeTeam'].iloc[row] == TEAM) & (leaguedf['FTR'].iloc[row] == 'D')) | \
 ((leaguedf['AwayTeam'].iloc[row] == TEAM) & (leaguedf['FTR'].iloc[row] == 'D')):
 leaguedf['Draws'].iloc[row] 
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值