2016-12-22 1 views
0

У меня есть данные временных рядов, который выглядит примерно так:Представляющие панды описывают() в форме Dict

>>> data 

      cost    Timestamp value 
0  0.0032 2016-10-01 00:00:00-04:00 0.0179 
1  0.0033 2016-10-01 01:00:00-04:00 0.0181 
2  0.0741 2016-10-01 02:00:00-04:00 0.4117 
3  0.0679 2016-10-01 03:00:00-04:00 0.3769 
4  0.0761 2016-10-01 04:00:00-04:00 0.4230 
5  0.0868 2016-10-01 05:00:00-04:00 0.4823 
... 

Я хочу, чтобы иметь возможность представить краткую информацию о следующих сгруппированы по значению в форме Dict таким образом, что могут быть возвращены через RESTful рамках

>>> times = pd.DatetimeIndex(data['Timestamp']) 
>>> data.groupby(times.time).describe() 

        cost  value 
00:00:00 count 43.000000 43.000000 
     mean 0.004323 0.024060 
     std  0.003811 0.021196 
     min  0.003200 0.017500 
     25%  0.003200 0.017800 
     50%  0.003200 0.017900 
     75%  0.003200 0.018000 
     max  0.023100 0.128300 
01:00:00 count 44.000000 44.000000 
     mean 0.010641 0.059143 
     std  0.015058 0.083642 
     min  0.003200 0.017500 
     25%  0.003200 0.017800 
     50%  0.003200 0.018000 
     75%  0.011600 0.064400 
     max  0.058300 0.323700 
... 
23:00:00 count 44.000000 44.000000 
     mean 0.028773 0.159902 
     std  0.003627 0.020182 
     min  0.022900 0.127500 
     25%  0.025600 0.142500 
     50%  0.029350 0.162850 
     75%  0.031575 0.175200 
     max  0.036100 0.200300 

Я хотел бы выход выглядеть так

{ 
    summary: [ 
     {time: 00:00:00, 
     cost: {count: 43, 
       mean: 0.04323 
       std: ... 
       ... 
       max: 0.0231}}, 
     value: {count: 43, 
       mean: 0.02406 
       std: ... 
       ... 
       max: 0.12830} 
     }, 
     {time: 01:00:00, 
     cost: {...}, 
     value: {...}, 
     }, 
     ..., 
     {time: 23:00:00, 
     cost: {...}, 
     value: {...}, 
     } 
    ] 
} 

Я проверил стили в панд to_dict() функции, но никто не вполне получить результат, я хочу

ответ

0

Я был в состоянии получить его в формат, я хотел с помощью немного сводной таблицы волшебной

def day_summary(data): 
    times = pd.DatetimeIndex(data['Timestamp']) 
    day_average = data.groupby(times.time).describe().reset_index().rename(columns={'level_0': 'time'}) 
    value_summary = day_average.pivot(index='time', columns='level_1', values='value').to_dict('records') 
    cost_summary = day_average.pivot(index='time', columns='level_1', values='cost').to_dict('records') 
    summary_times = day_average.pivot(index='time', columns='level_1', values='level_1').index 

    composed_summary = [{'time': t, 'value': x, 'cost': y} for x, y, t in zip(value_summary, cost_summary, summary_times)] 
    return composed_summary 
Смежные вопросы