推荐一种更加便捷的 Python 数据处理方式

在 Python 的数据处理方面经常会用到一些比较常用的数据处理方式,比如pandas、numpy等等。

今天介绍的这款 Python 数据处理的管道数据处理方式,通过链式函数的方式可以轻松的完成对list列表数据的处理。通过类似于shell编程中的管道符对处理条件进行筛选从而更快速的完成对数据的处理操作。

由于pipe是第三方提供的非标准库,所以需要使用pip的方式进行安装。

pip install pipe -i https://pypi.tuna.tsinghua.edu.cn/simple/

# Importing the pipe module.
import pipe

# Importing the pprint function from the pprint module.
from pprint import pprint

关于pipe提供的数据处理函数主要包含六种,分别是dedup()、traverse()、filter()、groupby()、select()、sort(),通过函数间的不同组合可以完成不同的数据处理效果。

技术提升

文章源码、数据、技术提升都可轻松获取,本文来自粉丝群小伙伴授权分享,可以加入我们,目前开通了技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式、添加微信号:dkl88191,备注:来自CSDN +python
方式、微信搜索公众号:Python学习与数据挖掘,后台回复:加群

1、dedup()去重并排序

数据去重比较好操作,就是去除一个列表中的重复数据,如果是数字类型的list列表,可以对原始值进行去重也可以对其绝对值进行去重操作。

list_ = (
        [-6, -5, 0, 1, 5, 5] |
        pipe.dedup |
        pipe.Pipe(list)
)

pprint(list_)

# [-6, -5, 0, 1, 5]

也可以通过设置dedup()函数的属性对绝对值进行去重操作。

list_ = (
        [-6, -5, 0, 1, 5, 5] |
        pipe.dedup(key=abs) |
        pipe.Pipe(list)
)

pprint(list_)

# [-6, -5, 0, 1]

2、traverse()拆分嵌套数组

为了展示效果,我创建了一个多重数组的列表通过使用traverse()函数完成拆分。

list_ = (
        [-1, 0, [2, 4, [5, 6, [3, 2, 5]]]] |
        pipe.traverse |
        pipe.Pipe(list)
)

pprint(list_)

# [-1, 0, 2, 4, 5, 6, 3, 2, 5]

从结果发现,已经将我们定义的一个四层的list列表完全的拆分了。

3、filter()数据筛选

创建一组list列表数据并筛选出列表中的值大于10的数据并返回筛选后的列表数据。

list_ = (
        [-1, 0, 1, 2, 4, 6, 10, 11, 12, 15, 17, 18] |
        pipe.filter(lambda a: a > 10) |
        pipe.Pipe(list)
)

pprint(list_)

# [11, 12, 15, 17, 18]

4、groupby()分组运算

创建一个包含属性姓名、年龄、班级的list列表,然后可以按照某一个属性对其完成分组。

list_ = (
        [
            {
                '姓名': 'Pytonh',
                '年龄': '19',
                '班级': '1710'
            },
            {
                '姓名': 'Pytonh',
                '年龄': '20',
                '班级': '1810'
            }
        ] |
        pipe.groupby(lambda item: item['姓名']) |
        pipe.Pipe(list)
)

pprint(list_)

# [('Pytonh', <itertools._grouper object at 0x003EE6B8>)]

这时,虽然返回了分组的结果,但是没有对其进行运算,此时可以搭配下面的select()函数完成运算。

5、select()遍历结果集

使用上一步中分组出来的数据结果,使用select函数参与运算计算出姓名为’Python 集中营’的结果有多少。

list_ = (
        [
            {
                '姓名': 'Pytonh ',
                '年龄': '19',
                '班级': '1710'
            },
            {
                '姓名': 'Pytonh ',
                '年龄': '20',
                '班级': '1810'
            }
        ] |
        pipe.groupby(lambda item: item['姓名']) |
        pipe.select(lambda groups: {groups[0]: len(list(groups[1]))}) |
        pipe.Pipe(list)
)

pprint(list_)

# [{'Pytonh ': 2}]

6、sort()数据排序

sort函数的排序使用相对于分组来说就更简单了,同样创建一组列表数据来展示效果。

list_ = (
        [-1, 2, 5, 7, 9] |
        pipe.sort(reverse=True) |
        pipe.Pipe(list)
)

pprint(list_)

# [9, 7, 5, 2, -1]

sort函数的reverse属性设置为True的时候为降序排序,设置为False时则为升序排序。

list_ = (
        [-1, 2, 5, 7, 9] |
        pipe.sort(reverse=False) |
        pipe.Pipe(list)
)

pprint(list_)

# [-1, 2, 5, 7, 9]
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值