Pandas 系列 | 所有从爆炸函数开始
前段时间部门有位大数据开发的共事到职了,在他和其余开发的共事进行工作我的项目交接的时候,我去旁听了下,因为波及到一些公司业务逻辑的问题。当讲到某个我的项目的时候,他谈到:
这个业务逻辑是…….,我用 Hive 中的 爆炸函数 实现了这个性能。
过后他举了一个简略的例子来阐明爆炸函数的性能,我当场就记下了这个函数名称:爆炸函数。Hive 在我的工作中应用的并不多,于是我在想:Pandas 可能实现这个性能吗?
爆炸函数性能
爆炸函数到底实现的是什么需要呢?我回顾一下过后的例子:
当初有一份数据,蕴含订单编号和订单中商品价格(每个订单 3 个商品),应用 hive 中的爆炸函数之后变成如下图所示的样子:相当于是实现了 列转成行 的性能。这样后续就能进行各种聚合操作。
Hive 中实现爆炸性能有两个函数,可自行搜寻理解:
- explode(col)
- lateral view:侧写函数
pandas 实现
具体需要
碰巧最近有一个需要就用到爆炸函数的性能,不过是用 pandas 实现的。在上面表格的右边局部是每个订单的销售记录,蕴含销售员、跟单员、结单员,他们三者不肯定是同一个人。
当初须要统计每个员工的销售业绩。销售业绩也就是指员工参加了多少订单。统计每个员工的销售业绩:
- 有作为销售员、跟单员、结单员的任意一种,即可阐明参加了该订单的销售;
- 同一个订单中,一个员工参加屡次只记为一次
爆炸函数到底实现的是什么性能呢?左边就是咱们想要的后果:
- 张三:加入了订单号 1 - 销售员,订单号 2 - 跟单员、结单员,数量 2
- 李四:加入了订单号 1 - 跟单员、结单员,订单 2 - 销售员,订单号 3 - 跟单员,数量 3
- 王五:加入了订单号 3 - 销售员、结单员,数量 1
解决过程
1、在 pandas 模仿了一份数据如下:
2、生成一个新字段:员工
3、施行爆炸性能,应用的是 pandas 中的 explode
函数,失去新数据:能够看到每个订单号会屡次呈现
4、统计后果
这样依据不同的字段,比方 员工、销售员、跟单员 等就能统计不同的业绩
什么是 pandas
pandas 中文叫做熊猫,它是 Python 的外围数据处理和数据分析的第三方库,它领有疾速、灵便、明确的数据结构。
Pandas 是一个弱小的剖析结构化数据的工具集;它的应用根底是 Numpy(另一个 Python 库,提供高性能的矩阵运算),可能用于数据挖掘和数据分析,同时也提供数据荡涤性能。
Pandas 有什么用
pandas 的具体应用当前会造成连载系列,敬请期待!
本文结语:拥抱 pandas,辞别 Excel!