最详细最直观的>>>理解Pandas分组聚合和透视图标
- 写在前面:
- 突然打开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分组聚合和透视图标相关推荐
- pandas php,pandas分组聚合代码详解
pandas分组聚合代码详解 本篇文章小编给大家分享一下pandas分组聚合代码详解,对大家学习pandas分组聚合有一定的帮助,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看 ...
- python pandas聚合_Python Pandas分组聚合的实现方法
Pycharm 鼠标移动到函数上,CTRL+Q可以快速查看文档,CTR+P可以看基本的参数. apply(),applymap()和map() apply()和applymap()是DataFrame ...
- 【Pandas分组聚合】 groupby()、agg() 方法的使用
Pandas分组聚合 创建一个dataframe结构 分组函数 groupby() 初识分组聚合 多重行索引分组聚合 对多列数据进行分组聚合 综合应用 聚合函数 agg(aggregate) 求 多列 ...
- 【Pandas分组聚合】进阶:透视表、交叉表(pivot_table() 、crosstab())
Pandas透视表.交叉表 创建DataFrame结构 透视表 pivot_table() 单列聚合 多列聚合 交叉表 crosstab() 计算分组频率 两列分组后求第三列的统计指标 创建DataF ...
- Pandas数据处理_分组聚合_透视表交叉表
1.分组聚合 1.1拆分数据 groupby方法的参数及其说明: #该方法提供的是分组聚合步骤中的拆分功能, #能根据索引或字段对数据进行分组.其常用参数与使用格式如下:DataFrame.group ...
- python 数据分析(六)astype('category')按类别分组 + 分组聚合操作 + 透视表 + 交叉表 + excel表的数据处理
文章目录 一.按照类别单独分类astype() 1. astype()用法 二.时间操作 1. 第一种:直接利用to_datetime() 2. 第二种:Series.dt 三.分组聚合操作 1. 分 ...
- pandas分组聚合
基本操作 import pandas as pd import numpy as np df = pd.DataFrame({'a':['one','two','one','two'],'b':['k ...
- 【数据分析与可视化】Pandas可视化与数据透视表的讲解及实战(超详细 附源码)
需要源码请点赞关注收藏后评论区留言私信~~~ 一.数据透视表 数据透视表(Pivot Table)是数据分析中常见的工具之一,根据一个或多个键值对数据进行聚合,根据列或行的分组键将数据划分到各个区域 ...
- 《深入浅出Pandas:利用Python进行数据处理与分析》——第3部分 数据形式变化_01分组聚合
文章目录 分组聚合操作 分组器 分组对象查看 apply/pipe/transform 数据分箱(data binning),或离散组合或数据分桶 分组可视化,pandas提供的简单的与分组相关的可视 ...
最新文章
- OpenSSL简介及在Windows、Linux、Mac系统上的编译步骤
- 《JavaScript高效图形编程(修订版)》——第2章 DHTML基础 2.1创建DHTML sprite
- Charles学习(四)之使用Map local代理本地静态资源以及配置移动端代理在真机上调试iOS和Android客户端...
- java的Comparator和Comparable
- Leetcode 3:无重复字符的最长子串
- TaskBar Hider – 用快捷键手动隐藏任务栏[Windows]
- 远程访问数据库出错的解决办法
- 活动丨4场直播华丽丽来袭,快来参与
- 在code::block中创建console application
- 高端物理学名词_物理名词大全
- 多项式展开的逆过程的MATLAB实现
- html图片显示不出来
- pycharm中python的默认安装路径_PyCharm下载和安装详细步骤
- 头戴式蓝牙耳机,出现左耳没有声音,右耳正常。
- Altium Designer20原理图->PCB
- 5410 ACM 杭电 01+完全背包
- 多目标跟踪算法中之图匹配——匈牙利算法和KM算法详解
- 码农深耕 - 35岁的程序员何去何从?
- mysqlclient安装失败解决方案
- 区块链百宝库【必备资源集合】
热门文章
- 求和(单例模式,初始化列表,容器,迭代器)
- Java基础9----运算符2(关系,逻辑运算符)
- 2020PAT甲级秋季7-4 Professional Ability Test (30分)
- IOS 跳转导航地图
- DBeaver 给id设置为键 以及执行sql查询语句
- [置顶] Android九环刀之RatingBar之评委请亮分
- 互联网公司总部选址分布:后厂村就是半个中国互联网
- python美元和人民币双向兑换程序_Python:程序练习题(二)
- 1413-数列求和 ZCMU
- linux使用指定网卡ping,LINUX ping 指定网卡