日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python应用实战-Clumper库 | Groupby具体案例用法

發(fā)布時間:2023/12/2 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python应用实战-Clumper库 | Groupby具体案例用法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Agg

聚合描述性統(tǒng)計方法

agg如下圖,可以理解成三個步驟,即group->split->summary

常用的描述性統(tǒng)計函數(shù)有:mean、count、unqiue、n_unique、sum、min和max

求學生的平均成績、最優(yōu)和最差成績

from?clumper?import?Clumpergrade_dicts?=?[{'gender':?'男',?'grade':?98,?'name':?'張三'},????{'gender':?'女',?'grade':?88,?'name':?'王五'},????{'gender':?'女',?'grade':?99,?'name':?'趙六'},????{'gender':?'男',?'grade':?58,?'name':?'李四'}](Clumper(grade_dicts)?.agg(mean_grade=('grade',?'mean'),??????max_grade=('grade',?'max'),??????min_grade=('grade',?'min'))?.collect() ) [{'mean_grade': 85.75, 'max_grade': 99, 'min_grade': 58}]

求男生和女生各自的平均成績、最優(yōu)和最差成績

from?clumper?import?Clumpergrade_dicts?=?[{'gender':?'男',?'grade':?98,?'name':?'張三'},????{'gender':?'女',?'grade':?88,?'name':?'王五'},????{'gender':?'女',?'grade':?99,?'name':?'趙六'},????{'gender':?'男',?'grade':?58,?'name':?'李四'}](Clumper(grade_dicts)?.group_by('gender')?.agg(mean_grade=('grade',?'mean'),??????max_grade=('grade',?'max'),??????min_grade=('grade',?'min'))?.collect()) [{'gender': '男', 'mean_grade': 78, 'max_grade': 98, 'min_grade': 58}, {'gender': '女', 'mean_grade': 93.5, 'max_grade': 99, 'min_grade': 88}]

Collect

一般Clumper函數(shù)返回的結果顯示為Clumper類,是看不到具體內容的。

collect作用主要是展開顯示。

剔除重復

剔除重復內容

from?clumper?import?Clumper data?=?[{"a":?1},?{"a":?2},?{"a":?2}](Clumper(data)?.drop_duplicates()?.collect()? ) [{'a': 1}, {'a': 2}]

什么是Group?

from?clumper?import?Clumperlist_dicts?=?[{'a':?6,?'grp':?'a'},{'a':?2,?'grp':?'b'},{'a':?7,?'grp':?'a'},{'a':?9,?'grp':?'b'},{'a':?5,?'grp':?'a'} ](Clumper(list_dicts).group_by('grp') ) <Clumper groups=('grp',) len=5 @0x103cb0290>

當前的group以grp作為關鍵詞

現(xiàn)在經過?.group_by('grp')操作后,說明你對每個grp組感興趣。具體一點,一個組是{'grp': 'a'}, 另一個組是{'grp': 'b'}.

Agg

without groups

from?clumper?import?Clumperlist_dicts?=?[{'a':?6,?'grp':?'a'},{'a':?2,?'grp':?'b'},{'a':?7,?'grp':?'a'},{'a':?9,?'grp':?'b'},{'a':?5,?'grp':?'a'} ](Clumper(list_dicts).agg(s=('a',?'sum'),m=('a',?'mean')).collect()) [{'s': 29, 'm': 5.8}]

with groups

分別計算組grp=a、組grp=b的sum和mean

from?clumper?import?Clumperlist_dicts?=?[{'a':?6,?'grp':?'a'},{'a':?2,?'grp':?'b'},{'a':?7,?'grp':?'a'},{'a':?9,?'grp':?'b'},{'a':?5,?'grp':?'a'} ](Clumper(list_dicts).group_by('grp').agg(s=('a',?'sum'),m=('a',?'mean')).collect()) [{'grp': 'a', 's': 18, 'm': 6}, {'grp': 'b', 's': 11, 'm': 5.5}]

agg內置的統(tǒng)計函數(shù)名

內置的統(tǒng)計函數(shù),可直接通過字符串調用

{"mean":?mean,"count":?lambda?d:?len(d),"unique":?lambda?d:?list(set(d)),"n_unique":?lambda?d:?len(set(d)),"sum":?sum,"min":?min,"max":?max,"median":?median,"var":?variance,"std":?stdev,"values":?lambda?d:?d,"first":?lambda?d:?d[0],"last":?lambda?d:?d[-1], }

Transform

.transform()與.agg()類似。主要的區(qū)別是transform處理過程中,記錄數(shù)和字段數(shù)不會出現(xiàn)壓縮。

without groups

