• 写在前面:

    • 突然打开excel看到透视图表, 瞬间理解了pandas中的分组聚合和透视图标的内容。分享给大家,希望给在学习路上的伙伴们少点疑虑。

分组聚合

  • 首先, 创建我们需要的数据
df = 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),'Java':np.random.randint(0,151,size = 300),'C++':np.random.randint(0,151,size = 300)})
df['sex'] = df['sex'].map({0:'男',1:'女'}) # 将0,1映射成男女
  • 数据长这样
  • 首先进行分组(这里的分组就是对应索引的位置, 在透视表pivot_table就是index)
g = df.Python.groupby([df['class'], df['sex']])
for name, data in g:print('组名:', name)print('数据:', data)#out:类似于:组名: (1, ’女’)数据: sex  class  Python  Keras  Tensorflow  Java  C++...balabalabala....组名: (1, '男')数据:sex  class  Python  Keras  Tensorflow  Java  C++...balabalabala....组名: (2, '女')数据: sex  class  Python  Keras  Tensorflow  Java  C++...balabalabala....组名: (2, '男')数据: sex  class  Python  Keras  Tensorflow  Java  C++...balabalabala........
  • 明白了吧, 就是我们Excel表格中的索引, 有了分组之后我们开始聚合,个人理解就是运算。在运算之前呢我们可以选择我们要展示的列,就是我们的列索引。

    • 比如:
g = df.groupby(by = ['class','sex'])[['Python','Keras']]
for name, data in g:print('组名', name)print('数据', data)
#out:
# 哎你会发现,我们数据的列里只剩下了['Python','Keras']这两列了组名: (1, ’女’)数据: Python  Keras ...balabalabala....组名: (1, '男')数据: Python  Keras ...balabalabala....
  • 最后就是我们的数据部分, 也就是要进行聚合了,聚合也就是对我们这些分组好的列表进行运算整理了。

    • 上代码
df.groupby(by = ['class','sex'])[['Python','Java']].max()
+ 输出呢我捏个图
+ 数据就是我们的聚合运算后的, 比如从我们  [组名: (1, ’女’)]
+ 从每一列选择最大的值放入我们分组聚合后 (1, ‘女',  'Python’, ‘Java)这一行中。
+ 这样是不是就是相当直观了。

  • 当然了我们也可以,对聚合采用不同的统计方式,你可以去试试哦。
df.groupby(by = ['class','sex'])[['Python','Keras']].agg({'Python':[('最大值',np.max),('最小值',np.min)],'Keras':[('计数',pd.Series.count),('中位数',np.median)]})
+ 当然了我也给各位贴个图。

  • 明白了分组聚合, 透视表就是在此基础上进行了简化。

透视图表

  • 上码
