将大型 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=True
和index_col=0
将date
读取为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 分钟分组的主要内容,如果未能解决你的问题,请参考以下文章