当前位置: 首页 > 后端技术 > Python

帅到爆炸!使用管道Pipe写Python代码竟然如此简洁

时间:2023-03-25 22:50:21 Python

众所周知,Pytnon非常擅长处理数据,尤其是后期数据的清洗。今天佩森酱就给大家介绍数据处理神器Pipe。什么是Pipe简单来说,Pipe是Python的三方库。通过Pipe,我们可以将一个函数的处理结果传递给另一个函数,这意味着你的代码会非常简洁。使用Pipe需要提前安装,直接使用pip安装即可。pipinstallpipefilterelement类似于filter,在pipe中操作可以过滤可迭代对象中的元素。在[5]中:numbers=[0,1,2,3,4,5]在[6]中:list(numbers|where(lambdax:x%2==0))Out[6]:[0,2,4]action元素类似于map,select操作可以将函数应用到可迭代对象中的每一个元素上。在下面的示例中,我们将列表中的元素加倍。In[8]:list(numbers|select(lambdax:x*2))Out[8]:[0,2,4,6,8,10]当然也可以多个操作组合在一起玩。下面的例子是选择列表中的偶数,将其扩大2倍。不同于filter和map,pipe可以连接多个操作,就像一个水管套管,所以我觉得pipe这个名字也很接地气。在[10]中:list(numbers...:|where(lambdax:x%2==0)...:|select(lambdax:x*2)...:)...:Out[10]:[0,4,8]连接元素操作嵌套列表是很痛苦的。好消息是pipe提供了一个非常友好的接口,只需要链接起来。在[11]中:列表([[1,2],[3,4],[5]]|链)输出[11]:[1,2,3,4,5]在[30]中:列表((1,2,3)|chain_with([4,5],[6]))Out[30]:[1,2,3,4,5,6]In[31]:list((1,2,3)|chain_with([4,5],[6,[7]]))Out[31]:[1,2,3,4,5,6,[7]]如你所见,仅链您可以拆卸一层。如果要拆解多层嵌套,不要慌张,遍历可以轻松搞定。在[12]:list([[1,2],[[[3],[[4]]],[5]]]|traverse)Out[12]:[1,2,3,4,5]结合select得到字典中的一个字段属性集合。在[32]中:fruits=[...:{"name":"apple","price":[2,5]},...:{"name":"orange","price":4},...:{"name":"grape","price":5},...:]In[33]:list(fruits...:|select(lambdafruit:fruit["price"])...:|traverse)...:Out[33]:[2,5,4,5]分组需要对列表中的元素进行分组,可以使用pipe中的groupby来完成。在[26]中:list(numbers...:|groupby(lambdax:'Even'ifx%2==0else'Odd')...:|select(lambdax:{x[0]:list(x[1])})...:))...:Out[26]:[{'偶数':[0,2,4]},{'奇数':[1,3,5]}]同样的,where过滤条件也可以加入select。在[27]中:list(numbers...:|groupby(lambdax:'Even'ifx%2==0else'Odd')...:|select(lambdax:{x[0]:list(x[1]|where(lambdax:x>2))})...:)...:Out[27]:[{'Even':[4]},{'Odd':[3,5]}]行列转换在数据处理中经常用到,尤其是在使用DataFrame时,使用流水线代码来获取行列转换。在[24]中:[[1,2,3],[4,5,6],[7,8,9]]|transposeOut[24]:[(1,4,7),(2,5,8),(3,6,9)]删除元素去重列表也是一个常用的操作。在管道中使用dedup来删除重复列表。In[28]:list([1,1,2,2,3,3,1,2,3]|dedup)Out[28]:[1,2,3]与dedup不同,uniq只会保留一个对于连续重复的元素,不连续的重复元素不过滤。In[29]:list([1,1,2,2,3,3,1,2,3]|uniq)Out[29]:[1,2,3,1,2,3]今天总结一下你引入了一个用于数据处理的神器。使用管道可以将繁琐的操作压缩成几行甚至一行代码,提高了代码的可读性和整洁度。太开心了~以上就是本次分享的全部内容,如果觉得文章还不错,欢迎关注公众号:Python编程学习圈,日常干货分享,发“J”也能收到很多学习资料。或者去编程学习网了解更多编程技术知识。