influxdb 最近小时统计_用pandas快速统计学生年龄班级等分组信息

c72e3a4da924d93352b916ce778e36fc.png

最近收到一个求助邮件,他的需求如下:

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

这个问题其实比较简单,做出来的最终形式如下:

4303ee03eef5db22e03b68af0ef81253.png

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

1、读入excel文件
import pandas as pdfile_name = r'学生信息表.xlsx'data = pd.read_excel(file_name)data
输出:

6d91b979bdf3fbc71fc7254b1ebd3058.png

读入数据 2、处理出生日期,转化为时间格式 这次我们用pandas自带的to_datetime函数,好用快捷。
data['出生日期'] = pd.to_datetime(data['出生日期'],format='%Y%m%d')
3、增加一列年龄 引入datetime包,根据当前时间的year减去出生日期得到。
import datetime as dtnow = dt.datetime.today().yeardata['周岁'] = now - data['出生日期'].dt.year
输出:

28b9d1b3872242be09e67451b84791d4.png

新加周岁列

4、对周岁、性别同时分组

熟悉教程的小伙伴知道,这一期的分组内容其实可以用pandas的透视表pivot_table函数解决。

这次我们就用另一种方法:groupby函数同样能搞定。

#开始分组统计age = data.groupby(['周岁','性别'])age_group  = age.agg({'学生姓名':'count'}).T

输出:

53cf38ddf56bc902851da0bce2af31ee.png

周岁,性别分组结果

5、如果需要求和数据 a.我们可以先对所有数据进行分组统计一次  b.再单独对女生数据统计一次 c.最后把两次的统计数据合并起来 合并分组
age_single = data.groupby(['周岁'])age_single_group = age_single.agg({'学生姓名':'count'}).Tage_single_group.index = ['合计']
仅女生数据
age_single_female = data[data['性别'] == '女'].groupby(['周岁'])age_single_female_group = age_single_female.agg({'学生姓名':'count'}).Tage_single_female_group.index = ['仅女生']
合并数据
age_union = pd.concat([age_single_group,age_single_female_group],join='outer')age_union.fillna(0)
输出:

0ed9791f8722b6c9cff81abbe8261329.png

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

- END -

文源网络,仅供学习之用,如有侵权,联系删除。往期精彩

96a9e0b8251633abc0717f03c4e3e0ad.png

◆  50款开源工具你都用过吗?

◆  python+C、C++混合编程的应用

◆  python网络爬虫的基本原理详解

◆  Python自动操控excel,一小时解决你一天的工作

◆  如何用Python增强Excel,减少处理复杂数据的痛苦?

2eefba4a3b84ba3dd414f29dee68c6f3.png

### 回答1: 使用 Pandas 的 `groupby()` 函数可以对数据进行分组。 例如: ``` import pandas as pd # 假设有一个包含多行多列的数据框(DataFrame) df = pd.DataFrame({'A': [1, 1, 2, 2], 'B': [3, 3, 4, 4], 'C': [5, 6, 7, 8]}) # 使用 A 列进行分组 grouped = df.groupby('A') # 对每组数据执行聚合运算(例如求和、平均值等) print(grouped.sum()) print(grouped.mean()) ``` 输出结果如下: ``` B C A 1 6 11 2 8 15 A B C 1 3.000000 5.500000 2 4.000000 7.000000 ``` 上面的代码将数据框按 A 列的值进行了分组,然后对每组数据分别求和和平均值。你也可以使用其他聚合运算,例如 `min()`、`max()`、`count()` 等。 希望这对你有帮助! ### 回答2: pandas是一个功能强大的Python数据分析库,可以方便地对数据进行处理和分析。其中的分组功能可以帮助我们对数据进行分组后的统计操作。 分组数据统计可以实现多种不同的功能,比如计算每个分组的总和、平均值、最大值、最小值等等。下面是使用pandas进行分组数据统计的基本步骤: 1. 导入pandas库:首先,我们需要导入pandas库,可以使用以下代码: ```python import pandas as pd ``` 2. 读取数据:接下来,我们需要读取要进行分组统计的数据。可以使用pandas提供的`read_csv()`函数进行数据的读取: ```python df = pd.read_csv('data.csv') ``` 3. 分组数据:使用pandas的`groupby()`函数进行数据的分组,可以根据某一列或多列的值进行分组。下面是根据某一列的值进行分组的示例: ```python grouped_data = df.groupby('column_name') ``` 4. 统计数据:分组完成后,我们可以对分组后的数据进行各种统计操作。比如,可以计算每个分组的总和、平均值、最大值、最小值等。下面是计算每个分组的平均值的示例: ```python average_data = grouped_data.mean() ``` 5. 查看结果:最后,我们可以使用`print()`函数或者其他方式查看分组统计的结果: ```python print(average_data) ``` 以上就是使用pandas进行分组数据统计的基本步骤。通过pandas分组功能,我们可以方便地对数据进行分组后的统计操作,从而更好地理解和分析数据。 ### 回答3: Pandas分组数据统计是指使用Pandas库中的groupby函数将数据按照指定的列进行分组,并对每个组进行统计分析的操作。 在Pandas中,我们可以使用groupby函数将数据按照某一列或多列进行分组,形成一个分组对象。然后,我们可以对分组对象进行各种统计操作,比如计算均值、求和、计数等。 例如,我们有一个包含学生姓名、班级和成绩的数据集,我们可以使用groupby函数将数据按照班级进行分组: grouped_data = data.groupby('班级') 然后,我们可以对分组后的数据进行统计分析。比如,我们可以计算每个班级的平均成绩: average_score = grouped_data['成绩'].mean() 我们还可以计算每个班级的总分: total_score = grouped_data['成绩'].sum() 除了常见的统计函数,Pandas还提供了许多其他的函数,可以对分组对象进行更细致的统计分析。比如,我们可以使用describe函数计算每个班级的成绩的五数概括: score_summary = grouped_data['成绩'].describe() 这样我们就可以得到每个班级的最小值、最大值、均值、标准差等统计指标。 总之,Pandas分组数据统计功能可以帮助我们快速对数据进行分组,并完成各种统计分析。它极大地简化了数据统计和分析的过程,提高了数据处理的效率和灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值