У меня есть кадр данных, который выглядит следующим образом:
employee entry timestamp
A 1 2012-04-06 14:51
2012-04-06 14:52
2012-04-06 14:53
2 2012-04-06 15:21
2012-04-06 15:22
2012-04-06 15:23
3 2012-04-06 13:42
2012-04-06 13:43
2012-04-06 13:44
B 1 2012-04-06 14:48
2012-04-06 14:49
2012-04-06 14:50
2 2012-04-06 15:24
2012-04-06 15:25
2012-04-06 15:26
3 2012-04-06 13:33
2012-04-06 13:34
2012-04-06 13:35
Здесь отметки времени для каждой записи всегда сортируются. Что я хочу найти:
- Разница между каждой отметкой времени для каждой записи
- Среднее из этих различий для каждой записи
- Среднее из средних значений для записи (рассчитано выше) на одного работника
В конце я хочу что-то вроде:
employee average
A 00:05:21
B 00:04:23
Я делаю следующее:
df["deltas"] = df.groupby(["employee", "entry"])["timestamp"].diff()
# drop all NATs from df["deltas"]
described = df["deltas"].groupby(["employee", "entry"]).describe()
means = described.groupby(["employee", "entry"]).mean()
average = means.groupby(["employee"]).mean()
Я хотел получитьнекоторая обратная связь, если это правильный способ делать вещи, основанные на постановке задачи. Мои результаты выглядят так, как будто все в порядке, но я не уверен, что мои groupby()
звонки находятся в правильном месте и могу ли я сделать это лучше. Я впервые работаю с pandas
. Был бы очень признателен за некоторые глаза на это.
По сути, временные метки для каждой записи представляют собой каждый раз, когда сотрудник обновлял эту запись, я хочу найти среднее время, которое сотрудник тратит на обновление записи. Сотрудник обновит запись x раз. x всегда определен и одинаков для всех сотрудников и сотрудников.