CSVVisualizer.py aktualisiert
Eine neue clean_data() Methode, die:
Leere Zeilen entfernt
Fehlende Werte mit linearer Interpolation füllt
Fehlende Phasen mit der letzten bekannten Phase füllt
Die Zeitachse sortiert
Verbesserte Fehlerbehandlung für fehlende Werte
Bessere Handhabung von Phasenwechseln in der Visualisierung
Konsistente Behandlung der Zeitachse
(D)
This commit is contained in:
parent
668d88a181
commit
2b393b48eb
@ -8,6 +8,7 @@ from tkinter import Tk, filedialog, messagebox
|
|||||||
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
|
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
|
||||||
import tkinter as tk
|
import tkinter as tk
|
||||||
from tkinter import ttk
|
from tkinter import ttk
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
class CSVVisualizer:
|
class CSVVisualizer:
|
||||||
def __init__(self, root):
|
def __init__(self, root):
|
||||||
@ -111,8 +112,8 @@ class CSVVisualizer:
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
# Bereinige Phasen-Namen
|
# Bereinige die Daten
|
||||||
self.df['Phase'] = self.df['Phase'].str.strip()
|
self.clean_data()
|
||||||
|
|
||||||
self.file_label.config(text=os.path.basename(filepath))
|
self.file_label.config(text=os.path.basename(filepath))
|
||||||
self.status_var.set(f"Daten geladen: {len(self.df)} Messungen")
|
self.status_var.set(f"Daten geladen: {len(self.df)} Messungen")
|
||||||
@ -122,6 +123,25 @@ class CSVVisualizer:
|
|||||||
messagebox.showerror("Fehler", f"Fehler beim Laden:\n{str(e)}")
|
messagebox.showerror("Fehler", f"Fehler beim Laden:\n{str(e)}")
|
||||||
self.status_var.set("Fehler beim Laden")
|
self.status_var.set("Fehler beim Laden")
|
||||||
|
|
||||||
|
def clean_data(self):
|
||||||
|
"""Bereinigt die Daten und füllt fehlende Werte"""
|
||||||
|
# Bereinige Phasen-Namen
|
||||||
|
self.df['Phase'] = self.df['Phase'].str.strip()
|
||||||
|
|
||||||
|
# Entferne Zeilen mit komplett leeren Werten
|
||||||
|
self.df.dropna(how='all', inplace=True)
|
||||||
|
|
||||||
|
# Fülle fehlende Spannung/Strom Werte mit linearen Interpolation
|
||||||
|
self.df['Voltage(V)'] = self.df['Voltage(V)'].interpolate(method='linear')
|
||||||
|
self.df['Current(A)'] = self.df['Current(A)'].interpolate(method='linear')
|
||||||
|
|
||||||
|
# Fülle fehlende Phasen mit der letzten bekannten Phase
|
||||||
|
self.df['Phase'].fillna(method='ffill', inplace=True)
|
||||||
|
|
||||||
|
# Stelle sicher, dass die Zeit monoton steigend ist
|
||||||
|
self.df.sort_values('Time(s)', inplace=True)
|
||||||
|
self.df.reset_index(drop=True, inplace=True)
|
||||||
|
|
||||||
def update_plot(self):
|
def update_plot(self):
|
||||||
"""Aktualisiert den Plot mit den aktuellen Daten"""
|
"""Aktualisiert den Plot mit den aktuellen Daten"""
|
||||||
if not hasattr(self, 'df'):
|
if not hasattr(self, 'df'):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user