2015-02-06 25 views
5

Ho la seguente raccolta dataframe statistiche giornaliere su 2 misure A e B:dataframe di DataFrames con i panda

    A    B 
count 17266.000000 17266.000000 
std  0.179003  0.178781 
75%  101.102251 101.053214 
min  100.700993 100.651956 
mean  101.016747 100.964003 
max  101.540214 101.491178 
50%  100.988465 100.938694 
25%  100.885251 100.830048 

Qui di seguito è un pezzo di codice che lo crea:

day1 = { 
    'A': { 
    'count': 17266.0, 
    'std': 0.17900265293286116, 
    'min': 100.70099294189714, 
    'max': 101.54021448871775, 
    '50%': 100.98846526697825, 
    '25%': 100.88525124427971, 
    '75%': 101.10225131847992, 
    'mean': 101.01674677794136 
    }, 
    'B': { 
    'count': 17266.0, 
    'std': 0.17878125983374854, 
    'min': 100.65195609992342, 
    'max': 101.49117764674403, 
    '50%': 100.93869409089723, 
    '25%': 100.83004837814667, 
    '75%': 101.05321447650618, 
    'mean': 100.96400305527138 
    } 
} 
df = pandas.DataFrame.from_dict(day1, orient='index').T 

I dati provengono proprio da una descrizione(). Ne ho diverse descrizioni (una per ogni giorno) e vorrei riunirle tutte in un unico dataframe che ha la data come indice.

Il modo più ovvio per ottenere quello sarebbe quello di raggruppare tutti i risultati giornalieri in un dataframe, quindi raggrupparlo di giorno ed eseguire le statistiche sul risultato. Tuttavia mi piacerebbe un metodo alternativo perché corro in un MemoryError con la quantità di dati che elabora.

Il risultato finale dovrebbe essere simile a questo:

     A   B  
2014-12-24 count 15895.000000 15895.000000 
     mean  99.943618  99.968860 
     std  0.012468  0.011932 
     min  99.877695  99.928778 
     25%  99.934890  99.960445 
     50%  99.943453  99.968847 
     75%  99.952340  99.977571 
     max  99.982930 100.002507 
2014-12-25 count 16278.000000 16278.000000 
     mean  99.937056  99.962203 
     std  0..012661 
     min  99.884501  99.910567 
     25%  99.928078  99.953758 
     50%  99.936754  99.962411 
     75%  99.945914  99.971473 
     max  99.981512 100.003770 
+1

Sei in grado di fare un dettato di '{date: describe_df_for_that_day}'? Quindi puoi usare 'pd.concat (dict)' – joris

+0

Sì, certo che lo sono ... È incredibilmente semplice ma funziona perfettamente grazie! Se aggiorni il tuo commento a una risposta, sarò felice di accettarlo. – Christophe

risposta

8

Se siete in grado di fare un dict di {data: describe_df_for_that_day}, quindi è possibile utilizzare pd.concat(dict).

A partire con il vostro df:

In [14]: d = {'2014-12-24': df, '2014-12-25': df} 

In [15]: pd.concat(d) 
Out[15]: 
          A    B 
2014-12-24 count 17266.000000 17266.000000 
      std  0.179003  0.178781 
      75%  101.102251 101.053214 
      min  100.700993 100.651956 
      mean  101.016747 100.964003 
      max  101.540214 101.491178 
      50%  100.988465 100.938694 
      25%  100.885251 100.830048 
2014-12-25 count 17266.000000 17266.000000 
      std  0.179003  0.178781 
      75%  101.102251 101.053214 
      min  100.700993 100.651956 
      mean  101.016747 100.964003 
      max  101.540214 101.491178 
      50%  100.988465 100.938694 
      25%  100.885251 100.830048 

Ovviamente si può fare le chiavi date reali, invece di stringhe.

Problemi correlati