如何用python计算年龄_用python的pandas快速统计学生年龄班级等分组信息

前言

我又来回复大家的邮件啦!因为这次清明回家不方便录视频,这次以文章的形式发出来,欢迎大家多提意见。这次的需求:

1d5e2986-4f83-44f6-bcf1-01de331a77c4

需求描述

我是小学的一名统计员,因长期做统计工作,近期,自学一点python,但如何把excel中的8位数出生日期转成年龄,一直做不好,现请您帮忙一下,不知能否帮!

1015ff4dfe584cd8984e9ea4ea2700de

最终形式

最终的格式类似于上表,主要涉及格式转换和分组统计的需求,那么我们就开始一步一步的完成这一次的任务。

编码

读入excel文件

import pandas as pd

file_name = r'学生信息表.xlsx'

data = pd.read_excel(file_name)

data

输出:

be987cf0-0465-441d-bdc3-99375bd18f86

读入数据

处理出生日期,转化为时间格式,这次我们用pandas自带的to_datetime函数,好用快捷。

data['出生日期'] = pd.to_datetime(data['出生日期'],format='%Y%m%d')

增加一列年龄,引入datetime包,根据当前时间的year减去出生日期得到。

import datetime as dt

now = dt.datetime.today().year

data['周岁'] = now - data['出生日期'].dt.year

输出:

c4daf764-6c01-4d1d-88c8-6dbf4d469df2

新加周岁列

对周岁、性别同时分组,熟悉教程的小伙伴知道,这一期的分组内容其实可以用pandas的

透视表pivot_table函数解决。

在微信账单分析那期视频(

pandas透视表视频教程

)中有详细的讲解,这次我们就用另一种方法:groupby函数同样能搞定。

#开始分组统计

age = data.groupby(['周岁','性别'])

age_group = age.agg({'学生姓名':'count'}).T

输出:

85803dff0a1246d2b0c6b1d9636b7044

周岁,性别分组结果

如果需要求和数据,a.我们可以先对所有数据进行分组统计一次 b.再单独对女生数据统计一次,c.最后把两次的统计数据合并起来。

合并分组

age_single = data.groupby(['周岁'])

age_single_group = age_single.agg({'学生姓名':'count'}).T

age_single_group.index = ['合计']

仅女生数据

age_single_female = data[data['性别'] == '女'].groupby(['周岁'])

age_single_female_group = age_single_female.agg({'学生姓名':'count'}).T

age_single_female_group.index = ['仅女生']

合并数据

age_union = pd.concat([age_single_group,age_single_female_group],join='outer')

age_union.fillna(0)

输出:

10d435f52d5144bdab2032246599e3e1

统计2

总结

这样就完成了年级的分组统计,其他的按年级分组,或者地区分组也是类似的。是不是一步步写过来感觉pandas特别好用,特别简单。

欢迎大家有任何问题发邮箱492545607@qq.com进行交流,最后我们一起喊一遍口号:

提高办公效率,python改变生活

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值