2016-07-01 39 views
1

Ich versuche, ein Datenformat aus CSV-Datei eingelesen, und erstellen Sie Streudiagramme für jede Spalte innerhalb des Datenrahmens. Zum Beispiel habe ich im Folgenden mit df=pandas.readcsv()Iterieren über Spalten mit for-Schleifen in Pandas Dataframe

Sample AMP ADP ATP 
1A  239847 239084 987374 
1B  245098 241210 988950 
2A  238759 200554 921032 
2B  230029 215408 899804 

Ich mag erzeugen ein Streudiagramm unter Verwendung von Probe als die x-Werte und die Bereiche für jede der Spalten lesen.

I den folgenden Code verwende mit bokeh.plotting jeder Spalte plotten manuell

import pandas 
from bokeh.plotting import figure, show 

df = pandas.read_csv("data.csv") 
p = figure(x_axis_label='Sample', y_axis_label='Peak Area', x_range=sorted(set(df['Sample']))) 
p.scatter(df['Sample'], df['AMP']) 
show(p) 

Dies erzeugt Plots scatter erfolgreich, aber ich möchte eine Schleife erzeugen, ein Streudiagramm für jede Spalte zu erzeugen. In meinem vollständigen Datensatz habe ich über 500 Spalten, die ich grafisch darstellen möchte.

Ich habe Referenzen für die Verwendung von df.iteritems und df.itertuples für die Iteration durch Datenrahmen gefolgt, aber ich bin mir nicht sicher, wie ich die gewünschte Ausgabe erhalten.

Ich habe folgendes versucht:

for index, row in df.iteritems(): 
    p = figure() 
    p.scatter(df['Sample'], df[row]) 
    show(p) 

ich sofort einen Fehler getroffen:

raise KeyError('%s not in index' % objarr[mask] KeyError: "['1A' '1B' '2A' '2B'] not in index

Jede Führung? Danke im Voraus.

Antwort

0

iteritems iteriert über Spalten, nicht Zeilen. Aber Ihr echtes Problem ist, wenn Sie versuchen, df[row] anstelle von df[index]. Ich würde den Wortlaut auf Spalten umstellen und dies tun:

for colname, col in df.iteritems(): 
p = figure() 
p.scatter(df['Sample'], df[colname]) 
show(p) 
Verwandte Themen