我試圖計算(排序的、不同的)日期之間的平均時間。這些日期存儲在列表中,列表作為值保存在字典中(鍵是唯一標識符),如下所示:
my_dict = {'001':[datetime.date(2014, 7, 29), datetime.date(2014, 8, 1), datetime.date(2014, 8, 5), datetime.date(2014, 8, 13)], '002':[datetime.date(2014, 7, 29), datetime.date(2014, 8, 1), datetime.date(2014, 8, 5), datetime.date(2014, 8, 13)]...}
以下是我為此編寫的代碼:
for j,k in dicts.items():
for i in range(0,len(k)):
y = timedelta(days=0)
x = k[i] - k[i-1]
y = y + x
n = len(k)
score = y/n
dicts.update({j:score})
然而,當我將得到的值與數據進行比較時,它們似乎不正確,但我不確定為什么會這樣。有人能告訴我我做錯了什么嗎?
編輯:不正確的意思是平均值不正確。例如,10008吐出“10008”:datetime.timedelta(days=33,秒=57600)。但這一日期分別為2012年11月25日、2013年3月30日和2013年7月9日,相隔33天以上。
首先,時間上的平均差距等于第一個和最后一個差距除以差距數量。因此,如果你不需要其他任何東西,只需使用第一個和最后一個分開的區間數。例如,如果你有7/10、7/20和7/30,你的平均間隔是10天。如果你將7/20改為7/12,你平均還有10天的時間。
除此之外,如果您在工作時需要其他數據,以下是正確的循環: