为了账号安全,请及时绑定邮箱和手机立即绑定

聚合时间序列数据

聚合时间序列数据

呼啦一阵风 2022-10-25 11:01:37
我不是数据科学家。我确实知道 python,我目前必须管理定期进入的时间序列数据。这些数据大部分都是零或长时间相同的值,为了节省内存,我想将它们过滤掉。是否有一些标准方法(我显然不知道)或者我应该实现自己的算法?我想要实现的是以下内容:interval  value   result(summed) 1         0       02         0       # removed3         0       04         1       15         2       26         2       # removed7         2       # removed8         2       29         0       010        0       0任何帮助表示赞赏!
查看完整描述

4 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

谢谢大家!看着答案,我想我可以得出结论,我需要自己动手。我会用你的意见作为灵感。再次感谢 !



查看完整回答
反对 回复 2022-10-25
?
呼唤远方

TA贡献1856条经验 获得超11个赞

这是代码:


l = [0, 0, 0, 1, 2, 2, 2, 2, 0, 0]


for (i, ll) in enumerate(l):

    if i != 0 and ll == l[i-1] and i<len(l)-1 and ll == l[i+1]: 

        continue

    print(i+1, ll)

它产生你想要的东西。您没有指定输入数据的格式,所以我假设它们在列表中。条件ll == l[i-1]和ll == l[i+1]是跳过重复值的关键。


查看完整回答
反对 回复 2022-10-25
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

没有快速的函数调用来做你需要的。以下是一种方式


import pandas as pd


df = pd.DataFrame({'interval':[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],

             'value':[0, 0, 0, 1, 2, 2, 2, 2, 0, 0]}) # example dataframe



df['group'] = df['value'].ne(df['value'].shift()).cumsum() # column that increments every time the value changes


df['key'] = 1 # create column of ones

df['key'] =  df.groupby('group')['key'].transform('cumsum') # get the cumulative sum 


df['key'] = df.groupby('group')['key'].transform(lambda x: x.isin( [x.min(), x.max()])) # check which key is minimum and which is maximum by group


df = df[df['key']==True].drop(columns=['group', 'key']) # keep only relevant cases


df


查看完整回答
反对 回复 2022-10-25
?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

您可以对数据框使用 pandas 查询来实现此目的:


import pandas as pd


matrix = [[1,0, 0],

[2, 0, 0],

[3, 0, 0],

[4, 1, 1],

[5, 2, 2],

[6, 2, 0],

[7, 2, 0],

[8, 2, 2],

[9, 0, 0],

[10,0, 0]]



df = pd.DataFrame(matrix, columns=list('abc'))

print(df.query("c != 0"))


查看完整回答
反对 回复 2022-10-25
  • 4 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号