diff --git a/CSVVisualizer.py b/CSVVisualizer.py index 085b260..a39cb89 100644 --- a/CSVVisualizer.py +++ b/CSVVisualizer.py @@ -8,6 +8,7 @@ from tkinter import Tk, filedialog, messagebox from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg import tkinter as tk from tkinter import ttk +import numpy as np class CSVVisualizer: def __init__(self, root): @@ -111,8 +112,8 @@ class CSVVisualizer: } ) - # Bereinige Phasen-Namen - self.df['Phase'] = self.df['Phase'].str.strip() + # Bereinige die Daten + self.clean_data() self.file_label.config(text=os.path.basename(filepath)) 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)}") 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): """Aktualisiert den Plot mit den aktuellen Daten""" if not hasattr(self, 'df'):