Python数据处理的六种方式总结
Python数据挖掘 人气:7前言
在 Python 的数据处理方面经常会用到一些比较常用的数据处理方式,比如pandas、numpy等等。
今天介绍的这款 Python 数据处理的管道数据处理方式,通过链式函数的方式可以轻松的完成对list列表数据的处理。通过类似于shell编程中的管道符对处理条件进行筛选从而更快速的完成对数据的处理操作。
由于pipe是第三方提供的非标准库,所以需要使用pip的方式进行安装。
pip install pipe -i http://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(),通过函数间的不同组合可以完成不同的数据处理效果。
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]
加载全部内容