前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pandas每天一题-题目7:批量列计算

pandas每天一题-题目7:批量列计算

作者头像
咋咋
发布2021-09-01 14:21:38
6860
发布2021-09-01 14:21:38
举报
文章被收录于专栏:数据大宇宙

这是一个关于 pandas 从基础到进阶的练习题系列,来源于 github 上的 guipsamora/pandas_exercises 。这个项目从基础到进阶,可以检验你有多么了解 pandas。

我会挑选一些题目,并且提供比原题库更多的解决方法以及更详尽的解析

计划每天更新一期,希望各位小伙伴先自行思考,再查看答案。如果对你有帮助,记得转发推荐给你的好友!

上期文章:pandas每天一题-题目6:文本转数值

后台回复"数据",可以下载本题数据集

如下数据:

数据描述:

  • 此数据是订单明细表。一个订单会包含很多明细项,表中每个样本(每一行)表示一个明细项
  • order_id 列存在重复
  • quantity 是明细项数量

需求:请计算总收入(单价乘以数量的总和)

下面是答案了


方式1

以下是原项目解法:

代码语言:javascript
复制
df = pd.read_csv('chipotle.tsv',sep='\t',converters={'item_price': lambda x: float(x[1:-1])})

revenue = (df['quantity']* df['item_price']).sum()
print('Revenue was: $' + str(np.round(revenue,2)))
代码语言:javascript
复制
Revenue was: $39237.02
  • 行1:请看上期内容讲解
  • 行3:2列相乘,得到结果仍然是 Series,因此可以使用 sum 方法求和

方式2

难道这还有其他方式实现?

代码语言:javascript
复制
revenue = df.eval('quantity * item_price').sum()
print('Revenue was: $' + str(np.round(revenue,2)))
代码语言:javascript
复制
Revenue was: $39237.02
  • 行1:df.eval 可以动态解析表达式

点评:

  1. pandas 官方测试中,当数据量较大时(10万行以上),这种方式会得到一定优化加速(使用numba)

推荐阅读:

Python数据处理,pandas 统计连续停车时长

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据大宇宙 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 方式1
  • 方式2
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档