Probleme mit Python und Excel

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
MoinXD
User
Beiträge: 11
Registriert: Sonntag 25. Dezember 2016, 17:52

Hey Leute,
Mein Name ist Morris und ich bin neu hier.
Ich hoffe ich habe das Thema im richtigen Bereich eröffnet.

Ich habe vor kurzem Daten mit Python aus einem Textdokument gefiltert und sie anschließend mit xlsxwriter in eine Exceltabelle eintragen lassen.

Nun bin ich In der Exceltabelle und versuche ein Diagramm zu erstellen. Ich habe das schon oft gemacht dementsprechend bin ich mir scher, dass der Fehler nicht bei mir liegt.

Das Problem ist, dass mir kein Diagramm empfohlen wird. Warum weiß ich nicht.

Alle Werte sind in der Tabelle eingetragen und sehen gut aus.

Ich habe auch bereits versucht, die Werte als Zahlen zu definieren, aber das hat auch nicht geholfen.

Würde mich freuen wenn ihr einen Lösungsansatz für mich hättet oder mir sagen könntet ob dieses Problem durch Python oder durch Excel entsteht.
Danke, Morris
BlackJack

@MoinXD: Nach der Beschreibung kann man jetzt nicht viel mehr sagen als das Du vermutlich irgend etwas falsch machst. Da wir aber nicht wissen *was* Du *genau* machst, kann man ohne Hellsehen zu können nur raten.

Du sagst Du hast versucht Werte als Zahlen zu definieren: Hast Du Zahlen denn auch konsequent als Zahlen in der Exceldatei gespeichert und nicht als Text?
MoinXD
User
Beiträge: 11
Registriert: Sonntag 25. Dezember 2016, 17:52

Code: Alles auswählen

# -*- coding: utf-8 -*-
import xlsxwriter

# allg. Variabeln vor dem Liftoff

t = -1 # var. für Zeit vor dem liftoff
p = -4 # var. für Druck vor dem liftoff
j = -2 # var. für Temperatur vor dem liftoff
ej = -3 # var. für ExtTemperatur vor dem liftoff
l = -5 # var. für Luftfeuchtigkeit vor dem liftoff
z1 = 1 # Zeile für Zeit vor dem liftoff
z2 = 1 # Zeile für Druck vor dem liftoff
z3 = 1 # Zeile für Temperatur vor dem liftoff
z4 = 1 # Zeile für ExtTemperatur vor dem liftoff
z5 = 1 # Zeile für Luftfeuchtigkeit vor dem liftoff

# Workbook & Worksheet erstellung
wb = xlsxwriter.Workbook('log_Auswertung.xlsx') # wb = Workbook
wsv = wb.add_worksheet('vor') # wsv = Worksheet vor dem liftoff
wsn = wb.add_worksheet('nach') # wsn = Worksheet nach dem liftoff

# Log Datei öffnen
logv = open("logv.txt", "r") # lofv = TxT-Datei vor dem liftoff


# Logv auslesen & schreiben

wsv.write(0, 0, 'Zeit in Minuten')
wsv.write(0, 1, 'Druck in hPa')
wsv.write(0, 2, 'Temperatur in Grad C')
wsv.write(0, 3, 'ExtTemperatur in Grad C')
wsv.write(0, 4, 'Luftfeuchtigkeit in %')
for line in logv:

# Zeit
    t = t + 1
    if t == 7:
        t = 0
        line = line.replace("T:", "")
        line = line.replace("Minutes", "")
        float(line)
        wsv.write(z1, 0, line)
        z1 = z1 + 1
# ----------------------------

#Druck
    p = p +1
    if p == 7:
        p = 0
        line = line.replace("Pressure:", "")
        line = line.replace("hPa", "")
        float(line)
        wsv.write(z2, 1, line)
        z2 = z2 + 1
# ----------------------------

# Temperatur
    j = j + 1
    if j == 7:
        j = 0
        line = line.replace("Temperature:", "")
        line = line.replace("C", "")
        float(line)
        wsv.write(z3, 2, line)
        z3 = z3 + 1
# ----------------------------

# ExtTemperatur
    ej = ej + 1
    if ej == 7:
        ej = 0
        line = line.replace("Exttemperature:", "")
        line = line.replace("C", "")
        float(line)
        wsv.write(z4, 3, line)
        z4 = z4 + 1
# ----------------------------

# Luftfeuchtigkeit
    l = l + 1
    if l == 7:
        l = 0
        line = line.replace("Humidity:", "")
        line = line.replace("%", "")
        float(line)
        wsv.write(z5, 4, line)
        z5 = z5 + 1
    

# Log Datei schließen

logv.close()

# --------------------------------------------
#                  Log nach dem liftof
# --------------------------------------------

# allg. VAriablen nach dem liftoff

