Python:有效地使用数据帧的数据进行计算

圣诞月

我有一个数据框,其中包含客户进出建筑物的数据,请参见此处的示例:

import pandas as pd
from datetime import datetime, timedelta

data = {'customer':  ['nameA', 'nameA', 'nameB', 'nameC', 'nameB', 'nameB', 'nameD', 'nameC', 'nameD', 'nameB'],
        'event': ['in', 'out', 'in', 'in', 'out', 'in', 'in', 'out', 'out', 'out',],
        'time_stamp': ['2020-04-20 09:58:47', '2020-04-20 19:58:52', '2020-04-20 09:28:52',
                       '2020-04-20 10:18:52', '2020-04-20 09:58:52', '2020-04-20 11:08:52',
                       '2020-04-20 13:58:52', '2020-04-20 14:58:52', '2020-04-20 15:58:52',
                       '2020-04-20 19:58:52']}

有没有什么好的方法可以计算每个人在大楼里花费的时间?

我遇到的问题是有些人进入建筑物的频率更高,这使得它更难处理。到目前为止,我根据相应的事件将数据框分为两个单独的“输入”和“输出”,删除所有重复项(因此多次进入建筑物的人被完全忽略),按客户对两个数据框进行排序并计算时间差在数据帧“输入”和“输出”之间。

有更好的方法吗?我正在考虑遍历数据框,但我认为如果您有大型数据集,出于时间原因,您应该避免使用它...

谢谢你的想法!

莫兹韦

您可以重塑、计算时间增量并将它们相加。

注意。这种方法依赖于这样一个事实,即客户对每次访问都有输入和输出值,并且对日期进行排序(如果不添加排序步骤)

df = pd.DataFrame(data)

df['time_stamp'] = pd.to_datetime(df['time_stamp'])

(df
 # identify the occurrence of in/out
 .assign(group=df.groupby(['customer', 'event']).cumcount())
 # reshape to have in/out columns
 .pivot(index=['customer', 'group'], columns='event', values='time_stamp')
 # compute the duration
 .assign(duration=lambda d: d['out']-d['in'])
 # sum the durations per customer
 .groupby('customer')['duration'].sum()
)

输出:

customer
nameA   0 days 10:00:05
nameB   0 days 09:20:00
nameC   0 days 04:40:00
nameD   0 days 02:00:00
Name: duration, dtype: timedelta64[ns]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用groupby在大型数据帧上有效地进行Fillna(正向填充)?

如何使用python在pandas数据帧中有效地迭代行

使用大熊猫为大型数据帧有效地计算每个时间段的值

使用 purrr 有效地计算大型数据帧中的正则表达式匹配

如何有效地计算运行最大值的熊猫数据帧?

如何通过数据帧一次有效地计算行数

如何更有效地计算数据帧的多个子集的斜率?

如何有效地合并 PySpark 数据帧?

有效地连接数据帧

如何有效地对跨数据帧的乘法进行配对

通过分组有效地对数据帧的一列进行改组

如何使用Python中的Pandas有效地将数据帧重组为日期时间项?

在R中使用dplyr有效地重塑数据帧

如何有效地聚合 tex 数据 - python

在python中的pandas数据帧中对许多(1e6-1e10)行组合有效地执行廉价计算

如何为数据帧的单元赋值以有效地在另一个对象上进行迭代

如何有效地对熊猫数据帧进行存储,然后对这些存储桶执行groupby操作?

如何使用for循环将数据有效地附加到pandas数据帧中

使用多个定界符有效地将数据从CSV读取到数据帧中

有效地计算一个数据帧与另一个数据帧的比例

如何在python中有效地合并两个具有容差的数据帧

如何使用python列表有效地重命名数据框索引?

使用Python数据框将数百万行有效地写入文件

如何使用Python将批量数据有效地插入Cassandra?

在python中有效地使用来自csv的数据生成对象

Python使用熊猫中的循环有效地汇总数据

使用数据框子集更有效地将Python用于循环

如何使用Python有效地将CSV文件数据插入MYSQL?

如何使用Python根据交易数据有效地创建用户图?