Python數(shù)據(jù)處理的六種方式總結(jié)
前言
在 Python 的數(shù)據(jù)處理方面經(jīng)常會(huì)用到一些比較常用的數(shù)據(jù)處理方式,比如pandas、numpy等等。
今天介紹的這款 Python 數(shù)據(jù)處理的管道數(shù)據(jù)處理方式,通過(guò)鏈?zhǔn)胶瘮?shù)的方式可以輕松的完成對(duì)list列表數(shù)據(jù)的處理。通過(guò)類似于shell編程中的管道符對(duì)處理?xiàng)l件進(jìn)行篩選從而更快速的完成對(duì)數(shù)據(jù)的處理操作。
由于pipe是第三方提供的非標(biāo)準(zhǔn)庫(kù),所以需要使用pip的方式進(jìn)行安裝。
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
關(guān)于pipe提供的數(shù)據(jù)處理函數(shù)主要包含六種,分別是dedup()、traverse()、filter()、groupby()、select()、sort(),通過(guò)函數(shù)間的不同組合可以完成不同的數(shù)據(jù)處理效果。
1、dedup()去重并排序
數(shù)據(jù)去重比較好操作,就是去除一個(gè)列表中的重復(fù)數(shù)據(jù),如果是數(shù)字類型的list列表,可以對(duì)原始值進(jìn)行去重也可以對(duì)其絕對(duì)值進(jìn)行去重操作。
list_ = (
[-6, -5, 0, 1, 5, 5] |
pipe.dedup |
pipe.Pipe(list)
)
pprint(list_)
# [-6, -5, 0, 1, 5]
也可以通過(guò)設(shè)置dedup()函數(shù)的屬性對(duì)絕對(duì)值進(jìn)行去重操作。
list_ = (
[-6, -5, 0, 1, 5, 5] |
pipe.dedup(key=abs) |
pipe.Pipe(list)
)
pprint(list_)
# [-6, -5, 0, 1]
2、traverse()拆分嵌套數(shù)組
為了展示效果,我創(chuàng)建了一個(gè)多重?cái)?shù)組的列表通過(guò)使用traverse()函數(shù)完成拆分。
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]
從結(jié)果發(fā)現(xiàn),已經(jīng)將我們定義的一個(gè)四層的list列表完全的拆分了。
3、filter()數(shù)據(jù)篩選
創(chuàng)建一組list列表數(shù)據(jù)并篩選出列表中的值大于10的數(shù)據(jù)并返回篩選后的列表數(shù)據(jù)。
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()分組運(yùn)算
創(chuàng)建一個(gè)包含屬性姓名、年齡、班級(jí)的list列表,然后可以按照某一個(gè)屬性對(duì)其完成分組。
list_ = (
[
{
'姓名': 'Pytonh',
'年齡': '19',
'班級(jí)': '1710'
},
{
'姓名': 'Pytonh',
'年齡': '20',
'班級(jí)': '1810'
}
] |
pipe.groupby(lambda item: item['姓名']) |
pipe.Pipe(list)
)
pprint(list_)
# [('Pytonh', <itertools._grouper object at 0x003EE6B8>)]
這時(shí),雖然返回了分組的結(jié)果,但是沒(méi)有對(duì)其進(jìn)行運(yùn)算,此時(shí)可以搭配下面的select()函數(shù)完成運(yùn)算。
5、select()遍歷結(jié)果集
使用上一步中分組出來(lái)的數(shù)據(jù)結(jié)果,使用select函數(shù)參與運(yùn)算計(jì)算出姓名為’Python 集中營(yíng)’的結(jié)果有多少。
list_ = (
[
{
'姓名': 'Pytonh ',
'年齡': '19',
'班級(jí)': '1710'
},
{
'姓名': 'Pytonh ',
'年齡': '20',
'班級(jí)': '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()數(shù)據(jù)排序
sort函數(shù)的排序使用相對(duì)于分組來(lái)說(shuō)就更簡(jiǎn)單了,同樣創(chuàng)建一組列表數(shù)據(jù)來(lái)展示效果。
list_ = (
[-1, 2, 5, 7, 9] |
pipe.sort(reverse=True) |
pipe.Pipe(list)
)
pprint(list_)
# [9, 7, 5, 2, -1]
sort函數(shù)的reverse屬性設(shè)置為True的時(shí)候?yàn)榻敌蚺判?,設(shè)置為False時(shí)則為升序排序。
list_ = (
[-1, 2, 5, 7, 9] |
pipe.sort(reverse=False) |
pipe.Pipe(list)
)
pprint(list_)
# [-1, 2, 5, 7, 9]
到此這篇關(guān)于Python數(shù)據(jù)處理的六種方式總結(jié)的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django上使用數(shù)據(jù)可視化利器Bokeh解析
這篇文章主要介紹了Django上使用數(shù)據(jù)可視化利器Bokeh解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
python str字符串轉(zhuǎn)uuid實(shí)例
這篇文章主要介紹了python str字符串轉(zhuǎn)uuid實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
在Python中如何優(yōu)雅地創(chuàng)建表格的實(shí)現(xiàn)
本文主要介紹了在Python中如何優(yōu)雅地創(chuàng)建表格的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01

