Стандартное отклонение разницы между датами в группе панд по - PullRequest
0 голосов
/ 18 октября 2018

У меня есть датафрейм транзакций.Одним из моих столбцов является дата (datetime64 [нс]).Я делаю группу из пользователей (электронная почта как идентификатор).Что меня интересует, так это изменчивость времени между заказами каждого пользователя.Так что я ищу в группе, чтобы найти стандартное отклонение разницы между датами (в днях) для каждого пользователя.Если у пользователя есть две или меньше транзакций, ответ должен быть 0. Это часть данных (я изменил некоторые вещи вручную):

df

                  email                       date
0                 cuadros.paolo@gmail.com     2018-05-01 12:29:59
1                   rlez_1202@hotmail.com     2018-07-11 13:43:22
2                 cuadros.paolo@gmail.com     2018-09-21 12:29:23
3             paola.alvarado@rumah.com.pe     2018-09-01 09:21:43
4                    luchosuito@gmail.com     2018-04-30 12:29:30
5             paola.alvarado@rumah.com.pe     2018-03-22 12:29:23
6           davida.alvarado.703@gmail.com     2018-07-21 12:29:17
7                 cuadros.paolo@gmail.com     2018-08-11 12:29:41
8                   rlez_1202@hotmail.com     2018-05-23 12:29:14
9                    luchosuito@gmail.com     2018-06-01 12:29:17
10               jessica26011@hotmail.com     2018-07-18 12:29:20
11                cuadros.paolo@gmail.com     2018-08-21 12:29:40
12                  rlez_1202@hotmail.com     2018-10-01 12:29:31
13            paola.alvarado@rumah.com.pe     2018-06-01 12:29:20
14              miluska-paico@hotmail.com     2018-05-21 12:29:18
15             cinthia_leon87@hotmail.com     2018-07-20 12:29:59

Я пробовал много способов, но все еще не могу получитьЭто.Пожалуйста, помогите.

1 Ответ

0 голосов
/ 18 октября 2018

Для последовательных различий, которые, по-видимому, наиболее целесообразны, учитывая ваше объяснение:

df.sort_values('date').groupby('email').apply(lambda x: x.date.diff().std()).fillna(0)

Вывод:

email
cinthia_leon87@hotmail.com              0 days 00:00:00
cuadros.paolo@gmail.com         48 days 05:04:12.988006
davida.alvarado.703@gmail.com           0 days 00:00:00
jessica26011@hotmail.com                0 days 00:00:00
luchosuito@gmail.com                    0 days 00:00:00
miluska-paico@hotmail.com               0 days 00:00:00
paola.alvarado@rumah.com.pe     14 days 18:10:16.764069
rlez_1202@hotmail.com           23 days 06:17:04.453408
dtype: timedelta64[ns]

.std() будет нулевым для групп с 1 значением не-null value и, поскольку. diff уменьшает количество ненулевых наблюдений на 1, это автоматически возвращает NaN для любых групп с 2 или менее измерениями, которые мы заполняем 0.

Также простоПомните, что по умолчанию для pandas используется N-1 степеней свободы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...