Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 大熊猫组中日期之间差异的标准偏差_Python_Pandas_Pandas Groupby_Standard Deviation - Fatal编程技术网

Python 大熊猫组中日期之间差异的标准偏差

Python 大熊猫组中日期之间差异的标准偏差,python,pandas,pandas-groupby,standard-deviation,Python,Pandas,Pandas Groupby,Standard Deviation,我有一个事务的数据框架。我的一列是date datetime64[ns]。我正在制作一组用户电子邮件作为id。我感兴趣的是每个用户的订单之间的时间变化。因此,我在group by中寻找的是每个用户的日期差的标准偏差(以天为单位)。如果用户有两个或至少两个事务,则答案应为0。这是我手动更改的一些数据帧: df email date 0 cuadros.paolo@gmail.com

我有一个事务的数据框架。我的一列是date datetime64[ns]。我正在制作一组用户电子邮件作为id。我感兴趣的是每个用户的订单之间的时间变化。因此,我在group by中寻找的是每个用户的日期差的标准偏差(以天为单位)。如果用户有两个或至少两个事务,则答案应为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

我试过很多方法,但还是没有得到。请帮助。

对于顺序差异,您的解释似乎最有意义:

df.sort_values('date').groupby('email').apply(lambda x: x.date.diff().std()).fillna(0)
输出: 对于具有1个值的组,.std将为null非null值,并且由于.diff将非null观察值的数量减少1,因此对于具有2个或更少测量值的任何组,这将自动返回NaN,我们用0填充


另外,请注意熊猫的默认设置是使用N-1个自由度。

当用户有2个以上的日期时会发生什么?我们是在做所有的两两组合,还是仅仅是顺序差异?.diff计算每个组中日期的第一个差异,即当前行–前一行,但这里需要的是从每个日期中减去相同的任意日期。@PeterLeimbigler这有点含糊不清。他们希望每个用户的订单之间的时间变化。因此,在我的例子中,我按顺序计算两个订单之间的时间,然后找出变化。我认为这更有意义,因为在您的计算中,随着用户继续下更多订单,标准偏差必然会增加。也就是说,在您的定义中,2011年至2017年订单的人比2016年至2017年订单的人具有更多的“可变性”,即使他们每周都下订单。我的理解是,要计算的标准偏差是连续订单的实际日期之间的差异。我认为阿洛兹的解决方案是正确的。你只需要在groupby之后和apply之前添加一个排序,并在末尾添加一个fillna0来生成NaN零。非常感谢!这就是我要找的。
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]