微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python pandas,对数据跨时间分布的均匀性进行评分

如何解决Python pandas,对数据跨时间分布的均匀性进行评分

我正在尝试对一个数据框进行特征工程,其时间增量以秒为单位。我想创建一个功能,该功能可以让跨时间分布更均匀的数据得分更高。

enter image description here

我用 2 个时间线创建了这个示例 DF,一个是均匀分布的,而另一个不是:

df = pd.DataFrame({'id':[1,1,2,2],'timestamp':[
            '2020-09-01 18:14:00','2020-09-01 18:14:01','2020-09-01 18:14:02','2020-09-01 18:14:03','2020-09-01 18:14:04','2020-09-01 19:14:05','2020-09-01 19:14:16','2020-09-01 19:14:18','2020-09-01 19:14:30','2020-09-01 19:14:59'                                                
]})

df['timestamp'] = pd.to_datetime(df.timestamp)
df['delta'] = (df['timestamp']-df['timestamp'].shift()).fillna(pd.timedelta(seconds=0)).astype('int64') / 1000000000

我用谷歌搜索了一下,有点迷茫,标准偏差是要走的路吗?

解决方法

我只是想大声说:

for x in df['id'].unique():
    print(x,df[df['id']==x]['timestamp'].diff().mean().total_seconds())

产生:

1 1.0
2 13.5

.median() 产生:

1 1.0
2 11.5

.std() 产生:

1 0.0
2 11.269427669

然后我会编写一个函数,该函数接收 means 的所有 medians / stddiff 并返回一个值,例如确定它是否密集打包与否取决于您的想法。

因此 13.5 / 11.5id 2 具有更高的平均值 / 均值 / 标准差,这意味着这些点在时间上的分布更为广泛。但是,检查每个 id 的行数是否相同很重要,我认为比较 2 行和 100 行是不明智的。

有趣的问题,我期待听到其他人的想法!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。