python - 如何可视化在 pandas 中的某个位置花费的连续时间?

标签 python pandas data-analysis

我有一些带有时间戳和位置数据的数据,如下所示:

A  2013-02-05 19:45:00    (39.94, -86.159)
A  2013-02-05 19:55:00    (39.94, -86.159)
A  2013-02-05 20:00:00   (39.777, -85.995)
A  2013-02-05 20:05:00   (39.775, -85.978)
B  2013-02-05 22:20:00   (39.935, -86.159)
B  2013-02-05 22:25:00   (39.935, -86.159)
B  2013-02-05 23:55:00   (39.951, -86.151)
B  2013-02-06 00:00:00   (39.951, -86.151)
B  2013-02-06 00:05:00   (39.906, -86.196)
C  2013-02-06 00:25:00    (39.82, -86.249)
C  2013-02-06 00:30:00    (39.82, -86.249)
C  2013-02-06 02:45:00   (41.498, -81.527)
C  2013-02-06 02:55:00   (41.498, -81.527)
C  2013-02-06 04:35:00    (39.82, -86.249)
C  2013-02-06 04:40:00    (39.82, -86.249)

我需要做的是,对于每个用户每天获取某人连续出现在一个位置的次数的直方图。因此,我想标记每个连续时间段,其中每个用户每天的位置保持不变。

我该如何在 python pandas 中实现这一点?

用户在一天内重复该位置的情况是可能的,如用户 C 所示,该位置(39.82.-86.249)再次出现。因此,这些情况应被视为单独的连续时间。

最佳答案

我认为您正在寻找 pd.Series.shift

x = pd.Series([1, 3, 3, 2, 3, 3])

x
0    1
1    3
2    3
3    2
4    3
5    3

x.shift(-1)
0     3
1     3
2     2
3     3
4     3
5   NaN

(x != x.shift(-1)).sum()
4

假设问题中的数据是输出

df[['COL1', 'COL2', 'COL3']]

然后,这应该可以为您提供每个用户/每天的唯一位置数量。我不确定这是否正是您想要的,但应该有助于入门

df['DATE'] = df.COL2.apply(lambda s: pd.to_datetime(s).date())
df.groupby(['COL1', 'DATE']).apply(lambda sdf: (sdf.COL3 != sdf.COL3).sum())

关于python - 如何可视化在 pandas 中的某个位置花费的连续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15661821/

相关文章:

python - 单个DataFrame列python/pandas中的groupby逗号分隔值

python - 使用月平均值的 Pandas fillna 缺失小时时间点数据的方法

r - 机器学习项目: split training/test sets before or after exploratory data analysis?

data-analysis - 如何加快 Koalas 的头部功能执行时间?

python - 检测python中的循环依赖

python - Py.test - 从 csv 将变量应用于装饰器?

python - 组内条件计数

python - 用特殊字符过滤 df

Python - 基于键/值标识的分组/合并字典

python - 在 Pandas 中跨分组数据框减去值