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

一、背景交代

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

二、说明

数据处理主要用的是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’)])
得到的结果如下,但是这样的数据不利于后期再处理。
数据聚合1
这时候使用重置index函数reset_index把索引去掉
df4=df3.reset_index()
这样处理后得到如下形式的数据,实现了打卡数据向考勤数据的转化。
重置index
其实最初打算使用pandas的数据透视表(Pivot Tables)功能,但是没有找到重置index的方法,最终使用了数据聚合功能,很好的实现的目的。

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

把处理过的打卡数据和考勤数据合并。
具体到这里就是把两个dataframe中,每个工号对应每天的打卡数据取并。
首先是合并,合并方法很多,经过比较使用了append方法。
简单合并后,如何实现上面取并的意图,删除当天重复的考勤数据。这里使用的是drop_duplicates方法,drop_duplicates的筛选条件可以是多列。

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

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

四、主要参考资料

  1. Python for Data Analysis 2nd Edition
  2. 从Excel到Python–数据分析进阶指南
  3. https://blog.csdn.net/weixin_39000819/article/details/80942423

五、后记

在把写好的python程序打包成exe的过程中遇到了很多问题,特别是最后用pyinstaller的-F命令打包成一个单独的exe文件以后,在一些电脑上没有办法正常运行。经过一番折腾,尝试采用—D命令,也就是打包成一个文件夹的方法解决了这一问题。
主要参考资料中第3条给出的是网友总结的常用pyinstaller命令,大家打包的时候可以参考。

  • 4
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 可以的,利用Python可以使用pandas库来处理Excel数据,pandas提供了许多函数来读取、写入、修改Excel表格数据,比如可以使用pandas.read_excel()函数来读取Excel表格数据,使用pandas.DataFrame()函数来创建数据框架,并使用pandas.to_excel()函数将修改后的数据保存到Excel表格中。同时,pandas还提供了很多实用的函数来处理Excel数据,比如可以使用pandas.DataFrame.loc[]函数来实现数据的增、删、改、查操作。 ### 回答2: 利用Python处理Excel数据可以通过安装第三方库pandas来实现,pandas提供了丰富的功能可以方便地对Excel进行操作。 首先,我们需要安装pandas库,可以使用以下命令来安装: ```python pip install pandas ``` 接下来,我们可以使用pandas库来进行Excel数据的增删改查操作。 1. 增加数据:我们可以使用pandas库的`DataFrame`对象来创建一个数据表,并添加数据到其中。例如: ```python import pandas as pd # 创建一个空的DataFrame表格 df = pd.DataFrame() # 添加数据到表格中 df['姓名'] = ['张三', '李四', '王五'] df['年龄'] = [25, 30, 35] ``` 2. 删除数据:可以使用pandas库的`drop()`方法来删除指定行或列。例如,删除第二行的数据: ```python df = df.drop(1) # 删除第2行的数据 ``` 3. 修改数据:可以使用`loc`方法来定位需要修改的单元格,并进行修改。例如,修改第一行第二列的数据: ```python df.loc[0, '年龄'] = 28 # 修改第1行第2列的数据为28 ``` 4. 查询数据:可以使用pandas库的`loc`方法来定位需要查询的单元格,并获取对应的数据。例如,查询第一行第二列的数据: ```python data = df.loc[0, '年龄'] # 获取第1行第2列的数据 ``` 以上就是利用Python处理Excel数据的增删改查操作的简单示例。通过pandas库,我们可以方便地对Excel数据进行操作,并进行各种数据处理和分析。 ### 回答3: 利用Python处理Excel数据可以使用openpyxl库进行操作。下面将分别介绍如何实现增加、删除、修改和查询Excel数据。 增加数据: 1. 导入openpyxl库。 2. 打开Excel文件,可以使用load_workbook函数。 3. 选择工作表,可以使用active属性或者获取工作表名称进行选择。 4. 使用append函数向工作表添加新行,需要将数据以列表的形式传入。 5. 保存Excel文件。 删除数据: 1. 导入openpyxl库。 2. 打开Excel文件。 3. 选择工作表。 4. 使用delete_rows函数删除指定行,需要指定删除的起始行和结束行。 5. 保存Excel文件。 修改数据: 1. 导入openpyxl库。 2. 打开Excel文件。 3. 选择工作表。 4. 使用cell函数选中要修改的单元格,需要指定单元格的行和列。 5. 使用value属性修改单元格的值。 6. 保存Excel文件。 查询数据: 1. 导入openpyxl库。 2. 打开Excel文件。 3. 选择工作表。 4. 使用cell函数选中要查询的单元格,需要指定单元格的行和列。 5. 使用value属性获取单元格的值。 以上是使用Python处理Excel数据的基本方法,可以根据具体需求进行相应的操作。为了更好地处理Excel数据,还可以使用其他库如pandas、xlrd等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值