如何解决Python pandas,对数据跨时间分布的均匀性进行评分
我正在尝试对一个数据框进行特征工程,其时间增量以秒为单位。我想创建一个新功能,该功能可以让跨时间分布更均匀的数据得分更高。
我用 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
/ std
或 diff
并返回一个值,例如确定它是否密集打包与否取决于您的想法。
因此 13.5
/ 11.5
或 id
2
具有更高的平均值 / 均值 / 标准差,这意味着这些点在时间上的分布更为广泛。但是,检查每个 id
的行数是否相同很重要,我认为比较 2 行和 100 行是不明智的。
有趣的问题,我期待听到其他人的想法!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。