1.2秒、7240条消费记录,Python一键搞定三餐汇总,告别熬夜!
作为教育管理人员,你一定很关心学生的饮食起居吧;作为学生家长,你一定很关心孩子在学校的学习和生活情况吧。
现在就有一位老师让家长想了解一下学生在学校到食堂就餐的情况,于是就下载了一份Excel工作簿,这份工作簿保存着若干名学生近三个月的刷卡消费记录,每个学生一张工作表。学校每天的早餐时间为6点至8点,午餐时间为11点至13点,晚餐时间为17点至19点。希望能够简便快速地统计每个学生早中晚用餐的消费次数。表格样式如下:


其实,解决此类重复性问题正是Python的拿手好戏。下面就看看Python是解决这个问题的。
先来看完整代码:
import pandas as pdimport times_t = time.time()df = pd.read_excel("学生就餐率统计表.xlsx",sheet_name=None,header=0)hz = []xf_count = 0student_count = 0for sht_name,data in df.items(): if"就餐"notin sht_name: d = data.dropna(subset=["操作人"]).copy() d['操作时间'] =pd.to_datetime(d['操作时间'], errors='coerce') xf_count += len(d) student_count += 1 hours = d['操作时间'].dt.hour c1 = ((hours >= 6) & (hours <= 8)).sum() c2 = ((hours >= 11) & (hours <= 13)).sum() c3 = ((hours >= 17) & (hours <= 19)).sum() hz.append([sht_name,c1,c2,c3,c1+c2+c3])dfs = pd.DataFrame(hz,columns = ["姓名","早餐次数","午餐次数","晚餐次数","总次数"])dfs.to_excel("学生就餐汇总.xlsx",index = False)print(f"共{student_count}名学生{xf_count}条记录,用时{time.time()-s_t:.2f}秒")
再来说结果,Python解决这个问题,共筛选了28名学生的7240条消费记录,生成的汇总表包含“姓名、早餐次数、午餐次数、晚餐次数、用餐总次数”5列信息,用时仅1.27秒。


接下来,咱们再一步一步拆解代码思路,就算你是个编程新手,也能看懂这背后的逻辑。
第一步,加载模块,读取数据
import pandas as pdimport times_t = time.time()df = pd.read_excel("学生就餐率统计表.xlsx",sheet_name=None,header=0)
第二步、遍历工作表,自动筛选有效数据
hz = []xf_count = 0student_count = 0for sht_name,data in df.items(): if "就餐"not in sht_name: d = data.dropna(subset=["操作人"]).copy() d['操作时间'] =pd.to_datetime(d['操作时间'], errors='coerce') xf_count += len(d) student_count += 1
第三步,按时间分段计数
hours = d['操作时间'].dt.hour c1 = ((hours>=6) & (hours<=8)).sum() c2 = ((hours>=11) & (hours<=13)).sum() c3 = ((hours>=17) & (hours<=19)).sum() hz.append([sht_name,c1,c2,c3,c1+c2+c3])
第四步、生成汇总表,显示结果
dfs = pd.DataFrame(hz,columns = ["姓名","早餐次数","午餐次数","晚餐次数","总次数"])dfs.to_excel("学生就餐汇总.xlsx",index = False)print(f"共{student_count}名学生{xf_count}条记录,用时{time.time()-s_t:.2f}秒")
如果你也有类似的问题,只需要对照需要做简单修改就能用。如果你觉得这篇文章对你有所启发,别忘了点赞、转发支持一下,也请大家关注我,后续会分享更多的实用办公技巧,用代码解放双手,把时间留给更重要的事~~~
本文标题:1.2秒、7240条消费记录,Python一键搞定三餐汇总,告别熬夜!
本文链接:http://www.hniuzsjy.cn/renwen/57711.html
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