tn = -1 # var. für Zeit nach dem liftoff
pn = -4 # var. für Druck nach dem liftoff
jn = -2 # var. für Temperatur nach dem liftoff
ejn = -3 # var. für ExtTemperatur nach dem liftoff
ln = -5 # var. für Luftfeuchtigkeit nach dem liftoff
z1 = 1 # Zeile für Zeit nach dem liftoff
z2 = 1 # Zeile für Druck nach dem liftoff
z3 = 1 # Zeile für Temperatur nach dem liftoff
z4 = 1 # Zeile für ExtTemperatur nach dem liftoff
z5 = 1 # Zeile für Luftfeuchtigkeit nach dem liftoff

# Log Datei öffnen

logn = open("logn.txt", "r") # logn = TxT-Datei nach dem liftoff

# Logn auslesen & schreiben

wsn.write(0, 0, 'Zeit in Minutes')
wsn.write(0, 1, 'Druck in hPa')
wsn.write(0, 2, 'Temperatur in Grad C')
wsn.write(0, 3, 'ExtTemperatur in Grad C')
wsn.write(0, 4, 'Luftfeuchtigkeit in %')
for line in logn:

# Zeit
    tn = tn + 1
    if tn == 7:
        tn = 0
        line = line.replace("T:", "")
        line = line.replace("Minutes", "")
        float(line)
        wsn.write(z1, 0, line)
        z1 = z1 + 1
# ----------------------------

#Druck
    pn = pn +1
    if pn == 7:
        pn = 0
        line = line.replace("Pressure:", "")
        line = line.replace("hPa", "")
        float(line)
        wsn.write(z2, 1, line)
        z2 = z2 + 1
# ----------------------------

# Temperatur
    jn = jn + 1
    if jn == 7:
        jn = 0
        line = line.replace("Temperature:", "")
        line = line.replace("C", "")
        float(line)
        wsn.write(z3, 2, line)
        z3 = z3 + 1
# ----------------------------

# ExtTemperatur
    ejn = ejn + 1
    if ejn == 7:
        ejn = 0
        line = line.replace("Exttemperature:", "")
        line = line.replace("C", "")
        float(line)
        wsn.write(z4, 3, line)
        z4 = z4 + 1
# ----------------------------

# Luftfeuchtigkeit
    ln = ln + 1
    if ln == 7:
        ln = 0
        line = line.replace("Humidity:", "")
        line = line.replace("%", "")
        float(line)
        wsn.write(z5, 4, line)
        z5 = z5 + 1

# Log Datei schließen

logn.close()

# Workbook schließen

wb.close()
Das ist mein kompletter Code.

Ich habe die Werte auch in Excel als Zahlen definiert.
Zuletzt geändert von Anonymous am Sonntag 25. Dezember 2016, 20:19, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@MoinXD: würdest Du nicht so kryptische Abkürzungen benutzen, bräuchtest Du auch die ganzen Kommentare nicht, die erklären, für was die Variable da ist.

Du hast quasi den selben Code doppelt und fünffach kopiert. Dass das schlecht ist, merkst Du gleich, wenn Du den Fehler, den Du gemacht hast an 10 Stellen korrigieren mußt, an statt nur an einer, wenn Du Funktionen definiert hättest: `float` ändert nicht die Variable auf magische Weise (was in Python gar nicht funktionieren kann) sondern liefert eine Zahl als Rückgabewert.

In der log-Datei scheinen immer 7 Zeilen zusammenzugehören. Das könnte das selbe tun:

Code: Alles auswählen

import xlsxwriter

COLUMNS = {
    "T": ('Zeit in Minuten', "Minutes", 0),
    "Pressure": ('Druck in hPa', "hPa", 1),
    "Temperature": ('Temperatur in Grad C', "C", 2),
    "Exttemperature": ('ExtTemperatur in Grad C', "C", 3),
    "Humidity": ('Luftfeuchtigkeit in %', "%", 4),
}

def fill_worksheet(sheet, log_filename):
    for name, _, column in COLUMNS.values():
        sheet.write(0, column, name)
    with open(log_filename) as lines:
        for idx, line in enumerate(lines):
            key, value = line.split(':',1)
            if key in COLUNS:
                row = idx // 7
                _, unit, column = COLUMNS[key]
                wsv.write(row, column, float(value.replace(unit, "")))

# Workbook & Worksheet erstellung
wb = xlsxwriter.Workbook('log_Auswertung.xlsx')
# Worksheet vor dem liftoff
wsv = wb.add_worksheet('vor')
fill_worksheet(wsv, "logv.txt")
# Worksheet nach dem liftoff
wsn = wb.add_worksheet('nach') 
fill_worksheet(wsn, "logn.txt")
wb.close()
MoinXD
User
Beiträge: 11
Registriert: Sonntag 25. Dezember 2016, 17:52

@BlackJack @Sirius3 Wir konnten das Problem dank eurer Hilfe fixen.

Nochmal danke, dass ihr uns so schnell helfen konntet.

Schöne Feiertage noch,

mfG. Morris
Antworten