Pandas初学者代码优化指南

本文探讨了Pandas初学者在数据分析时如何优化代码,从避免原始循环到使用iterrows()、apply(),再到Pandas Series和NumPy数组的矢量化。通过Haversine公式计算酒店和特定坐标间距离的例子,展示了不同方法的效率差异,强调了矢量化和NumPy数组在提升性能方面的优势。
摘要由CSDN通过智能技术生成

如果你用Python语言做过任何的数据分析,那么可能会用到Pandas,一个由Wes McKinney写的奇妙的分析库。通过赋予Python数据帧以分析功能,Pandas已经有效地把Python和一些诸如R或者SAS这样比较成熟的分析工具置于相同的地位。

不幸的是,在早期,Pandas因“慢”而声名狼藉。的确,Pandas代码不可能达到如完全优化的原始C语言代码的计算速度。然而,好消息是,对于大多数应用程序来说,写的好的Pandas代码已足够快;Pandas强大的功能和友好的用户体验弥补了其速度的缺点。

加QQ群813622576或vx:tanzhouyiwan免费领取Python学习资料

在这篇文章中,我们将回顾应用于Pandas DataFrame函数的几种方法的效率,从最慢到最快:

1. 在用索引的DataFrame行上的Crude looping
2. 用iterrows()循环
3. 用 apply()循环
4. Pandas Series矢量化
5. NumPy数组矢量化

对于我们的实例函数,将使用Haversine(半正矢)距离公式。函数取两点的经纬度,调整球面的曲率,计算它们之间的直线距离。这个函数看起来像这样:

为了在真实数据上测试函数,我们用一个包含纽约所有酒店坐标的数据集,该数据来自Expedia开发者网站。要计算每一个酒店和一个样本集坐标之间的距离(这恰好属于在纽约市名为布鲁克林超级英雄供应店的一个梦幻般的小商店)

大家可以下载数据集,Jupyter notebook(是一个交互式笔记本,支持运行 40 多种编程语言)包含了用于这篇博客的函数,请点击这里下载。

这篇文章基于我的PyCon访谈,大家可以在这里观看。

Pandas中的Crude looping,或者你永远不应该这么做

首先,让我们快速回顾一下Pandas数据结构的基本原理。Pandas的基本结构有两种形式:DataFrameSeries。一个DataFrame是一个二维数组标记轴,很多功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值