下面是 Python 实现自动化处理每月考勤缺卡数据的完整攻略:
1. 确定目标
首先,需要明确的是我们的目标:自动处理每个月的考勤缺卡数据,以便我们可以方便地统计出每个员工的考勤情况,及时进行汇报和处理。具体而言,我们需要完成以下任务:
- 读取考勤数据,包括每个员工的工号、姓名、缺卡日期等;
- 检查每个员工的考勤数据,查看是否存在缺卡情况;
- 自动计算出每个员工的缺卡次数;
- 将结果保存到一个文件中,方便后续查看和统计。
2. 准备数据
在开始编写代码之前,我们需要准备一些数据:
- 考勤数据,应该包括每个员工的工号、姓名、考勤日期等;
- 缺卡类型,通常包括旷工、迟到、早退等;
- 缺卡数据,包括每个员工每个月的缺卡情况。
这些数据可以通过 Excel 表格等工具进行维护,也可以通过数据库等方式进行存储和管理。
3. 编写代码
接下来,我们可以开始编写 Python 代码。在此过程中,我们需要用到以下的库:
import pandas as pd
import datetime as dt
读取数据
首先,我们需要从 Excel 表格或其他数据源中读取考勤数据。这里我们以 Excel 表格为例,使用 Pandas 库中的 read_excel() 函数进行读取:
df = pd.read_excel('attendance.xlsx')
在读取数据之后,我们可以使用 Pandas 库中的 head() 函数查看前几行数据:
print(df.head())
检查缺卡
接下来,我们需要检查每个员工的考勤数据,查看是否存在缺卡情况。这里我们以旷工为例,假设旷工是指缺少整天的考勤数据。我们可以编写一个函数来检查旷工情况:
def check_kuanggong(df):
result = pd.DataFrame(columns=['工号', '姓名', '缺卡日期', '缺卡类型'])
for index, row in df.iterrows():
date = row['日期']
if pd.isnull(row['上班时间']) and pd.isnull(row['下班时间']):
result = result.append({
'工号': row['工号'],
'姓名': row['姓名'],
'缺卡日期': date.date(),
'缺卡类型': '旷工'
}, ignore_index=True)
return result
该函数遍历考勤数据表格,检查每个员工每天的考勤情况。如果某个员工某天的上下班时间均为空,就将该记录加入到结果表格中,表明该员工旷工了。
计算缺卡次数
接下来,我们要自动计算出每个员工的缺卡次数。这里我们仍以旷工为例,计算出每个员工的旷工次数。代码如下:
def count_kuanggong(df):
result = pd.DataFrame(columns=['工号', '姓名', '缺卡次数'])
for group_name, group_df in df.groupby(by=['工号', '姓名']):
kuanggong_count = len(group_df[group_df['缺卡类型'] == '旷工'])
result = result.append({
'工号': group_name[0],
'姓名': group_name[1],
'缺卡次数': kuanggong_count
}, ignore_index=True)
return result
该函数将考勤数据按照工号和姓名进行分组,然后统计每个员工的旷工次数。最后将结果保存到一个表格中。
保存结果
最后,我们需要将统计结果保存到一个文件中,方便后续查看和统计。这里,我们将结果保存到 CSV 格式的文件中,代码如下:
def save_result(df, filename):
df.to_csv(filename, encoding='utf-8-sig', index=False)
示例
下面给出两个示例说明:
示例一
假设我们打开 Excel 表格后,发现数据如下:
工号 | 姓名 | 日期 | 上班时间 | 下班时间 |
---|---|---|---|---|
001 | 张三 | 2022-02-01 | 08:30 | 16:30 |
001 | 张三 | 2022-02-02 | 08:20 | 16:40 |
001 | 张三 | 2022-02-03 | 08:25 | |
001 | 张三 | 2022-02-04 | 16:25 |
然后,我们可以通过如下代码进行计算:
# 读取考勤数据
df = pd.read_excel('attendance.xlsx')
# 检查旷工
kg = check_kuanggong(df)
# 计算旷工次数
kg_count = count_kuanggong(kg)
# 保存结果
save_result(kg_count, 'output.csv')
# 查看结果
print(kg_count)
运行后,我们可以得到以下结果:
工号 | 姓名 | 缺卡次数 |
---|---|---|
001 | 张三 | 1 |
这说明张三本月旷工了一天。
示例二
假设我们打开 Excel 表格后,发现数据如下:
工号 | 姓名 | 日期 | 上班时间 | 下班时间 |
---|---|---|---|---|
002 | 李四 | 2022-02-01 | 09:00 | 18:00 |
002 | 李四 | 2022-02-02 | 09:10 | 18:20 |
002 | 李四 | 2022-02-03 | 09:30 | 18:10 |
002 | 李四 | 2022-02-04 | 09:20 | 18:30 |
然后,我们可以通过如下代码进行计算:
# 读取考勤数据
df = pd.read_excel('attendance.xlsx')
# 检查旷工
kg = check_kuanggong(df)
# 计算旷工次数
kg_count = count_kuanggong(kg)
# 保存结果
save_result(kg_count, 'output.csv')
# 查看结果
print(kg_count)
运行后,我们可以得到以下结果:
工号 | 姓名 | 缺卡次数 |
---|---|---|
002 | 李四 | 0 |
这说明李四本月没有旷工。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现自动化处理每月考勤缺卡数据 - Python技术站