from?clumper?import?Clumperdata?=?[{"a":?6,?"grp":?"a"},????{"a":?2,?"grp":?"b"},????{"a":?7,?"grp":?"a"},????{"a":?9,?"grp":?"b"},????{"a":?5,?"grp":?"a"}](Clumper(data)?.transform(s=("a",?"sum"),????????????u=("a",?"unique"))?.collect()) [{'a': 6, 'grp': 'a', 's': 29, 'u': [2, 5, 6, 7, 9]}, {'a': 2, 'grp': 'b', 's': 29, 'u': [2, 5, 6, 7, 9]}, {'a': 7, 'grp': 'a', 's': 29, 'u': [2, 5, 6, 7, 9]}, {'a': 9, 'grp': 'b', 's': 29, 'u': [2, 5, 6, 7, 9]}, {'a': 5, 'grp': 'a', 's': 29, 'u': [2, 5, 6, 7, 9]}]

with groups

from?clumper?import?Clumperdata?=?[{"a":?6,?"grp":?"a"},{"a":?2,?"grp":?"b"},{"a":?7,?"grp":?"a"},{"a":?9,?"grp":?"b"},{"a":?5,?"grp":?"a"} ](Clumper(data).group_by("grp").transform(s=("a",?"sum"),u=("a",?"unique")).collect() ) [{'a': 6, 'grp': 'a', 's': 18, 'u': [5, 6, 7]},{'a': 7, 'grp': 'a', 's': 18, 'u': [5, 6, 7]},{'a': 5, 'grp': 'a', 's': 18, 'u': [5, 6, 7]},{'a': 2, 'grp': 'b', 's': 11, 'u': [9, 2]},{'a': 9, 'grp': 'b', 's': 11, 'u': [9, 2]}]

Mutate

clumper庫中的row_number可以給每條記錄顯示索引位置(第幾個)。

without groups

from?clumper?import?Clumper from?clumper.sequence?import?row_numberlist_dicts?=?[{'a':?6,?'grp':?'a'},{'a':?2,?'grp':?'b'},{'a':?7,?'grp':?'a'},{'a':?4,?'grp':?'b'},{'a':?5,?'grp':?'a'} ](Clumper(list_dicts).mutate(index=row_number()).collect() ) [{'a': 6, 'grp': 'a', 'index': 1},{'a': 2, 'grp': 'b', 'index': 2},{'a': 7, 'grp': 'a', 'index': 3},{'a': 4, 'grp': 'b', 'index': 4},{'a': 5, 'grp': 'a', 'index': 5}]

with groups

from?clumper?import?Clumper from?clumper.sequence?import?row_numberlist_dicts?=?[{'a':?6,?'grp':?'a'},{'a':?2,?'grp':?'b'},{'a':?7,?'grp':?'a'},{'a':?4,?'grp':?'b'},{'a':?5,?'grp':?'a'} ](Clumper(list_dicts).group_by('grp').mutate(index=row_number()).collect() ) [{'a': 6, 'grp': 'a', 'index': 1},{'a': 7, 'grp': 'a', 'index': 2},{'a': 5, 'grp': 'a', 'index': 3},{'a': 2, 'grp': 'b', 'index': 1},{'a': 4, 'grp': 'b', 'index': 2}]

Sort

排序, 默認升序

without groups

from?clumper?import?Clumperlist_dicts?=?[{'a':?6,?'grp':?'a'},????{'a':?2,?'grp':?'b'},????{'a':?7,?'grp':?'a'},????{'a':?9,?'grp':?'b'},????{'a':?5,?'grp':?'a'}](Clumper(list_dicts)?#根據(jù)字段a進行排序??.sort(key=lambda?d:?d['a'])??.collect()) [{'a': 2, 'grp': 'b'}, {'a': 5, 'grp': 'a'}, {'a': 6, 'grp': 'a'}, {'a': 7, 'grp': 'a'}, {'a': 9, 'grp': 'b'}]

with groups

from?clumper?import?Clumperlist_dicts?=?[{'a':?6,?'grp':?'a'},????{'a':?2,?'grp':?'b'},????{'a':?7,?'grp':?'a'},????{'a':?9,?'grp':?'b'},????{'a':?5,?'grp':?'a'}](Clumper(list_dicts)??.group_by('grp')??.sort(key=lambda?d:?d['a'])??.collect()) [{'a': 5, 'grp': 'a'}, {'a': 6, 'grp': 'a'}, {'a': 7, 'grp': 'a'}, {'a': 2, 'grp': 'b'}, {'a': 9, 'grp': 'b'}]

Ungroup

最后,如果你已經進行完了分組計算,想再次整合起來,取消分組狀態(tài),可以使用.ungroup()

應用

總結

以上是生活随笔為你收集整理的Python应用实战-Clumper库 | Groupby具体案例用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。