Daten Plotten mit bestimmter Überschrift

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Ramps
User
Beiträge: 3
Registriert: Mittwoch 14. März 2018, 22:36

Mittwoch 14. März 2018, 23:02

Hallo,
ich wollte einfach nur aus einer Tabelle eine Größe raussuchen und plotten.
Die Tabelle sieht ungefähr so aus:

Bild

Die erste Zeile beinhaltet die Bezeichnung, die zweite die Einheit (auch m^3 oder kg/h usw.), die dritte überflüssigen Kram und dahinter kommen Werte.

Es gibt noch mehr Spalten die mich aber nicht interessieren. Jede Tabelle ist von der Spaltenzahl anders aufgebaut. Der Kopf ist jedoch gleich. Das heißt ich kann dem Programm nicht für jede Datei sagen "geh in Spalte 3 und lese alle Zeilen". Sondern ich muss die Spalte am Namen erkennen lassen und dann die Werte darunter auslesen. Da kommt schon das nächste Problem. Und zwar haben einige Spalten Umlaute oder Leerzeichen. Wenn ich diese auslesen möchte, werden die Spalten nicht gefunden und es stehen anstelle der Werte nur "NaN".

Und selbst wenn ich einen Array habe aus zwei Spalten mit den Titeln "Zeit" und "Größe1", dann bekomme ich es nicht geplottet bzw. ich möchte, dass z.B. sagen das x= Zeit ist und y = "Größe1" und dies dann plotten. Leider bekomme ich es nicht hin. Ich hoffe Ihr habt eine Idee.

Code: Alles auswählen

import pandas as pd
import numpy as np
import plotly

df = pd.read_csv('Sheet_test.csv', sep=';',encoding='iso-8859-1',keep_default_na=False) # CSV einlesen, mit Umlauten und ohne NaN in den Zeilen
df = df.drop(df.index[1:2]) # die zweite und dritte Zeile löschen, damit nur die Überschrift und die Werte übrig bleiben
df = pd.DataFrame(df, columns=['Zeit','Größe1]) # Aus der Tabelle nur die Spalten rausschreiben die ich auch plotten möchte


# Versuch es zu plotten
trace = go.Scatter(
                    x=df['Zeit'], y=df['Größe1'] # Zuweisen der Spalten auf x und y ...
                  )
layout = go.Layout(title='Toller Titel')
fig = go.Figure(data=[trace], layout=layout)
py.iplot(fig)
Antworten