文章目錄
- 前言
- 1、dedup()去重并排序
- 2、traverse()拆分嵌套數組
- 3、filter()數據篩選
- 4、groupby()分組運算
- 5、select()遍歷結果集
- 6、sort()數據排序
- 總結
前言
在 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(),通過函數間的不同組合可以完成不同的數據處理效果。
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\]
總結
提示:這里對文章進行總結:
例如:以上就是今天要講的內容,本文僅僅簡單介紹了pandas的使用,而pandas提供了大量能使我們快速便捷地處理數據的函數和方法。