Python:使用管道机制pipe处理数据

简介:Pytnon数据处理,特别是后期数据的清洗,分类归档工作非常擅长。pipe是一个第三方库,通过 pipe 可以将一个函数的处理结果传递给另外一个函数,使得代码简洁、便于阅读。

安装:

pip install pipe 

主要功能方法:

select: 将函数应用于可迭代对象 
take: 从给定的迭代中产生给定数量的元素,就像head 在 shell 脚本中一样。
where: 只产生给定迭代的匹配项
chain: 链接一系列可迭代对象,只能最外层。
chain_with: 像 itertools.chain 一样,产生给定迭代的元素,然后产生其参数的元素
traverse: 递归展开可迭代对象
groupby: 元素进行分组
Pipe: 略
dedup: key使用给定函数(如果提供)删除重复值。
islice: 只是itertools.islice作为管道的功能
skip: 从给定的迭代中跳过给定数量的元素,然后产生
transpose: 转置矩阵的行和列。
tee: tee 输出到标准输出并产生未更改的项目,对于逐级调试管道很有用

案例源码:

# -*- coding: utf-8 -*-
# time: 2022/6/8 14:07
# file: pipe_demo.py
# author: tom
# 公众号: 玩转测试开发
from itertools import count
from collections import deque
from pipe import select, take, where, traverse, chain, chain_with, groupby, Pipe, dedup, islice, skip, transpose, tee

# select: 将函数应用于可迭代对象 \ take: 从给定的迭代中产生给定数量的元素,就像head 在 shell 脚本中一样。
r1 = sum(count() | select(lambda x: x ** 2) | take(10))
print(r1)  # 285

# where: 只产生给定迭代的匹配项
r2 = list([1, 2, 3] | where(lambda x: x % 2 == 0))
print(r2)  # [2]

# chain: 链接一系列可迭代对象,只能最外层。
r3 = list([[1, 2, [3]], [4, 5]] | chain)
print(r3)  # [1, 2, [3], 4, 5]

# chain_with: 像 itertools.chain 一样,产生给定迭代的元素,然后产生其参数的元素
r4 = list((1, 2, 3) | chain_with([4, 5], [6]))
print(r4)  # [1, 2, 3, 4, 5, 6]

# traverse: 递归展开可迭代对象
r5 = list([[1, 2, [3]], [4, 5]] | traverse)
print(r5)  # [1, 2, 3, 4, 5]

# groupby: 元素进行分组
r6 = list([-2, -1, 0, 1, 2] | groupby(lambda x: "positive" if abs(x) == x else "negtive") | select(lambda x: {x[0]: list(x[1])}))
print(r6)  # [{'negtive': [-2, -1]}, {'positive': [0, 1, 2]}]

# Pipe: 略
r7 = list(range(100) | Pipe(deque)(3))
print(r7)  # [97, 98, 99]

# dedup: key使用给定函数(如果提供)删除重复值。
r8 = list(list([-1, 0, 0, 0, 1, 2, 3] | dedup))
r9 = list(list([-1, 0, 0, 0, 1, 2, 3] | dedup(abs)))
print(r8)  # [-1, 0, 1, 2, 3]
print(r9)  # [-1, 0, 2, 3]

# islice: 只是itertools.islice作为管道的功能
r10 = list((1, 2, 3, 4, 5, 6, 7, 8, 9) | islice(2, 8, 2))
print(r10)  # [3, 5, 7]

# skip: 从给定的迭代中跳过给定数量的元素,然后产生
r11 = list((1, 2, 3, 4, 5) | skip(2))
print(r11)  # [3, 4, 5]

# transpose: 转置矩阵的行和列。
r12 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] | transpose
print(r12)  # [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

# tee: tee 输出到标准输出并产生未更改的项目,对于逐级调试管道很有用
r13 = list(["1", "2"] | tee)
print(r13)  # ['1', '2']

微信公众号:玩转测试开发
欢迎关注,共同进步,谢谢!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值