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:
Jan 2025-07-10 19:52:50 +02:00
parent 668d88a181
commit 2b393b48eb

View File

@ -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'):