python流式数据处理_Python - Toolz - 流式分析(Streaming Analytics)工具

本文介绍了Python的Toolz库,用于流式数据分析,包括使用map、filter、groupby和reduceby等函数进行数据筛选、分组和化简操作。通过实例展示了如何实现SQL的SELECT、WHERE、GROUP BY等操作,并探讨了流式计算在处理大型数据集时的优势和限制。
摘要由CSDN通过智能技术生成

Python - Toolz - 流式分析(Streaming Analytics)工具

21 August 2014

Toolz 可以用于编写分析大型数据流脚本,它支持通用的分析模式,如通过纯函数来对数据进行筛选(Selection),分组(Grouping),化简(Reduction)以及连表(Joining)。这些函数通常可以模拟类似其他数据分析平台(如 SQL 和 Panda)的类似操作行为。

我将使用下面简单的数据集作为演示数据,贯穿全文

>>> # id, name, balance, gender

>>> accounts = [(1, 'Alice', 100, 'F'),

... (2, 'Bob', 200, 'M'),

... (3, 'Charlie', 150, 'M'),

... (4, 'Dennis', 50, 'M'),

... (5, 'Edith', 300, 'F')]

使用 Map 和 Filter 来筛选数据

通过标准函数 map 和 filter 能够完成对列表简单的映射和筛选

SELECT name, balance

FROM accounts

WHERE balance > 150;

下面的函数能够满足 SQL 的 SELECT 和 WHERE 需求

>>> from toolz.curried import pipe, map, filter, get

>>> pipe(accounts, filter(lambda (id, name, balance, gender): balance > 150),

... map(get([1, 2])),

... list)

它使用了 map 和 reduce 的加里化(curried)版本。

当然,这些操作也能很好的支持标准的列表(List)和生成器(Generator)的组合语法。这个语法会经常被使用,并通常被认为非常的 Pythonic

>>> [(name, balance) for (id, name, balance, gender) in accounts

... if balance > 150]

使用 groupby 和 reduceby 完成 Split-apply-combine

我们把 Split-apply-combine 拆分成下面两个概念:

根据一些特征将数据拆分到不同组中

使用聚合函数对每一个分组进行化简

Toolz 支持这种工作流:

简单的内存计算方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值