当前位置:   article > 正文

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

python data[data['year'] == i]

前言

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

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改变生活

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/261590
推荐阅读
相关标签
  

闽ICP备14008679号