CSVVisualizer.py aktualisiert
(D) Float error
This commit is contained in:
parent
2b393b48eb
commit
a5b49e99f7
@ -97,9 +97,19 @@ class CSVVisualizer:
|
||||
break
|
||||
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(
|
||||
filepath,
|
||||
skiprows=skip_rows,
|
||||
nrows=end_row - skip_rows - 1 if end_row > skip_rows else None,
|
||||
dtype={
|
||||
'Time(s)': 'float32',
|
||||
'Voltage(V)': 'float32',
|
||||
@ -109,7 +119,8 @@ class CSVVisualizer:
|
||||
'Charge_Capacity(Ah)': 'float32',
|
||||
'Coulomb_Eff(%)': 'float32',
|
||||
'Cycle': 'int32'
|
||||
}
|
||||
},
|
||||
on_bad_lines='warn'
|
||||
)
|
||||
|
||||
# Bereinige die Daten
|
||||
@ -125,20 +136,30 @@ class CSVVisualizer:
|
||||
|
||||
def clean_data(self):
|
||||
"""Bereinigt die Daten und füllt fehlende Werte"""
|
||||
if self.df.empty:
|
||||
return
|
||||
|
||||
# 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 numerische Werte mit linearen Interpolation
|
||||
numeric_cols = ['Time(s)', 'Voltage(V)', 'Current(A)',
|
||||
'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
|
||||
if 'Phase' in self.df.columns:
|
||||
self.df['Phase'].fillna(method='ffill', inplace=True)
|
||||
|
||||
# Stelle sicher, dass die Zeit monoton steigend ist
|
||||
if 'Time(s)' in self.df.columns:
|
||||
self.df.sort_values('Time(s)', inplace=True)
|
||||
self.df.reset_index(drop=True, inplace=True)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user