本文目录
一、数据的分组和聚合运算
1.聚合函数(按照性别字段来分组)
(1)第一种方法
# coding:utf-8
"""
@Function:数据的分组和聚合
@Author :王育红
@Date :2020/8/28
"""
import pandas as pd
data = {
'Id': ['000001', '000002', '000003', '000004', '000005', '000006', '000007'],
'name': ['袁晓莉', '孙菁', '王育红', '马天宇', '易烊千玺', '杨颖', '郑凯'],
'gender': [False, False, False, True, True, False, True],
'age': [18, 21, 20, 18, 19, 17, 26],
'height': [1.80, 1.67, 1.83, 1.80, 1.78, 1.66, 1.86]
}
frame = pd.DataFrame(data)
# 聚合函数(一)按照性别字段来分组
groups = frame.groupby(frame['gender'])
print(groups['gender'].count())
- 查看运行结果:
(2)第二种方法
[[‘gender’]]列表参数
groups = frame[['gender']].groupby(frame['gender'])
print(groups.count().rename(columns={
'gender':'genderCount'}))
- 查看运行结果
2.按照年龄计算人数
# 按照年龄分人数
groups = frame[['age']].groupby(frame['age'])
print(groups.count().rename(columns={
'age':'相同年龄的人数'}))
- 查看运行结果:
3.多个列来分组
# 按照年龄和性别来分组,统计各个数量
print(frame[['Id']].groupby([frame['gender'],frame['age']]).count().
sort_values(by=['gender','age'],ascending=[False,True]))
- 查看运行结果:
4.平均值mean()函数
# 平均值mean()函数
print(frame[['height']].groupby([frame['gender'],frame['age']]).mean())
- 查看运行结果:
- 说明:按照性别年龄分组以后,来求身高的平均值
5.分组条件和统计函数
高级的应用,pandas的强大之处在于可以扩展分组条件以及扩展统计函数,来实现特殊的自定义的分组统计效果,其中应用apply函数来应用这些不同的扩展功能。
(1)名字字符长度
# 名字字符长度
print(frame['name'].groupby(frame['name'].apply(len)).count())
- 查看运行结果:
- 说明:左边是指名字的长度有两个,三个,四个字的,而右边是计算有多少个长度一样的字。
(2)统计不同身高范围的人数
# 统计不同身高范围的人数,精确到小数点
print(frame['name'].groupby(frame