對時間進行取中位數(shù)、平均值

零、背景

在工作中,經(jīng)常需要分析處理的時間問題,除了耗時,還需要分析時間節(jié)點。例如,某個操作一般在什么時候完成的。

一、處理方案

第一步,將時間轉(zhuǎn)化為數(shù)字;
第二步,將數(shù)字取需要的范圍或者中位數(shù);
第三步,將所取數(shù)字還原為字符串格式;

二、處理代碼

from datetime import datetime, timedelta
time_list = ["09:30", "09:20", "09:21", "09:22", "09:20", "09:21", "09:22", "09:28"]

def get_median(ldata):
    sort_data = sorted(ldata)
    half = len(ldata)//2
    return (sort_data[half] + sort_data[-half]) / 2

def trans_stime_to_num(time_str, time_format):
    return (datetime.strptime(time_str, time_format) - datetime(2000, 1, 1)).seconds

def trans_num_to_stime(num, time_format):
    return (datetime(2000, 1, 1) + timedelta(seconds=num)).strftime(time_format)

time_nums = [trans_stime_to_num(t, "%H:%M") for t in time_list]

print(trans_num_to_stime(get_median(time_nums), "%H:%M"))

三、需要注意的問題

1、python datetime 報錯OSError: [Errno 22] Invalid argument
在windows服務器中,對于時間數(shù)字,通常該數(shù)值會被限制在 1970 年至 2038 年之間。當默認僅使用時間格式是,默認為1900年,導致轉(zhuǎn)化時報錯。
處理方式:

將默認的時間轉(zhuǎn)化至2000年之后。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容