CSVVisualizer.py aktualisiert
(D) Float error
This commit is contained in:
parent
2b393b48eb
commit
a5b49e99f7
@ -97,9 +97,19 @@ class CSVVisualizer:
|
|||||||
break
|
break
|
||||||
skip_rows += 1
|
skip_rows += 1
|
||||||
|
|
||||||
|
# Bestimme die letzte Datenzeile (ignoriere alles nach '# TEST SUMMARY')
|
||||||
|
with open(filepath, 'r') as f:
|
||||||
|
lines = f.readlines()
|
||||||
|
end_row = len(lines)
|
||||||
|
for i, line in enumerate(lines):
|
||||||
|
if line.startswith('# TEST SUMMARY'):
|
||||||
|
end_row = i
|
||||||
|
break
|
||||||
|
|
||||||
self.df = pd.read_csv(
|
self.df = pd.read_csv(
|
||||||
filepath,
|
filepath,
|
||||||
skiprows=skip_rows,
|
skiprows=skip_rows,
|
||||||
|
nrows=end_row - skip_rows - 1 if end_row > skip_rows else None,
|
||||||
dtype={
|
dtype={
|
||||||
'Time(s)': 'float32',
|
'Time(s)': 'float32',
|
||||||
'Voltage(V)': 'float32',
|
'Voltage(V)': 'float32',
|
||||||
@ -109,7 +119,8 @@ class CSVVisualizer:
|
|||||||
'Charge_Capacity(Ah)': 'float32',
|
'Charge_Capacity(Ah)': 'float32',
|
||||||
'Coulomb_Eff(%)': 'float32',
|
'Coulomb_Eff(%)': 'float32',
|
||||||
'Cycle': 'int32'
|
'Cycle': 'int32'
|
||||||
}
|
},
|
||||||
|
on_bad_lines='warn'
|
||||||
)
|
)
|
||||||
|
|
||||||
# Bereinige die Daten
|
# Bereinige die Daten
|
||||||
@ -125,22 +136,32 @@ class CSVVisualizer:
|
|||||||
|
|
||||||
def clean_data(self):
|
def clean_data(self):
|
||||||
"""Bereinigt die Daten und füllt fehlende Werte"""
|
"""Bereinigt die Daten und füllt fehlende Werte"""
|
||||||
|
if self.df.empty:
|
||||||
|
return
|
||||||
|
|
||||||
# Bereinige Phasen-Namen
|
# Bereinige Phasen-Namen
|
||||||
self.df['Phase'] = self.df['Phase'].str.strip()
|
self.df['Phase'] = self.df['Phase'].str.strip()
|
||||||
|
|
||||||
# Entferne Zeilen mit komplett leeren Werten
|
# Entferne Zeilen mit komplett leeren Werten
|
||||||
self.df.dropna(how='all', inplace=True)
|
self.df.dropna(how='all', inplace=True)
|
||||||
|
|
||||||
# Fülle fehlende Spannung/Strom Werte mit linearen Interpolation
|
# Fülle fehlende numerische Werte mit linearen Interpolation
|
||||||
self.df['Voltage(V)'] = self.df['Voltage(V)'].interpolate(method='linear')
|
numeric_cols = ['Time(s)', 'Voltage(V)', 'Current(A)',
|
||||||
self.df['Current(A)'] = self.df['Current(A)'].interpolate(method='linear')
|
'Discharge_Capacity(Ah)', 'Charge_Capacity(Ah)',
|
||||||
|
'Coulomb_Eff(%)']
|
||||||
|
for col in numeric_cols:
|
||||||
|
if col in self.df.columns:
|
||||||
|
self.df[col] = pd.to_numeric(self.df[col], errors='coerce')
|
||||||
|
self.df[col] = self.df[col].interpolate(method='linear')
|
||||||
|
|
||||||
# Fülle fehlende Phasen mit der letzten bekannten Phase
|
# Fülle fehlende Phasen mit der letzten bekannten Phase
|
||||||
self.df['Phase'].fillna(method='ffill', inplace=True)
|
if 'Phase' in self.df.columns:
|
||||||
|
self.df['Phase'].fillna(method='ffill', inplace=True)
|
||||||
|
|
||||||
# Stelle sicher, dass die Zeit monoton steigend ist
|
# Stelle sicher, dass die Zeit monoton steigend ist
|
||||||
self.df.sort_values('Time(s)', inplace=True)
|
if 'Time(s)' in self.df.columns:
|
||||||
self.df.reset_index(drop=True, inplace=True)
|
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"""
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user