将大型 GPS 数据按 1 分钟分组

Posted

技术标签:

【中文标题】将大型 GPS 数据按 1 分钟分组【英文标题】:Grouping large GPS data by 1 min 【发布时间】:2016-08-24 22:17:18 【问题描述】:
date          object
lat          float64
lon          float64
speed        float64
direction    float64

在我的csv 文件中,日期格式如下2016-04-29 11:45:21 它将日期显示为对象类型。每分钟有10多条记录。所以,我想组合在一起,并为每 1 分钟 GPS 数据应用速度平均值。 我尝试以下代码,其中数据文件是熊猫数据框。

datafile.groupby(pd.TimeGrouper('1Min'))['speed'].mean()

出现以下错误:

TypeError: 轴必须是 DatetimeIndex,但得到了一个 'Int64Index' 的实例


在注释中编辑后 datafile.head() 显示table outputtaxi table output after datafile.head()

现在我从 06:35:20 到 06:59:59 有 1069 条记录。我需要找到每 1 分钟数据的平均速度

【问题讨论】:

【参考方案1】:

您需要使用以下方法从您的 data 列创建一个 DateTimeIndex

df.index = pd.to_datetime(df.loc[: 'date'], format='%Y-%m-%d %H:%M:%S')

但是,您可以利用内置的.read_csv() 功能,使用parse_dates=Trueindex_col=0date 读取为index,然后解析index(假设日期是第一个column)。

【讨论】:

但日期显示为 1970-01-01 00:00:00 为 2013-12-16 06:35:20。它没有显示 2013 年 将有助于显示df.head()。请参阅更新 - 您可能可以优化您的 .read_csv() 以在阅读时正确解析日期 - 请参阅文档 pandas.pydata.org/pandas-docs/stable/generated/… 那行得通,但还没有弄清楚。坚持了几个小时。当我使用上述命令时,输出为 1970-01-01 00:00:00.000000000 2013-12-16 06:35:20 speed 96 包含 1069 条记录。最后一条记录是 1970-01-01 00:00:00.000001068 2013-12-16 06:59:59 speed 78 为此,我如何按 1 分钟分组,因为按问题要求按上述代码分组仅给出值.. 运行 df.head() 并将结果添加到您的问题中,需要查看输出以了解您的数据的情况。 我已编辑。由于帐户限制,我无法发布图像。有一个链接我在 datafile.head() 中附加了输出链接在单击表输出出租车时打开

以上是关于将大型 GPS 数据按 1 分钟分组的主要内容,如果未能解决你的问题,请参考以下文章

按数据区间分组

按 1 分钟间隔分组操作链 sql BigQuery

SQL 按日期时间分组,最大差异为 x 分钟

oracle按每个10分钟进行分组展示数据

如何使用熊猫按 10 分钟对时间序列进行分组

Oracle 按分钟而不是每天分组