数据聚合与分组运算——GroupBy技术(1),有需要的朋友可以下。
pandas了灵活高效的groupby,它使你能以一种自然的方式对数据集切片、切块、等操作。
1、分组键可以有多种形式,且类型不必相同
后三种都只是快捷方式而已,其最终目的仍然是产生一组用于拆分对象的值。
2、首先来看看下面简单的型数据集(以DataFrame的形式):
假设你想要按key1分组,并计算data1列的平均值,可以访问data1,并根据key1groupby:
3、如果一次传入多个数组,就会得到不同的结果:
通过两个键对数据了分组,得到的Sers具有层次化索引(由唯一的键对组成):
无论你拿groupby做什么,都有可能会用到GroupBy的size,它可以返回含有分组大小的Sers:
GroupBy对象迭代,可以产生一组二元(由分组名和数据块组成)。看看下面简单的数据集:
-0.592994 b two 对于多重键的情况,的第元素将会是由键值组成的:
对于由DataFrame产生的GroupBy对象,如果用(单个字符串)或一组(字符串数组)列名对其索引,就能实现选取部分列聚合的目的,即:
7、通过字典或Sers分组
除数组以外,分组信息还可以其他形式存在,来看DataFrame示例:
-0..251905 Sers也有同样的,它可以被看做固定大小的映射。对于上面那个例子,如果用Sers作为分组键,则pandas会检查Sers以确保其索引跟分组轴是对齐的:
相较于字典或Sers,Python在定义分组映射关系时可以更有创意且更为抽象。任何被当做分组键的都会在各个索引值上被一次,其返回值就会被用作分组。
具体点说,以DataFrame为例,其索引值为人的名字。假设你希望根据人名的长度分组,虽然可以求取字符串长度数组,但其实仅仅传入len:
将跟数组、列表、字典、Sers混合也不是,因为任何东西最终都会被转换为数组:
层次化索引数据集最的地方在于它能够根据索引级别聚合。要实现该目的,通过level关键字传入级别编号或:
1、首先新建一个表格,我这里做的是两个表格在一起的,这城用的都是一些简单的数据
2、然后利用鼠标 选中右边的这个表,不要把上面的那个金额给选择上了,再利用鼠标点击上面的图表
3、在点击了图表之后就会有一个选项了,选择簇形状的然后点击确定就可以了
4、然后界面上就会自动跳出这个图表的了,这个应该是大家非常熟悉的操作了
5、然后鼠标右键点击这个图表,就会出现下面的选项进行选择数据,接着就会跳出一个界面来
6、然后就选择上面的轴标签进行编辑,就是点击类别的右边那个笔处
7、这里就直接利用鼠标将这个上面的月份进行选择中就可以了
8、然后按确实就可以了然后对应着的界面和图表都会自动更改好了,然后点击确定就可以了
9、接着还是跟刚才一样的鼠标右键点击图表,然后还是出现刚才的那个界面
10、这里就是利用鼠标 点击那个添加的按扭了
11、然后跳出的一个界面就是对应着江西的那个了,然后这里就是需要对应的进行选择了
12、选择之后就点击确定然后就会自动的出现在最下面就会有一个“江西”的字样出来了,然后图表里面也会出现新的数据图了,然后点击确实就可以了
13、然后选择中这个添加的数据组,鼠标右击接着就选择下面的更改系列图表类型
14、将最下面的那个“江西”选择为折线形的了,然后图表里面的也自动成了折线形的了,这里操作之后面添加的就会自动的转为折线形的了
15、接着还是鼠标右击图表中的折线然后选择下面的“设置数据系列格式”然后图表的右边就自动的出来一个次坐标轴了
16、再接着就是跟前面操作的方法一样的,将这里面“深圳,上海,北京”进行一对一的添加就可以了
17、然后就会自动的以折线的呈现在图表中的,这样很好的将两个图表呈现在一个表格中了如图所示
SQL经常将聚合函数与GROUP BY进行组合,对数据进行分组统计分析,python在分析数据中也可以实现相同的功能,而且python也是用GROUPBY
df.groupby()生成的也是DataFrame,有时可能需要在统计分析前选择列,可按照筛选列的方法进行操作,具体见,不设置筛选时,默认是选择全部列
例如你只需要对7月销售额进行统计分析,可以写成df.groupby("用户类型")["7月销售额"]
默认以分组中的某列或某些列为索引,但有时候我们并不想要这样的索引,此时有两种方法处理: