pandas分组分析
分组分析是指根据分组字段,将分析对象划分成不同的部分,以对比分析各组之间差异性的分析方法。分组分析常用的统计指标是计数、求和、平均值。
分组统计函数的语法格式如下:
【例 1 】在 Employee_income.xls 文件中包含有职工号(emp_id)、性别(sex)、年龄(age)、学历(education)、参加工作时间(firstjob)、工作地区(region)、行业(industry)、职业(occupation)、月薪(salary)和月补贴(subsidy)等 10 列数据,要求分别按年龄、学历分组统计人数,并求月薪的均值、最大值和最小值。
其示例代码 test1 如下。
运行输出结果如下。
分组统计函数的语法格式如下:
groupby(by=[分组列1,分组列2,…])
[统计列1,统计列2,…]
.agg({统计列别名1:统计函数1,统计列别名2:统计函数2,…})
- by:用于分组的列;
- 中括号[ ]:用于统计的列;
- agg:统计别名用于显示统计值的名称,统计函数用于统计数据,常用的统计函数有计数(size)、求和(sum)和均值(mean)。
【例 1 】在 Employee_income.xls 文件中包含有职工号(emp_id)、性别(sex)、年龄(age)、学历(education)、参加工作时间(firstjob)、工作地区(region)、行业(industry)、职业(occupation)、月薪(salary)和月补贴(subsidy)等 10 列数据,要求分别按年龄、学历分组统计人数,并求月薪的均值、最大值和最小值。
其示例代码 test1 如下。
# -*- coding: utf-8 -*- import numpy as np from pandas import DataFrame; import pandas as pd df = pd.read_excel('d:\data\emp_income\Employee_income.xls', sheet_name='emp_income') age_result = df.groupby(by=['age'])['salary'].agg({ '人数':np.size, '平均月薪':np.mean, '最高月薪':np.max, '最低月薪':np.min }) print(age_result) edu_result = df.groupby(by=['education'])['salary'].agg({ '人数':np.size, '平均月薪':np.mean, '最高月薪':np.max, '最低月薪':np.min }) print(edu_result)
运行输出结果如下。
人数 平均月薪 最高月薪 最低月薪 education 大专 4 3700.000000 4500 3000 本科 5 4700.000000 5000 4500 研究生 2 7099.500000 7699 6500 高中 7 2685.714286 3500 2000