Ich arbeite an der Automatisierung von Plotfunktionen für Metabolomics-Daten mit Bokeh. Derzeit versuche ich, meinen Datenrahmen aus CSV einzulesen und durch die Spalten zu laufen, die Box-Plots für jeden Metaboliten (Spalte) erzeugen.Python: Übergeben von Spaltendaten von Pandas df an Bokeh-Plotfunktion
Ich habe ein Beispiel df die wie folgt aussieht:
Sample Group AMP ADP ATP
1A A 239847 239084 987374
1B A 245098 241210 988950
2A B 238759 200554 921032
2B B 230029 215408 89980
Hier ist, was mein Code wie folgt aussieht:
import pandas
from bokeh.plotting import figure, output_file, show, save
from bokeh.charts import BoxPlot
df = pandas.read_csv("testdata_2.csv")
for colname, col in df.iteritems():
p = BoxPlot(df, values=df[colname], label='Group', xlabel='Group', ylabel='Peak Area',
title=colname)
output_file("boxplot.html")
show(p)
dies ein Fehler erzeugt:
raise ValueError("expected an element of either %s, got %r" % (nice_join(self.type_params), value))
ValueError: expected an element of either Column Name or Column String or List(Column Name or Column String
Es scheint, Diese Einstellung values=df[colname]
ist das Problem. Wenn ich es durch values=df['colname']
ersetze, gibt es mir einen Schlüsselfehler für colname. Ich kann gut plotten, wenn ich eine bestimmte Spalte wie values='ATP'
angeben, aber ich muss in der Lage sein, eine Schleife durch alle Spalten durchlaufen zu lassen.
Irgendeine Anleitung? Ist das überhaupt der beste Ansatz?
Vielen Dank im Voraus.
Sie müssen den Namen der Spalte an Werte übergeben, dh 'Werte = Spaltenname' – bigreddot
Ich habe versucht, beide' Werte = Spaltenname' und 'Werte = 'Spaltenname''. Beide erzeugen Fehler. – JeremyD