【问题标题】:Generating regular time series from irregular time series in pandas从 Pandas 中的不规则时间序列生成规则时间序列
【发布时间】:2016-04-07 10:59:49
【问题描述】:

我有一个数据分析任务,我想在其中分析实时服务日志。您能帮我在 Pandas 中如何做到这一点吗?

我的初始数据框如下所示:

我想为每个服务名称生成时间序列,并在此基础上进行相关性分析。

如何通过聚合它们各自的数据,为每个服务名称将这个数据帧划分为不同的数据帧(以时隙为索引),如下所示?

Ps:我见过类似的问题,但我相信我的问题是不同的,因为我想从数据框中生成许多时间序列。如果这很简单,请提前抱歉,我是 Pandas 的新手 :)

这是我的数据框代码:

                ERRORCODE   ERRORTEXT   SERVICENAME REQTDURATION    RESPTDURATION   HOSTDURATION

10:00:27:000        NaN        NaN      serviceA       0              1             4612    
10:00:27:822        NaN        NaN      serviceB       0              1             14994   
10:01:27:622        -1        'Timeout' serviceA       1              0             7695    
10:01:27:323        NaN        NaN      serviceD       0              1             2612
10:01:27:755        NaN        NaN      serviceA       0              1             1612
10:02:27:666        -5        'Timeout' serviceA       0              1             11612
10:02:27:111        NaN        NaN      serviceB       0              1             111112
10:02:27:333        NaN        NaN      serviceC       0              1             412

【问题讨论】:

    标签: python numpy pandas time-series data-analysis


    【解决方案1】:

    开始于:

                     ERRORCODE  ERRORTEXT SERVICENAME  REQTDURATION  RESPTDURATION  \
    10:00:27:000        NaN        NaN    serviceA             0              1   
    10:00:27:822        NaN        NaN    serviceB             0              1   
    10:01:27:622         -1  'Timeout'    serviceA             1              0   
    10:01:27:323        NaN        NaN    serviceD             0              1   
    10:01:27:755        NaN        NaN    serviceA             0              1   
    10:02:27:666         -5  'Timeout'    serviceA             0              1   
    10:02:27:111        NaN        NaN    serviceB             0              1   
    10:02:27:333        NaN        NaN    serviceC             0              1   
    
                  HOSTDURATION  
    10:00:27:000          4612  
    10:00:27:822         14994  
    10:01:27:622          7695  
    10:01:27:323          2612  
    10:01:27:755          1612  
    10:02:27:666         11612  
    10:02:27:111        111112  
    10:02:27:333           412 
    

    index 转换为DateTimeIndex

    df.index = pd.to_datetime(df.index, format='%H:%M:%S:%f')
    

    然后循环遍历SERVICENAME 组:

    for service, data in df.groupby('SERVICENAME'):
        service_result = pd.concat([data.groupby(pd.TimeGrouper('Min')).size(), data.groupby(pd.TimeGrouper('Min'))['REQTDURATION', 'RESPTDURATION', 'HOSTDURATION'].mean()], axis=1)
        service_result.columns = ['ERRORCOUNT', 'AVGREQTURATION', 'AVGRESPTDURATION', 'AVGHOSTDURATION']
        service_result.index = service_result.index.time
    

    产量:

    serviceA
    
              ERRORCOUNT  AVGREQTURATION  AVGRESPTDURATION  AVGHOSTDURATION
    10:00:00           1             0.0               1.0           4612.0
    10:01:00           2             0.5               0.5           4653.5
    10:02:00           1             0.0               1.0          11612.0
    
     serviceB
              ERRORCOUNT  AVGREQTURATION  AVGRESPTDURATION  AVGHOSTDURATION
    10:00:00           1               0                 1            14994
    10:01:00           0             NaN               NaN              NaN
    10:02:00           1               0                 1           111112
    
     serviceC
              ERRORCOUNT  AVGREQTURATION  AVGRESPTDURATION  AVGHOSTDURATION
    10:02:00           1               0                 1              412
    
     serviceD
              ERRORCOUNT  AVGREQTURATION  AVGRESPTDURATION  AVGHOSTDURATION
    10:01:00           1               0                 1             2612
    

    【讨论】:

    • 当我运行这个时,我得到了以下异常,我错过了什么吗? ValueError:解包的值太多
    • 起源于哪一行?
    • 在 foo 循环的开头。 df 是我的数据框对象吗?它说我猜不能像这样迭代数据框?
    • 应该有类似 df.iterrows() 的东西?
    • 应该是.groupby('SERVICENAME'),请参阅更新的答案。第一行的第一行还有一个paren拼写错误。
    猜你喜欢
    • 2023-01-20
    • 2020-02-01
    • 2011-04-23
    • 2012-05-12
    • 2011-06-16
    • 2014-09-02
    • 1970-01-01
    • 2021-01-08
    • 2013-11-07
    相关资源
    最近更新 更多