利用python对数据进行分组统计
SQL经常将聚合函数与GROUP BY进行组合,对数据进行分组统计分析,python在分析数据中也可以实现相同的功能,而且python汇总这个函数名称也是GROUPBY()函数首先创建一个数据表import pandas as pdimport numpy as npvalue = {'用户ID':['001','002','003','004','005','006'],'用户类型':['大',
·
SQL经常将聚合函数与GROUP BY进行组合,对数据进行分组统计分析,python在分析数据中也可以实现相同的功能,而且python也是用GROUPBY
首先创建一个数据表
import pandas as pd
import numpy as np
value = {'用户ID':['001','002','003','004','005','006'],
'用户类型':['大','小','中','大','小','中'],
'区域':['A','B','A','C','B','A'],
'7月销量':[50,60,75,100,120,130],
'7月销售额':[500,1200,2250,1100,3600,5200]}
df = pd.DataFrame(value)
1.groupby()
最重要的参数为by
- 如果是基于单列进行分组,括号中可以填入列名,如'用户类型',也可以填入Series,如df['用户类型']
- 如果是基于多列进行分组,括号中可以填入列名组成的列表,如["用户类型","区域"],也可以填入Series组成的列表,如[df["用户类型"],df["区域"]
其他参数根据情况,一般默认即可, axis=0, level=None,as_index=True,sort = True, group_keys= True, observed= False, dropna= True
2.选择列
df.groupby()生成的也是DataFrame,有时可能需要在统计分析前选择列,可按照筛选列的方法进行操作,具体见https://blog.csdn.net/Monkey_wang_/article/details/116156599,不设置筛选时,默认是选择全部列
例如你只需要对7月销售额进行统计分析,可以写成df.groupby("用户类型")["7月销售额"]
3.统计函数
常见统计函数包括mean,sum,count,max,min等
- 对选择出来的列进行单一统计
df.groupby(['用户类型','区域']).sum()
7月销量 7月销售额 用户类型 区域 中 A 205 7450 大 A 50 500 C 100 1100 小 B 180 4800
- 对选择出来的列进行多种统计,此时需要借助aggregate方法,对分组后选择的列同时进行多种统计
df.groupby(['用户类型','区域']).aggregate(['sum','count'])
用户ID 7月销量 7月销售额 sum count sum count sum count 用户类型 区域 中 A 003006 2 205 2 7450 2 大 A 001 1 50 1 500 1 C 004 1 100 1 1100 1 小 B 002005 2 180 2 4800 2
- 对选择出来的列,不同列进行不同的统计,如一个列进行求和,一个列进行求平均,仍需要借助aggregate方法,不过这个时候需要传入以列名为键,统计函数为值的字典
df.groupby(['用户类型','区域']).aggregate({'7月销量':'sum','7月销售额':'mean'})
7月销量 7月销售额 用户类型 区域 中 A 205 3725 大 A 50 500 C 100 1100 小 B 180 2400
4.索引处理
默认以分组中的某列或某些列为索引,但有时候我们并不想要这样的索引,此时有两种方法处理:
- 将groupby()中的参数as_index设置为False,即as_index=False
df.groupby('用户类型',as_index=False).sum()
- 通过reset_index()重置索引
df.groupby('用户类型').sum().reset_index()
更多推荐
已为社区贡献1条内容
所有评论(0)