pandas :将Bin日期间隔30分钟并计算平均值 [英] Pandas: Bin dates into 30 minute intervals and calculate averages

查看:122
本文介绍了 pandas :将Bin日期间隔30分钟并计算平均值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个熊猫数据框,其中有两列,分别是speedtime.

I have a Pandas dataframe with two columns which are speed and time.

speed   date
54.72   1:33:56
49.37   1:33:59
37.03   1:34:03
24.02   7:39:58
28.02   7:40:01
24.04   7:40:04
24.02   7:40:07
25.35   7:40:10
26.69   7:40:13
32.04   7:40:16
28.02   11:05:43
30.71   11:05:46
29.36   11:05:49
18.68   11:05:52
54.72   11:05:55
34.69   10:31:34
25.03   10:31:38
56.04   10:31:40
44.03   10:31:43

我想计算每30分钟的垃圾箱平均速度.例如,第4个bin(1:31-2:00)期间的平均速度为(54.72 + 49.37 + 37.03)/3.我曾考虑过将小时,分钟和秒从00:00转换为秒,然后将其设为1800秒.我曾尝试从scipy.stats中使用binned_statistic,但是我的主要问题是我无法找到一种基于日期来分离垃圾箱并获取平均速度的方法.

I want to calculate the average of speeds per bins of 30 minutes. For example, the average speed during the 4th bin (1:31 - 2:00) is (54.72 + 49.37 + 37.03)/3. I have thought of converting hours, minutes and seconds to seconds from 00:00 and then have bins of 1800 seconds. I have tried to do use binned_statistic from scipy.stats but my main issue is that I cannot find a way to separate bins based on date and get the average of speeds.

有什么想法吗?

推荐答案

转换为日期时间并使用pandas.Grouper +

Converting to datetime and using pandas.Grouper + Offset Aliases:

df['date'] = pd.to_datetime(df.date)
df.groupby(pd.Grouper(key='date', freq='30min')).mean().dropna()

    speed
date    
2018-09-20 01:30:00     47.040000
2018-09-20 07:30:00     26.311429
2018-09-20 10:30:00     39.947500
2018-09-20 11:00:00     32.298000

这篇关于 pandas :将Bin日期间隔30分钟并计算平均值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