Skip to main content
 首页 » 编程设计

python之计算日期列表之间的平均天数

2025年05月04日14soundcode

我正在尝试计算用户在 Instagram 上的发帖频率。因此,我建立了他们最近发布日期的列表。像这样:

['01-23-2019', '01-19-2019', '01-12-2019', '12-30-2018', '12-28-2018', '12-20-2018', '11-21-2018', '11-09-2018', '10-26-2018', '10-12-2018', '09-30-2018', '09-16-2018', '09-06-2018', '08-31-2018', '08-15-2018', '08-12-2018', '08-09-2018', '07-30-2018', '07-27-2018', '07-24-2018', '07-20-2018', '07-17-2018', '07-14-2018', '07-08-2018', '07-06-2018', '06-30-2018', '06-26-2018', '06-13-2018', '06-08-2018', '06-06-2018', '05-28-2018', '05-21-2018', '05-19-2018', '05-11-2018', '05-08-2018', '05-03-2018', '05-01-2018', '04-12-2018', '04-05-2018', '03-31-2018', '03-27-2018', '03-10-2018', '03-06-2018', '02-25-2018', '02-21-2018', '02-18-2018', '02-16-2018', '02-11-2018', '02-06-2018', '02-03-2018'] 

理想情况下,我想获得发布日期之间的平均天数。所以我最终得到了一个频率数:例如'用户每 n 天发布一次'。

我从 JSON 代码中获取时间戳并将其转换为如下所示的可读内容:

import datetime 
#prepare timestamp to calculate frequency 
taken_on = post_details['taken_at_timestamp'] 
readable_post_date = datetime.datetime.fromtimestamp(taken_on).strftime('%m-%d-%Y') 
post_dates.append(readable_post_date) 

我应该如何最好地处理这个以获得小数结果?

请您参考如下方法:

只需将日期之间的差异相加并除以总数即可。为了简单起见

from datetime import datetime, timedelta 
 
dates = ['01-23-2019', '01-19-2019', '01-12-2019', '12-30-2018', '12-28-2018', '12-20-2018', '11-21-2018', '11-09-2018', '10-26-2018', '10-12-2018', '09-30-2018', '09-16-2018', '09-06-2018', '08-31-2018', '08-15-2018', '08-12-2018', '08-09-2018', '07-30-2018', '07-27-2018', '07-24-2018', '07-20-2018', '07-17-2018', '07-14-2018', '07-08-2018', '07-06-2018', '06-30-2018', '06-26-2018', '06-13-2018', '06-08-2018', '06-06-2018', '05-28-2018', '05-21-2018', '05-19-2018', '05-11-2018', '05-08-2018', '05-03-2018', '05-01-2018', '04-12-2018', '04-05-2018', '03-31-2018', '03-27-2018', '03-10-2018', '03-06-2018', '02-25-2018', '02-21-2018', '02-18-2018', '02-16-2018', '02-11-2018', '02-06-2018', '02-03-2018'] 
sorted_dates = sorted(datetime.strptime(d, '%m-%d-%Y') for d in dates) 
 
time_difference = timedelta(0) 
counter = 0 
for i in range(1, len(sorted_dates), 1): 
    counter += 1 
    time_difference += sorted_dates[i] - sorted_dates[i-1] 
 
 
frequency = time_difference / counter 
print(frequency.days) # 7 days