将数据帧切割成间隔以进行统计分析|蟒

时间:2015-10-13 17:51:08

标签: python json pandas statistics dataframe

我迷失了一次练习,我需要在一些日期时间点之间为每个会话聚合数据帧的不同功能,以便最终数据具有以下格式:

          {'Sessions': [{'SessionId':'<Int>', 'MaxNote':'<Int>', 
            'groups': [{'groupId':'Int', 
        'Students':[{'studentId':<Int>,   'date':'datetime', 'MaxEnglishNote':'<Int>',
      'Math':'<Int>', 'Philosophy':'<Int>'}, 
            {'studentId':<Int>, 'date':'datetime', 'MaxEnglishNote':'<Int>', 
    'Math':'<Int>', 'Philosophy':'<Int>'}]},
            {'groupId':'Int', 'Students':
            [{'studentId':<Int>, 'date':'datetime', 'MaxEnglishNote':'<Int>',
 'Math':'<Int>', 'Philosophy':'<Int>'},
             {'studentId':<Int>, 'date':'datetime','MaxEnglishNote':'<Int>',
 'Math':'<Int>', 'Philosophy':'<Int>'}]}]}

我所做的是创建类似json的对象,我存储了这些会话,但接下来的转换和聚合具有唯一ID的值似乎很难。请注意,与唯一StudentID关联的所有值都与StudentID同时发生 所以我问你的建议:我应该以其他形式存储会话间隔,更适合迭代行,聚合等,还是有解决方案来迭代json类对象中的嵌套列表? 我想要实现的最终结果是针对不同统计和ml任务的平面字典

所以我实际拥有的类似json的对象就像:

 [[{'date':'2013-10-09 09:00:00', 'value':'545747', 'field':'GroupeID'},
     {'date':'2013-10-09 09:00:00',  'value':'66463', 'field': 'StudentID'},
     {'date':'2013-10-09 09:00:00' , 'value':'197290' ,'field': 'Philosophy'},
    {'date':'2013-10-09 09:90:00','value':'470186' , 'field':'EnglishBegin'},
    {'date':'2013-10-09 09:00:00' , 'value':'470186' , 'field': 'EnglishEnd'},
     {'date':'2013-10-09 09:00:00' , 'value':'470186', 'field': 'EnglishMiddle'},
     {'date':'2013-10-09 09:00:00' , 'value':'181314' , 'field': 'Math'},
    {'date':'2013-10-09 09:35:00',  'value':'969427' ,'field': 'StudentID'},
    {'date':'2013-10-09 09:35:00' , 'value':'65645' , 'field':'EnglishEnd'},
     {'date':'2013-10-09 09:35:00' , 'value':'45433' , 'field':'EnglishMiddle'},
       {'date':'2013-10-09 09:35:00' , 'value':'181314' ,'field': 'Math'}
   {'date':'2013-10-09 09:35:00' , 'value':'003698' , 'field':'Philosphie'}],
   [{...},

         ......

我从带有列的数据框中获取;日期,字段,值,使用以下代码:

def create_interval():
    intervales=[]
    for index, row in bounds.iterrows():
        s = row['date_start']
        e = row['date_end']
        mask = (df['date'] > s) & (df['date'] < e)
        df_interval=df.loc[mask]
        intervales.append([{k:df_interval.values[i][v] for v,k in  enumerate(df_interval.columns)} for i in range(len(df_interval))])

    return intervales

因此,如果您知道如何存储df_interval以获得最佳解析和分析,那么它可以帮助我!

2 个答案:

答案 0 :(得分:0)

您拥有关系数据并希望执行聚合。如何使用具有适当模型的关系数据库将所有内容链接在一起并计算聚合?

答案 1 :(得分:0)

在StackExchange上找到这个问题和答案之后 https://softwareengineering.stackexchange.com/questions/235707/using-a-relational-database-vs-json-objects-for-event-activity-data

我意识到使用pandas而不是使用json-objects来保持数据帧可能是我拥有的数据类型的最佳解决方案