分组聚合

分组

groupby原理

import numpy as np
import pandas as pddf = pd.DataFrame(data = {'sex':np.random.randint(0,2,size = 300), # 0男,1⼥'class':np.random.randint(1,9,size = 300), # 1~8⼋个班'Python':np.random.randint(0,151,size = 300), # Python成绩'Keras':np.random.randint(0,151,size =300), # Keras成绩'Tensorflow':np.random.randint(0,151,size=300), # Tensorflow成绩'Java':np.random.randint(0,151,size = 300), # Java成绩'C++':np.random.randint(0,151,size = 300)}) # C++成绩
# 分组
df.sex = df.sex.map({0:"男",1:"女"})
# 整个数据分组
a = df.groupby(by="sex")
for name,group in a:print("group_name:",name)print("group_data:",group)
# 单分组
b = df.groupby(by=["sex"])["Python"]
for name,group in b:print("group_name:", name)print("group_data:",group)
# 多分组
c = df.groupby(by=["sex","class"])["Python"]
for name,group in c:print("group_name:", name)print("group_data:",group)
# 对某一列进行分组
d = df.Python.groupby(by=df["class"])
for name,group in d:print("group_name:", name)print("group_data:",group)
# 利用数据类型分组
e = df.groupby(df.dtypes,axis=1)
for name,group in e:print("group_name:", name)print("group_data:",group)
# 利用字典进行分组
f_dict = {'Python':"IT1",
'Keras':"IT1",
'Tensorflow':"IT2",
'Java':"IT2",
'C++':"IT2"
}
f = df.groupby(f_dict,axis=1)
for name,group in f:print("group_name:", name)print("group_data:",group)

分组聚合——groupby

# 单条件聚合
df.groupby(by="sex").mean()
# 多条件聚合
df.groupby(by=["sex","class"]).mean()

分组聚合——apply&transform

apply原理

transform原理

data = {'fruit': ['苹果', '苹果', '苹果', '苹果'],'year': [202209, 202209, 202208, 202208],'sales': [202202, 202201, 202204, 202203]}
df = pd.DataFrame(data)
# apply
df.groupby(by=["fruit","year"])["sales"].apply(np.max).reset_index()
# transform
df["max_sales"] = df.groupby(by=["fruit","year"])["sales"].transform(np.max)
df

分组聚合——agg

agg原理

data = {'fruit': ['苹果', '苹果', '苹果', '苹果'],'year': [202209, 202209, 202208, 202208],'sales': [202202, 202201, 202204, 202203],'amount':[212201, 212202, 212204, 212205]}
df = pd.DataFrame(data)
# agg可以同时利用多个方式进行聚合计算
df.groupby(by=["fruit","year"])["sales"].agg([np.min,np.max,pd.Series.count]).reset_index()
# 针对不同列进行不同聚合计算
df.groupby(by=["fruit","year"])["sales","amount"].agg({"sales":[('最大值',np.max),('最小值',np.min)],"amount":[("计数",pd.Series.count),("平均值",np.mean)]}).reset_index()
# 利用自定义函数
def normalize(x):return (x-x.min())/(x.max()-x.min())
df["normalize"] = df.groupby(by=["fruit","year"])["sales"].transform(normalize)
df

Python数据清洗小技巧——分组聚合相关推荐

  1. Python数据分析小技巧:如何在Pandas中实现数据透视表?

    Python数据分析小技巧:如何在Pandas中实现数据透视表? 数据透视表是数据分析中非常有用的工具,可以帮助我们快速了解数据的结构.关联和趋势.在Pandas中,我们可以使用pivot_table ...

  2. 零基础入门学习Python,这13个Python惯用小技巧一定要收藏

    Python的小技巧很多,入门容易精通难!在进阶的路上,有没有什么好的技巧和好的方法,就是不断总结,不断记笔记!尤其是好的用法,就像写作文一样,好的名言警句要多背诵一些,写作的时候,肚子里的墨水多了才 ...

  3. pythonencoding etf-8_etf iopv python 代码30个Python常用小技巧

    1.原地交换两个数字x, y =10, 20 print(x, y) y, x = x, y print(x, y) 10 20 20 10 2.链状比较操作符n = 10 print(1 print ...

  4. 值得玩味儿的14个Python编程小技巧

    全文共394个字,1张图,预计阅读时间5分钟. 最近的工作中经常使用Python编写一些基本解决一些NLP的小问题,在自己的工作日记里面也记录了不少的python编程中常用的小"Trick& ...

  5. Python常用小技巧(五)——批量读取json文件

    Python常用小技巧(五)--批量读取json文件 前言:其实Python能够批量读取很多文件,这里,本人以json文件为例(json是标注图片时生成的文件,记录有标注的坐标和标签,友情推荐标注图片 ...

  6. python常用小技巧(四)——批量图片改名

    python常用小技巧(四)--批量图片改名 前言:在日常使用中我们需要批量修改图片名字,使用Python的话就可以很快地完成这个目标 一.材料准备 - os 二.程序编写 # -*- coding: ...

  7. Python常用小技巧(二)——打开图片

    Python常用小技巧(二)--打开图片 前言:对于大量图片的文件夹,你很难手工去检查每张图片是否损坏,这时候就要用程序去检查每张图片是否能打开了 一.材料准备 - os - PIL 二.程序编写 i ...

  8. Python进阶小技巧2

    Python进阶小技巧 上一篇进阶小技巧阅读量尚可,给了我再写一篇的动力.这回讲一下:偏函数.强制关键字参数和字典相关的技巧. 1. 偏函数 使用偏函数之前,首先要回答2个问题:什么是偏函数?偏函数有 ...

  9. python dict 合并同类项_零基础入门学习Python,这13个Python惯用小技巧一定要收藏...

    原标题:零基础入门学习Python,这13个Python惯用小技巧一定要收藏 Python的小技巧很多,入门容易精通难!在进阶的路上,有没有什么好的技巧和好的方法,就是不断总结,不断记笔记!尤其是好的 ...

最新文章

  1. 【系统分析与设计】软件开发模式之敏捷开发(Scrum)分析
  2. 项目管理知识体系实战专家胡立
  3. linux下mkdir
  4. Dragon Quest VIII 流程攻略(繁体中文完结版)
  5. 英语语法---形容词性从句详解
  6. JavaScript Notes
  7. iview weapp icon组件自定义图标 小程序
  8. 再见了微服务,DDD已成气候!
  9. placeholder的使用
  10. c#精彩编程200例百度云_永安市教育局被授予“人工智能编程教育试验区”
  11. 5G基站功耗,到底有多大?
  12. flowable 集成mongodb
  13. 【干货】写给初中级前端的高级进阶指南
  14. 监理延期 验收工程款制约三方
  15. 编写MapReduce程序,实现WordCount
  16. 如何处理Oracle中TEMP表空间满的问题(转载)
  17. StreamSets实战之路(十五)-实战篇- 数据采集与处理
  18. 时间敏感网络TSN及其标准
  19. 2.使用RNN做诗歌生成
  20. 【那些年我们一起看过的论文】之《Handwritten Digit Recognition with a Back-Propagation Network》

热门文章

  1. Security 配置过滤器
  2. 基于Vue实现头像选择预览
  3. 什么是类?对象?类与对象的关系是什么?
  4. JAVA程序设计(01.1)-----英制公制,单位转换
  5. 2021-09-28互联网快讯:乐视发布手机S1;猿辅导布局素质教育
  6. python zip( )函数
  7. 微信小程序体验版登录不上/请求不到数据
  8. Linux分区扩容2T以上硬盘扩容自带parted工具实现
  9. 不想“自费打工”,那就学习Python搞点赚钱副业试试
  10. SoX-linux里操作音频的瑞士军刀