举例说明:假设有一个班,在班级群里安排了阅读打卡任务,一段时间之后,老师要统计每个学生一段时间内的打卡次数(每个学生每天只能打一次卡)。
导出后的数据格式是EXCEL,原始的EXCEL表格是这样的,按日期排列的每天参与阅读打卡的学生数据:
使用jupyter notebook编程解决问题,输出结果如下:
处理过程:输入数据-->数据预处理-->数据计算-->测试结果-->输出结果
如果没有弄懂pandas里面的一些功能极强的库的使用方法,那后果可能就惨了,就需要用python比较原始的办法去解决了,如下:
python完整代码如下:
import pandas as pdimport numpy as npdf = pd.read_excel("3.13阅读打卡(1).xlsx",sheet_name=0,engine="openpyxl")# 数量规范化处理df.replace("爸爸","",regex=True,inplace=True)df.replace("妈妈","",regex=True,inplace=True)df.replace("[0-9.]","",regex=True,inplace=True)df = df.apply(pd.value_counts)df2 = df.count(axis=1) # 按行统计非NaN个数df.insert(0,"打卡次数",df2)df.fillna(0,inplace=True)df# df.to_excel("打卡统计.xlsx")
刚开始的时候不了解pandas.apply()函数用法,用了最原始的办法。其实完全可以人工把EXCEL表格中的多列合并成一列后再统计,这样也是简单。也可以用set(集合)去重的办法解决。但是为了不改变EXCEL文件总体结构的情况下尽量实现自动化,就开始了大量的学习。所以说,不动手,不实践,是找不到好的办法的。实践是检验真理的唯一标准。
以文不对之处还请批评指正,谢谢。