利用Python实现对考勤打卡数据处理的总结

一、背景交代

二、说明

三、 8种方法

1. 查看文件是否存在

2. 导入excel文件,并把数据保存为dataframe格式

3. 计算程序运行时间

4. 对格式为“年-月-日 时:分:秒”的时间进行截取

5. 利用已有一列得到一个新列

6. 数据聚合

7. 数据合并(两个dataframe的合并)

8. 程序运行完毕,自主决定关闭运行窗口

四、主要参考资料

五、后记

一、背景交代

要处理的数据主要有两份,一份数据名称为考勤记录,另一份数据名称为打卡记录,目的是合并这两个组数据,呈现的是考勤数据样式,并进行简单的数据处理后输出。

考勤数据

打卡数据

二、说明

数据处理主要用的是Python的Numpy和Pandas两个模块。这里简单介绍了实现下面8种方法时所使用的函数,大多点到为止。具体函数的用法很容易在网上搜到或者在最后列出的资料中找到。本文作者非专业程序员,写这篇文章目的是对制作这一数据处理工具的过程进行总结,文中存在的不规范描述请大佬们谅解。

三、 8种方法

1. 查看文件是否存在

使用os模块

import os

os.path.exists(test_file.txt)

存在返回True,否则False

2. 导入excel文件,并把数据保存为dataframe格式

import pandas as pd

读入:read_file=pd.read_excel(‘read_file.xlsx’)

保存为DataFrame:pd.DataFrame(pd.read_excel())

如果excel文档,可以单独读入某个sheet并保存为DataFrame格式的数据

excelfile_import=’excelfile_import.xlsx’

pd.DataFrame(pd.read_excel(excelfile_import,sheet_name=’sheet1’))

关于数据的操作包括排序等等,参考的文档是 像Excel一样使用python进行数据分析等。

3. 计算程序运行时间

使用datetime

import datetime import datetime

datetime.now() 计算当前时间,可以在程序的开始和结束部分各放置一个,赋给不同变量,两个值相减得到的时间差为程序的运行时间。

两个时间相减得到的时间差涉及类型是timedelta

使用timedelta的total_seconds方法可以获得以秒计数的时间

把秒转为分除以60即可,结果保留2位小数(runtime1是计算得到的时间差)

round(runtime1.total_seconds()/60,2)

4. 对格式为“年-月-日 时:分:秒”的时间进行截取

原始数据:2018-09-05 20:13:09,所在列名称“上班时间”

直接截取会报错,先把这一列转为str

pd.astype({‘上班时间’:’str’})

如果是多于一列,则为pd.astype({‘上班时间’:’str’,’下班时间’:’str’})

为了方便对列截取,设置了一个函数,截取的是前面的日期,提示一点,python中字符串的数据索引一般从0开始,截取一段时,一般是前闭后开。比如下面函数中的a[0,10]

截取的字符串第一个字符的索引是0,最后一个是9,默认步径是1.

def sdata(a)

return(a[0:10])

5. 利用已有一列得到一个新列

生成一个名字为 “日期”的新列,具体采用了dataframe的apply方法,还用到了匿名函数lambda。

df[‘日期’] = df.apply(lambda x:sdata(x[‘上班时间’]), axis=1)

除了根据已存在的一列得到一个新列,还有根据多列得到一个新列的方法,方法类似,搜索一下很容易找到,这里不再赘述。

6. 数据聚合

如背景所述,原始数据有两个文档,一个是考勤记录,一个是打卡记录。

如何处理打卡记录并处理为考勤数据样式,主要方法是数据聚合。

具体就是使用groupby函数,

设置索引:df1=df.groupby([‘工号’,‘姓名’,‘日期’]),

对某一个工号来说,正常一个日期会有两个打卡数据,一个是上班打卡,一个是下班打卡,

当然也可能多于2个,或者只有1个。

要处理的列是:

df2=df1. [‘打卡时间’]

使用内置方法min和max,筛选出每个工号,每天第一次打卡和最后一次打卡,生成两个新列并分别命名为“上班打卡”“下班打卡”:

df3=df2.agg([(‘上班打卡’,‘min’),(‘下班打卡’,‘max’)])

得到的结果如下,但是这样的数据不利于后期再处理。

这时候使用重置index函数reset_index把索引去掉

df4=df3.reset_index()

这样处理后得到如下形式的数据,实现了打卡数据向考勤数据的转化。

其实最初打算使用pandas的数据透视表(Pivot Tables)功能,但是没有找到重置index的方法,最终使用了数据聚合功能,很好的实现的目的。

7. 数据合并(两个dataframe的合并)

把处理过的打卡数据和考勤数据合并。

具体到这里就是把两个dataframe中,每个工号对应每天的打卡数据取并。

首先是合并,合并方法很多,经过比较使用了append方法。

简单合并后,如何实现上面取并的意图,删除当天重复的考勤数据。这里使用的是drop_duplicates方法,drop_duplicates的筛选条件可以是多列。

8. 程序运行完毕,自主决定关闭运行窗口

input(‘Press ’),其实加一行输入回车键的代码

四、主要参考资料

Python for Data Analysis 2nd Edition

从Excel到Python–数据分析进阶指南

https://blog.csdn.net/weixin_39000819/article/details/80942423

五、后记

