2015-02-06 14 views
5

Mam następujący gromadzenie DataFrame dzienne statystyki na 2 Postępowanie A i B:DataFrame z DataFrames z pand

    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 

Poniżej znajduje się fragment kodu, który tworzy go:

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 

Dane pochodzą od razu z opisu(). Mam kilka takich opisów (jeden na każdy dzień) i chciałbym zebrać je wszystkie w jedną ramkę danych, która ma datę jako indeks.

Najbardziej oczywistym sposobem uzyskania tego byłoby ułożenie wszystkich dziennych wyników w jedną ramkę danych, a następnie grupowanie według dnia i generowanie statystyk wyników. Jednak chciałbym alternatywnej metody, ponieważ napotkasz MemoryError z ilością przetwarzanych danych.

Ostateczny wynik powinien wyglądać następująco:

     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

Czy jesteś w stanie stworzyć dykturę '{date: describe_df_for_that_day}'? Następnie możesz użyć 'pd.concat (dict)' – joris

+0

Tak, oczywiście, że jestem ... To jest bardzo proste, ale działa dobrze dziękuję! Jeśli zaktualizujesz swój komentarz do odpowiedzi, chętnie go zaakceptuję. – Christophe

Odpowiedz

8

Jeśli jesteś w stanie dokonać dict z {DATA: describe_df_for_that_day}, a następnie można użyć pd.concat(dict).

Począwszy swojej 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 

Można oczywiście zrobić klawiszy rzeczywistych dat zamiast strun.

Powiązane problemy