数据分析(二十一)

20. 分组

20.1 groupby

>>> df1 = pd.DataFrame(
...  {'key1':list('abcdefgh'),'data1':np.random.randint(-5,10,8),'key2':list('11223344'),
...   'data2':np.random.randint(-5,10,8)}
... )
>>> df1
	key1	data1	key2	data2
0	 a		 -4		 1	 	  5
1	 b	 	  1		 1	 	  5
2	 c	 	  6		 2	 	 -2
3	 d	 	  4		 2	 	  7
4	 e	 	  4		 3	 	  4
5	 f	 	  3		 3	 	  2
6	 g	 	  4		 4	 	  2
7	 h	 	  7		 4	 	  1 
 >>> gr1 = df1.groupby(df1['key2'])
>>> gr1
<pandas.core.groupby.groupby.DataFrameGroupBy object at 0x000001602DE85128>

>>> for name,obj in gr1:
...    print(name)
...    print(obj)
...    print('##########################')
1
  key1  data1 key2  data2
0    a     -4    1      5
1    b      1    1      5
##########################
2
  key1  data1 key2  data2
2    c      6    2     -2
3    d      4    2      7
##########################
3
  key1  data1 key2  data2
4    e      4    3      4
5    f      3    3      2
##########################
4
  key1  data1 key2  data2
6    g      4    4      2
7    h      7    4      1
##########################

>>> gr1.sum()
	 data1	data2
key2		
1	  -3	 10
2	  10	  5
3	   7	  6
4	  11	  3

注意点:

  1. 分组完成之后,返回的是一个分组独享
  2. 分组之后,可以使用函数进行下一步的处理
  3. 进行计算的过程中,非数字的数据不用参与计算
  4. 当迭代分组对象的时候,每个元素的形式(分组名,属于该分组的数据)
  5. 属于该分组的数据,也是dataframe对象

20.2 分组对象转python数据类型

>>> list(gr1)
[('1',   key1  data1 key2  data2
  0    a     -4    1      5
  1    b      1    1      5), 
 ('2',   key1  data1 key2  data2
  2    c      6    2     -2
  3    d      4    2      7), 
 ('3',   key1  data1 key2  data2
  4    e      4    3      4
  5    f      3    3      2), 
 ('4',   key1  data1 key2  data2
  6    g      4    4      2
  7    h      7    4      1)]

>>> dict(list(gr1))
{'1':   key1  data1 key2  data2
 0    a     -4    1      5
 1    b      1    1      5, 
 '2':   key1  data1 key2  data2
 2    c      6    2     -2
 3    d      4    2      7, 
 '3':   key1  data1 key2  data2
 4    e      4    3      4
 5    f      3    3      2, 
 '4':   key1  data1 key2  data2
 6    g      4    4      2
 7    h      7    4      1}
  • list格式:[(组名,dataframe对象),(组名,dataframe对象),(组名,dataframe对象)]
  • dict格式:{组名:dataframe对象,组名:dataframe对象,组名:dataframe对象}

20.3 聚合

常常用于分组之后的数据计算

20.3.1 内置的聚合函数
  • sum():求和
  • mean():均值
  • max():最大值
  • min():最小值
  • count():计数
  • size():大小
  • describe():详情
>>> df1
	key1	data1	key2	data2
0	 a		 -4		 1	 	  5
1	 b	 	  1		 1	 	  5
2	 c	 	  6		 2	 	 -2
3	 d	 	  4		 2	 	  7
4	 e	 	  4		 3	 	  4
5	 f	 	  3		 3	 	  2
6	 g	 	  4		 4	 	  2
7	 h	 	  7		 4	 	  1 
>>> gr2 = df1.groupby(df1['key1'])
>>> gr2
<pandas.core.groupby.groupby.DataFrameGroupBy object at 0x000001602DE855F8>
>>> gr2.size()
key1
a    1
b    1
c    1
d    1
e    1
f    1
g    1
h    1
dtype: int64
    
>>> gr2.count()
	 data1	key2	data2
key1			
 a	  1		 1		 1
 b	  1		 1		 1
 c	  1		 1		 1
 d	  1		 1		 1
 e	  1		 1		 1
 f	  1		 1		 1
 g	  1		 1		 1
 h	  1		 1		 1

>>> gr2.sum()
	 data1	data2
key1		
 a	 -4		  5
 b	  1		  5
 c	  6		 -2
 d	  4		  7
 e	  4		  4
 f	  3		  2
 g	  4		  2
 h	  7		  1

