编写python代码计算出勤时长。原始数据是一个excel表,包含员工工号,员工姓名,刷卡时间,刷卡类型(进门,出门);一个员工一天的出勤时长等于每对出门减进门差的累加,一个员工一天会有多次的进门或者出门记录;请编写python代码,计算多名员工一个月中每一天的出勤时长
时间: 2024-10-24 15:13:17 浏览: 49
首先,你需要安装一些库来处理Excel文件,如pandas用于数据操作,openpyxl或xlrd用于读取Excel。以下是基本的Python代码示例,假设你的数据已经按照上述格式存储在名为`attendance.xlsx`的Excel文件中:
```python
import pandas as pd
# 读取Excel文件
def read_excel(file_name):
data = pd.read_excel(file_name)
return data
# 计算单个员工每天的出勤时长
def calculate_attendance_duration(employee_data):
start_times = employee_data[employee_data['刷卡类型'] == '进门']['刷卡时间']
end_times = employee_data[employee_data['刷卡类型'] == '出门']['刷卡时间']
durations = (end_times - start_times).dt.total_seconds() / 60 # 转换为分钟
return durations.groupby(pd.Grouper(freq='D')).sum() # 按天汇总
# 定义一个函数处理所有员工的出勤时长
def process_all_employees(file_name):
data = read_excel(file_name)
employees = data['员工工号'].unique()
daily_durations = {}
for emp_id in employees:
emp_data = data[data['员工工号'] == emp_id]
daily_durations[emp_id] = calculate_attendance_duration(emp_data)
return daily_durations
# 使用函数并保存结果
all_daily_durations = process_all_employees('attendance.xlsx')
# 打印或保存到新的Excel文件或数据库中,取决于你的需求
```
在这个代码中,我们首先从Excel文件中提取数据,然后按员工分组计算他们的出勤时长。`pd.Grouper(freq='D')`指定了我们按日期(Day)分组。注意,这只是一个基础的解决方案,实际应用中你可能需要考虑异常处理、缺失值等问题。
阅读全文