2013-10-04 11 views
11

Ich habe eine Reihe von Daten, die ich in Python mit einem Pandas Datenrahmen laden. Was ich tun möchte, ist eine Schleife zu erstellen, die ein Diagramm für alle Elemente in ihrem eigenen Rahmen, nicht alle auf einem, drucken wird. Meine Daten sind in einer Excel-Datei auf diese Weise strukturiert:Verwenden Sie eine Schleife, um n Diagramme Python

Index | DATE | AMB CO 1 | AMB CO 2 |...|AMB CO_n | TOTAL 
1  | 1/1/12| 14  | 33  |...| 236 | 1600 
.  | ... | ...  | ...  |...| ... | ... 
.  | ... | ...  | ...  |...| ... | ... 
.  | ... | ...  | ...  |...| ... | ... 
n 

Dies ist, was ich für Code haben bisher:

import pandas as pd 
import matplotlib.pyplot as plt 
ambdf = pd.read_excel('Ambulance.xlsx', 
         sheetname='Sheet2', index_col=0, na_values=['NA']) 
print type(ambdf) 
print ambdf 
print ambdf['EAS'] 

amb_plot = plt.plot(ambdf['EAS'], linewidth=2) 
plt.title('EAS Ambulance Numbers') 
plt.xlabel('Month') 
plt.ylabel('Count of Deliveries') 
print amb_plot 

for i in ambdf: 
    print plt.plot(ambdf[i], linewidth = 2) 

die ich denke so etwas wie dies zu tun:

for i in ambdf: 
    ambdf_plot = plt.plot(ambdf, linewidth = 2) 

Das obige war nicht entfernt, was ich wollte, und es stammt von meiner Vertrautheit mit Pandas, MatplotLib etc, Blick auf einige Dokumentation, obwohl für mich sieht es aus wie Matplotlib wird nicht einmal benötigt (Frage 2)

Also A) Wie kann ich eine Datenaufzeichnung für jede Spalte in meinem df und B) muss ich Matplotlib verwenden oder sollte ich nur Pandas verwenden, um alles zu tun?

Danke,

+0

Sie könnten nur zusätzliche Reihen Sie für jede Spalte ein Diagramm ein oder erstellen Sie für jedes ein separates Diagramm. Sie bevorzugen letzteres, denke ich? Außerdem ist 'matplotlib' ein hübsches Standard-Modul zum Erstellen von Plots, ziemlich einfach zu bedienen und funktioniert wie ein Traum. –

+1

Es spielt wirklich keine Rolle, das ist nur um mich dazu zu bringen, es zu benutzen und es zu üben, würde die Konvention eine Methode der anderen vorschreiben? –

Antwort

18

Ok, also die einfachste Methode, dies mehrere Plots ist zu erstellen:

import matplotlib.pyplot as plt 
x=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]] 
y=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]] 
for i in range(len(x)): 
    plt.figure() 
    plt.plot(x[i],y[i]) 

Beachten Sie, dass eine figure jedes Mal, oder pyplot wird in dem ersten Plot erstellen müssen

erstellt .

Wenn Sie mehrere Datenreihen erstellen möchten alles, was Sie tun müssen, ist:

import matplotlib.pyplot as plt 
x=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]] 
y=[[1,2,3,4],[2,3,4,5],[3,4,5,6],[7,8,9,10]] 
plt.plot(x[0],y[0],'r',x[1],y[1],'g',x[2],y[2],'b',x[3],y[3],'k') 

Sie es, indem Sie eine Liste von Farben wie ['r','g','b','k'] und dann einfach aufrufen beide Einträge in dieser Liste und die entsprechenden Daten automatisieren könnte in einer Schleife geplottet werden, wenn Sie möchten. Wenn Sie nur programmatisch wollen Datenreihe zu einem Plot etwas hinzuzufügen wie diese es zu tun (keine neue Zahl wird jedes Mal erstellt, so dass alles in der gleichen Figur aufgetragen ist):

import matplotlib.pyplot as plt 
x=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]] 
y=[[1,2,3,4],[2,3,4,5],[3,4,5,6],[7,8,9,10]] 
colours=['r','g','b','k'] 
for i in range(len(x)): 
    plt.plot(x[i],y[i],colours[i]) 

Hoffnung, das hilft. Wenn etwas Matplotlib hat eine sehr gute documentation page mit viel examples.

+0

Danke für Ihre Hilfe –

+0

seltsam genug, obwohl ich plt.pyplot.plot seltsam schreiben musste –

+0

Das ist seltsam, idk warum. Ich teste meinen Code vor dem Posten und für mich funktioniert es wie es ist. –

0

Verwenden Sie ein Wörterbuch!

Sie können auch Wörterbücher verwenden, dass Sie mehr Kontrolle über die Grundstücke haben können:

import matplotlib.pyplot as plt 
# plot 0  plot 1 plot 2 plot 3 
x=[[1,2,3,4],[1,4,3,4],[1,2,3,4],[9,8,7,4]] 
y=[[3,2,3,4],[3,6,3,4],[6,7,8,9],[3,2,2,4]] 

plots = zip(x,y) 
def loop_plot(plots): 
    figs={} 
    axs={} 
    for idx,plot in enumerate(plots): 
     figs[idx]=plt.figure() 
     axs[idx]=figs[idx].add_subplot(111) 
     axs[idx].plot(plot[0],plot[1]) 
return figs, axs 

figs, axs = loop_plot(plots) 

Jetzt können Sie wählen Sie den Plot, die Sie leicht ändern möchten:

axs[0].set_title("Now I can control it!") 
Verwandte Themen