Python学习笔记:计算平均打卡时间

苦命的打工人 Hider 每天上班都需要打卡,现在需要统计近一段时间内的平均打卡时间。

一、想法

  • 第一想法:利用 mean 函数直接求平均,但实际得到的是所有时间的均值,并非时间的均值。
  • 第二想法:将日期与时间进行拆分,只对时间求平均。
  • 第三想法:求每一个时间与0点之间的时间差,求平均后,再加到0点上。

二、实操

  • 测试数据
ts = '''
2020-10-28 09:59:44
2020-10-29 10:01:32
2020-10-30 10:04:27
2020-11-02 09:55:43
2020-11-03 10:05:03
2020-11-04 09:44:34
2020-11-05 10:10:32
2020-11-06 10:02:37
'''
  • 实操脚本
import pandas as pd
from io import StringIO

df = pd.read_csv(StringIO(ts), names=['time'], parse_dates=['time'])

df.time.mean() # Timestamp('2020-11-02 04:00:31.500000')

df['time'].apply(lambda x: x.replace(year=2023, month=6, day=6)).mean()
df['time'].apply(pd.Timestamp.replace, year=2023, month=6, day=6).mean()
df['time'].agg(pd.Timestamp.replace, year=2023, month=6, day=6).mean()
# Timestamp('2023-06-06 10:00:31.500000')

StringIO 用于把字符串读入内存缓冲区

parse_dates 用于指定时间类型的列

直接替换为同一天的时间,再进行求平均操作。

参考链接:pandas 计算平均打卡上班时间

posted @ 2023-06-12 10:48  Hider1214  阅读(207)  评论(0编辑  收藏  举报