2016-11-17 5 views
-1

Ich habe eine Pivot-Tabelle, und ich möchte die Werte für die 12 Monate jedes Jahres für jede Stadt grafisch darstellen.Wie kann ich einen Pivot-Tabellenwert plotten?

     2010-01  2010-02  2010-03 
City  RegionName  

Atlanta  Downtown NaN   NaN   NaN 
      Midtown  194.263702 196.319964 197.946962 

Alexandria Alexandria NaN   NaN   NaN 
      West  
      Landmark- NaN   NaN   NaN 
      Van Dom 

Wie kann ich nur die Werte für jede Region jeder Stadt auswählen? Ich dachte, dass es vielleicht besser wäre, die Spaltennamen mit Jahren und Monaten zu datetime Format zu ändern und sie als index festzulegen. Wie kann ich das machen?

enter image description here

Das Ergebnis muss sein:

City  RegionName 

2010-01 Atlanta  Downtown NaN   
         Midtown  194.263702 

      Alexandria Alexandria NaN   
         West  
         Landmark- NaN   
         Van Dom 
+0

teilen Code Text, keine Screenshots – Boud

+0

Bitte lesen Sie [Wie Pandas Beispiel zu machen] (http://StackOverflow.com/Questions/20109391/How-to-make-good-reproducible-Pandas-Beispiele) und [MCVE] (http://stackoverflow.com/help/mcve). –

Antwort

1

Hier einige ähnliche Blinddaten mit spielen:

idx = pd.MultiIndex.from_arrays([['A','A', 'B','C','C'], 
          ['A1','A2','B1','C1','C2']], names=['City','Region']) 
idcol = pd.date_range('2012-01', freq='M', periods=12) 
df = pd.DataFrame(np.random.rand(5,12), index=idx, columns=[t.strftime('%Y-%m') for t in idcol]) 

Lasst uns sehen, was wir haben:

print(df.ix[:,:3]) 

       2012-01 2012-02 2012-03 
City Region        
A A1  0.513709 0.941354 0.133290 
    A2  0.734199 0.005218 0.068914 
B B1  0.043178 0.124049 0.603469 
C C1  0.721248 0.483388 0.044008 
    C2  0.784137 0.864326 0.450250 

Lassen Sie uns diese zu einem Datetime konvertieren: df.columns = pd.to_datetime(df.columns)

Jetzt plotten Sie müssen nur transponieren:

df.T.plot() 

enter image description here


Update nach Ihrer aktualisiert Ihre Frage:

Verwenden Stapel und dann neu anordnen, wenn Sie möchten:

df = df.stack().reorder_levels([2,0,1]) 
df.head() 


      City Region 
2012-01-01 A  A1  0.513709 
2012-02-01 A  A1  0.941354 
2012-03-01 A  A1  0.133290 
2012-04-01 A  A1  0.324518 
2012-05-01 A  A1  0.554125 
+0

Nach deinem Update bin ich mir nicht sicher, ob du wirklich ein Dataframe/eine Serie als Ergebnis oder eine Handlung willst, aber hier sind beide ... –

Verwandte Themen