df.pivot_table(values=['Python','Keras'],# 要透视分组的值,就是生成后的列名index=['class','sex'], # 分组透视指标, groupby中的byaggfunc={'Python':[('最大值',np.max)], # 聚合运算'Keras':[('最小值',np.min),('中位数',np.median)] })
  • 上图
  • 敲黑板了哈, 这里要说个很接近透视表的东西, 不进行运算, 只是在数据data里显示我要的值
  • 比如, 我现在 行索引显示sex, 列索引显示class, 我数据值values里显示Python成绩
df.pivot_table(index=['sex'], columns=['class'], values= ['Python'])

  • 哎你会发现,我选了三列, index(sex)作为行索引,columns(class)作为列索引, values选择了Python, 自动为我们计算了分数的平均值。 这样其实并不明显,如果三列有着因果关系(前半个小时我一直再找,但是从这个例子中没找到)。
  • 比如 城市, 工作年限和工资之间的关系, 不同城市不同工作年限将会由不同工资, 城市和工作年限的分组类别不多且是固定的, 工资是不同的, 那么通过透视表, 选择三列,我们将会很多得到我们想要的数据。
  • 那么,通过刚才透视表的数据我能通过分组聚合得到吗?答案是肯定的。上码
df.groupby(by=['sex', 'class'])[['Python']].mean().unstack(-1)
  • 最后码字不易,多多点赞支持哦, 那块我说的不详细,或者有问题,多多沟通交流哦。

最详细最直观的>>>理解Pandas分组聚合和透视图标相关推荐

  1. pandas php,pandas分组聚合代码详解

    pandas分组聚合代码详解 本篇文章小编给大家分享一下pandas分组聚合代码详解,对大家学习pandas分组聚合有一定的帮助,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看 ...

  2. python pandas聚合_Python Pandas分组聚合的实现方法

    Pycharm 鼠标移动到函数上,CTRL+Q可以快速查看文档,CTR+P可以看基本的参数. apply(),applymap()和map() apply()和applymap()是DataFrame ...

  3. 【Pandas分组聚合】 groupby()、agg() 方法的使用

    Pandas分组聚合 创建一个dataframe结构 分组函数 groupby() 初识分组聚合 多重行索引分组聚合 对多列数据进行分组聚合 综合应用 聚合函数 agg(aggregate) 求 多列 ...

  4. 【Pandas分组聚合】进阶:透视表、交叉表(pivot_table() 、crosstab())

    Pandas透视表.交叉表 创建DataFrame结构 透视表 pivot_table() 单列聚合 多列聚合 交叉表 crosstab() 计算分组频率 两列分组后求第三列的统计指标 创建DataF ...

  5. Pandas数据处理_分组聚合_透视表交叉表

    1.分组聚合 1.1拆分数据 groupby方法的参数及其说明: #该方法提供的是分组聚合步骤中的拆分功能, #能根据索引或字段对数据进行分组.其常用参数与使用格式如下:DataFrame.group ...

  6. python 数据分析(六)astype('category')按类别分组 + 分组聚合操作 + 透视表 + 交叉表 + excel表的数据处理

    文章目录 一.按照类别单独分类astype() 1. astype()用法 二.时间操作 1. 第一种:直接利用to_datetime() 2. 第二种:Series.dt 三.分组聚合操作 1. 分 ...

  7. pandas分组聚合

    基本操作 import pandas as pd import numpy as np df = pd.DataFrame({'a':['one','two','one','two'],'b':['k ...

  8. 【数据分析与可视化】Pandas可视化与数据透视表的讲解及实战(超详细 附源码)

    需要源码请点赞关注收藏后评论区留言私信~~~ 一.数据透视表 数据透视表(Pivot Table)是数据分析中常见的工具之一,根据一个或多个键值对数据进行聚合,根据列或行的分组键将数据划分到各个区域 ...

  9. 《深入浅出Pandas:利用Python进行数据处理与分析》——第3部分 数据形式变化_01分组聚合

    文章目录 分组聚合操作 分组器 分组对象查看 apply/pipe/transform 数据分箱(data binning),或离散组合或数据分桶 分组可视化,pandas提供的简单的与分组相关的可视 ...

最新文章

  1. OpenSSL简介及在Windows、Linux、Mac系统上的编译步骤
  2. 《JavaScript高效图形编程(修订版)》——第2章 DHTML基础 2.1创建DHTML sprite
  3. Charles学习(四)之使用Map local代理本地静态资源以及配置移动端代理在真机上调试iOS和Android客户端...
  4. java的Comparator和Comparable
  5. Leetcode 3:无重复字符的最长子串
  6. TaskBar Hider – 用快捷键手动隐藏任务栏[Windows]
  7. 远程访问数据库出错的解决办法
  8. 活动丨4场直播华丽丽来袭,快来参与
  9. 在code::block中创建console application
  10. 高端物理学名词_物理名词大全
  11. 多项式展开的逆过程的MATLAB实现
  12. html图片显示不出来
  13. pycharm中python的默认安装路径_PyCharm下载和安装详细步骤
  14. 头戴式蓝牙耳机,出现左耳没有声音,右耳正常。
  15. Altium Designer20原理图->PCB
  16. 5410 ACM 杭电 01+完全背包
  17. 多目标跟踪算法中之图匹配——匈牙利算法和KM算法详解
  18. 码农深耕 - 35岁的程序员何去何从?
  19. mysqlclient安装失败解决方案
  20. 区块链百宝库【必备资源集合】

热门文章

  1. 求和(单例模式,初始化列表,容器,迭代器)
  2. Java基础9----运算符2(关系,逻辑运算符)
  3. 2020PAT甲级秋季7-4 Professional Ability Test (30分)
  4. IOS 跳转导航地图
  5. DBeaver 给id设置为键 以及执行sql查询语句
  6. [置顶] Android九环刀之RatingBar之评委请亮分
  7. 互联网公司总部选址分布:后厂村就是半个中国互联网
  8. python美元和人民币双向兑换程序_Python:程序练习题(二)
  9. 1413-数列求和 ZCMU
  10. linux使用指定网卡ping,LINUX ping 指定网卡