Agg

聚合描述性统计方法

agg如下图,可以理解成三个步骤,即group->split->summary

常用的描述性统计函数有:mean、count、unqiue、n_unique、sum、min和max

求学生的平均成绩、最优和最差成绩

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}]

求男生和女生各自的平均成绩、最优和最差成绩

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函数返回的结果显示为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作为关键词

现在经过 .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内置的统计函数名

内置的统计函数,可直接通过字符串调用

{"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()类似。主要的区别是transform处理过程中,记录数和字段数不会出现压缩。

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) #根据字段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

最后,如果你已经进行完了分组计算,想再次整合起来,取消分组状态,可以使用.ungroup()

应用

Python应用实战-Clumper库 | Groupby具体案例用法相关推荐

  1. Python应用实战-Clumper库 | 常用的数据操作函数

    Keep keep函数可以从原始数据中抽取符合指定条件的子集. from clumper import Clumperlist_dicts = [{'a': 1}, {'a': 2}, {'a': 3 ...

  2. 【Python爬虫】BeautifulSoup4 库的一些用法

    Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree).  它提供简单又常用的导航(navigating),搜索 ...

  3. Python应用实战-Clumper | dplyr式的Python数据操作包

    Clumper可以用来处理嵌套样式的json数据结构. 安装 !pip3 install clumper 为了展示Clumper如何工作,我准备了pokemon.json, 由列表组成(该列表由多个字 ...

  4. Python应用实战-sql操作groupby常用技巧

    前言 以下是我为大家准备的几个精品专栏,喜欢的小伙伴可自行订阅,你的支持就是我不断更新的动力哟! MATLAB-30天带你从入门到精通 MATLAB深入理解高级教程(附源码) tableau可视化数据 ...

  5. 【python教程】requests库的基本用法

    文章目录

  6. python基础和第三方库 笔记(python基础完结包括高级用法,第三方库持续更新中...)

    python基础 注:本笔记面向有一定基础的人 本笔记是本人快速复习python过程中记录的,不适合零基础的人学习python的主工具,可以作为辅工具,本笔记记录了入门阶段常用操作,如有错误的地方,希 ...

  7. Python爬虫入门(4):Urllib库的高级用法

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

  8. python的numpy库的基本用法_python numpy库np.percentile用法说明

    在python中计算一个多维数组的任意百分比分位数,此处的百分位是从小到大排列,只需用np.percentile即可-- a = range(1,101) #求取a数列第90%分位的数值 np.per ...

  9. python自然语言处理案例-Python自然语言处理 NLTK 库用法入门教程【经典】

    本文实例讲述了Python自然语言处理 NLTK 库用法.分享给大家供大家参考,具体如下: 在这篇文章中,我们将基于 Python 讨论自然语言处理(NLP).本教程将会使用 Python NLTK ...

最新文章

  1. MariaDB数据库介绍三、MHA(Master HA)实现主节点故障转移
  2. shell 调用 sqlplus 各种情况示例
  3. android从服务检查,android开发分享Android:你如何检查是否启用了特定的AccessibilityService...
  4. [Linux]常用命令与目录全拼
  5. VB判断指定的WORD文档是否被打开
  6. 【知识图谱】史上最全《知识图谱》2020综述论文,18位作者, 130页pdf
  7. Facebook反垃圾实践:人工治理与机器算法齐飞
  8. 从 global.console 看 Node.js 中的作用域
  9. 最详细的ECLIPSE Android SDK下载安装及配置教程
  10. android 模拟器 电脑配置,手机安卓模拟器多开对电脑配置要求与占用浅谈
  11. 2022电商人必备的7大工具推荐
  12. 【U+】U+通用财务数据库测试失败,无法保存。
  13. 黑苹果hidp显示不清楚_bigsur 黑苹果开启HIDPI失败解决方法
  14. android手机分区调整大小写,如何使用PQMagic调整磁盘分区容量大小
  15. 组策略设置桌面显示计算机图标,计算机组策略应用设置大全
  16. 计算机显示应用程序错误窗口,电脑出现应用程序错误窗口怎么办
  17. 国外一个免费的基于Java的PLC梯形图逻辑编辑与仿真软件
  18. 使用v-cli创建项目,引入element-ui构建用户管理页面实现增删改查
  19. 咸鱼CAD笔记—编辑工具
  20. html登录号如何显示用户名,HTML更改登录标签,登录后用户名

热门文章

  1. 网管型工业交换机如何创建网络冗余
  2. mysql内表和外表_Hive内表和外表的区别
  3. android listview 去掉水波纹效果_CocosCreator之分层管理的ListView
  4. java怎么截取后8位数字_java如何更快生成00000000~99999999的8位数字保存到文件中?...
  5. 微型计算机主机的主要组成部件是,微型计算机主机的主要组成部分有
  6. 通信系统的同步技术归纳
  7. 寄存器分配图着色_寄存器分配
  8. 小甲鱼python全部视频_小甲鱼全套教程之Python系列视频教程
  9. matlab评估边缘检测性能,【模糊推理】模糊逻辑图像边缘检测,原理+matlab代码~...
  10. 6号板编译失败找不到arm-none-linux-gnueabi-gcc