>>> gr2.describe()
	data1											  data2
	count	mean  std	 min  25%	50%	  75%	max	  count	
key1																
 a	 1.0   -4.0   NaN	-4.0  -4.0	-4.0 -4.0	-4.0  1.0	...
 b	 1.0	1.0	  NaN	 1.0   1.0	 1.0  1.0	 1.0  1.0	...
 c	 1.0	6.0	  NaN	 6.0   6.0	 6.0  6.0	 6.0  1.0	...
 d	 1.0	4.0	  NaN	 4.0   4.0	 4.0  4.0	 4.0  1.0	...
 e	 1.0	4.0	  NaN	 4.0   4.0	 4.0  4.0	 4.0  1.0	...
 f	 1.0	3.0	  NaN	 3.0   3.0	 3.0  3.0	 3.0  1.0	...
 g	 1.0	4.0	  NaN	 4.0   4.0	 4.0  4.0	 4.0  1.0	...
 h	 1.0	7.0	  NaN	 7.0   7.0	 7.0  7.0	 7.0  1.0	...
20.3.2 agg()自定义函数做聚合运算
>>> gr2.agg(['max','min'])
	data1	key2	data2
	max	min	max	min	max	min
key1						
a	-4	-4	1	1	5	5
b	1	1	1	1	5	5
c	6	6	2	2	-2	-2
d	4	4	2	2	7	7
e	4	4	3	3	4	4
f	3	3	3	3	2	2
g	4	4	4	4	2	2
h	7	7	4	4	1	1

# 使用内置的聚合函数起中文名
>>> gr2.agg([('最大值','max'),('最小值','min')])
	data1	    key2	    data2
    最大值	最小值	最大值	最小值	最大值	最小值
key1						
a	 -4	   -4	  1	    1	  5	    5
b	  1	    1	  1	    1	  5	    5
c	  6	    6	  2	    2	 -2    -2
d	  4	    4	  2	    2	  7	    7
e	  4	    4	  3	    3	  4	    4
f	  3	    3	  3	    3	  2	    2
g	  4	    4	  4	    4	  2	    2
h	  7	    7	  4	    4	  1	    1

# 针对不同的列,使用不同的聚合函数
>>> gr2.agg({
...    'data1':[('最大值','max')],
...    'data2':['min']
... })
    data1	data2
	最大值	  min
key1		
a	 -4    	 5
b	 1	     5
c	 6	     -2
d	 4	     7
e	 4	     4
f	 3	     2
g	 4	     2
h	 7	     1

注意点:

  1. agg()填充的是函数,如果需要使用内置的聚合函数,用字符串的形式填写
  2. 如果使用内置的函数在起别名的时候,注意(字符串的形式)
>>> def func(x):
...    return x.max()-x.min()
>>> gr1.agg(func)
	data1	data2
key2		
1	 5		 0
2	 2		 9
3	 1		 2
4	 3		 1

>>> gr1.agg(lambda x:x.max()-x.min())
	data1	data2
key2		
1	 5		 0
2	 2		 9
3	 1		 2
4	 3		 1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的纺织品企业财务管理系统,源码+数据库+毕业论文+视频演示 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对纺织品企业财务信息管理的提升,也为了对纺织品企业财务信息进行更好的维护,纺织品企业财务管理系统的出现就变得水到渠成不可缺少。通过对纺织品企业财务管理系统的开发,不仅仅可以学以致用,让学到的知识变成成果出现,也强化了知识记忆,扩大了知识储备,是提升自我的一种很好的方法。通过具体的开发,对整个软件开发的过程熟练掌握,不论是前期的设计,还是后续的编码测试,都有了很深刻的认知。 纺织品企业财务管理系统通过MySQL数据库与Spring Boot框架进行开发,纺织品企业财务管理系统能够实现对财务人员,员工,收费信息,支出信息,薪资信息,留言信息,报销信息等信息的管理。 通过纺织品企业财务管理系统对相关信息的处理,让信息处理变的更加的系统,更加的规范,这是一个必然的结果。已经处理好的信息,不管是用来查找,还是分析,在效率上都会成倍的提高,让计算机变得更加符合生产需要,变成人们不可缺少的一种信息处理工具,实现了绿色办公,节省社会资源,为环境保护也做了力所能及的贡献。 关键字:纺织品企业财务管理系统,薪资信息,报销信息;SpringBoot
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值