在把写好的python程序打包成exe的过程中遇到了很多问题,特别是最后用pyinstaller的-F命令打包成一个单独的exe文件以后,在一些电脑上没有办法正常运行。经过一番折腾,尝试采用—D命令,也就是打包成一个文件夹的方法解决了这一问题。

主要参考资料中第3条给出的是网友总结的常用pyinstaller命令,大家打包的时候可以参考。

python 打卡记录代码_利用Python实现对考勤打卡数据处理的总结相关推荐

  1. python画pr曲线代码_利用Python中的numpy包实现PR曲线和ROC曲线的计算

    闲来无事,边理解PR曲线和ROC曲线,边写了一下计算两个指标的代码.在 python 环境下,sklearn里有现成的函数计算ROC曲线坐标点,这里为了深入理解这两个指标,写代码的时候只用到numpy ...

  2. python画图皮卡丘代码_利用Python绘制萌萌哒的皮卡丘

    开发工具 Python版本:3.6.4 相关模块: turtle模块. 环境搭建 安装Python并添加到环境变量即可. 在cmd窗口运行"pikachu.py"文件即可. 效果如 ...

  3. 手机用python画太阳花的代码_利用python绘制太阳花(蓝桥杯试题)

    识别出图形中的基本形状,以基本形状为单位绘制出最终图形.绘制所示图形,中间是半径为120的圆, 四周是边长为80的12个菱形. 使用turtle绘制如图中所示的图形. 1) 背景为白色,中间圆为红色轮 ...

  4. python处理异常值的代码_利用Python进行异常值分析实例代码

    异常值是指样本中的个别值,也称为离群点,其数值明显偏离其余的观测值.常用检测方法3σ原则和箱型图.其中,3σ原则只适用服从正态分布的数据.在3σ原则下,异常值被定义为观察值和平均值的偏差超过3倍标准差 ...

  5. python计算面积代码_利用Python求阴影部分的面积实例代码

    利用Python求阴影部分的面积实例代码 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  利用Python求阴影部分的面积实例代码.txt ] (友情提示:右键点 ...

  6. python制作心形照片墙_利用python生成照片墙的示例代码

    PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了.其官方主页为:PIL. PIL历 ...

  7. python怎么使用别人的代码_利用Python查看微信共同好友功能的实现代码

    总有思路清奇的朋友存在,想实现查看微信共同好友: 由于之前分享的代码有获取过微信好友头像,所以当时第一反应是通过itchat微信接口获取好友信息,比对两个人的好友信息列表就可以实现了.按理说这么简单的 ...

  8. python做游戏代码_利用Python基础代码语句,实现2G时代文字小游戏,世界如此简单!...

    相信许多80,90后都玩过2G时代的文字小游戏,它是来自QQ家园的专属回忆.偷菜,美味小镇,大乐斗,还有精武堂等等,虽然只是文字的输出,但是留给我们这一代的人的印象却是最深刻的.曾经流量很少,响应很快 ...

  9. python利用pandas合并excel表格代码_利用Python pandas对Excel进行合并的方法示例

    前言 在网上找了很多Python处理Excel的方法和代码,都不是很尽人意,所以自己综合网上各位大佬的方法,自己进行了优化,具体的代码如下. 博主也是新手一枚,代码肯定有很多需要优化的地方,欢迎各位大 ...

最新文章

  1. gimp 去掉一个颜色的背景_不用背景图,PPT也能做的高大上?网友:看完这页PPT,我信了...
  2. ios8 UITableView section不显示
  3. 内存溢出和内存泄漏的区别、产生原因以及解决方案 转
  4. python-模块入门二(模块循环导入,区分python文件的两种用途,模块搜索路径,软件开发的目录规范)...
  5. CCKS 2018 | 前沿技术讲习班
  6. PyTorch热身小案例
  7. 麦克风阵列声源定位 GCC-PHAT
  8. 多线程之 NSOperation
  9. 想入行SAP咨询,最具性价比的方式
  10. Verilog常用语法总结
  11. win8 安装双系统 ubuntu 过程
  12. git仓库创建及上传
  13. 与BB-8跨次元对话,三星Bixby亮相星球大战首映礼
  14. 测试流程如何有效落地?
  15. 牛牛的宝可梦Go(dp+floyd)
  16. DoIP的基本信息(一)
  17. 最强TI蓝牙5.0方案CC2652R芯片模块
  18. 如何改变图片的像素大小
  19. 如何无线接收服务器封包,大大通|如何抓取802.11a/b/g/n/ac 的无线网络封包
  20. 前端基本功---JS数据类型知多少

热门文章

  1. KVM虚拟化介绍和安装使用方法
  2. php股票公式,【图】请老师帮忙编写个选股公式_股票公式,选股公式,股票论坛,炒股软件,股票指标_指标编写互助答疑论坛_理想论坛 - 股票论坛...
  3. Docker中成功安装修罗Xiunobbs论坛步骤
  4. 日期,手机号码正则表达式校验,身份证校验等常用工具
  5. html页面拼接,表格数据
  6. 少儿编程培养孩子逻辑思维
  7. Excel只删除开头和末尾空格,中间不管的2种操作
  8. qt中二维数组的使用_文件数据通过qt将二维数组中的像素点显示成一张图片
  9. 2019第二届中国天津国际智慧消防高峰论坛
  10. 苹果或挖走Meta AR公关总监,2022年的头显是真的要来了?