import pandas as pd import numpy as np class DataParser: def __init__(self, scaler = 1): self.data = pd.DataFrame({}) self.scaler = scaler def setData(self, path): self.data = pd.read_csv(path) def getBoolDict (self): boolDict = {} for signalName in self.data.columns: if type (self.data[signalName].iloc[0]) == np.bool: boolDict[signalName] = self._getBoolChanges(signalName) return boolDict def getFloatDict (self): floatDict = {} for signalName in self.data.columns: if type (self.data[signalName].iloc[0]) == np.float64: floatDict[signalName] = self._getFloatChanges(signalName) return floatDict def _getBoolChanges(self, signalName): timeCode = self.data['time'] signal_values = self.data[signalName] changes = [] if len(signal_values) > 0: changes.append([float(timeCode.iloc[0]), 'high' if bool(signal_values.iloc[0]) else 'low']) for i in range(1, len(signal_values)): if signal_values.iloc[i] != signal_values.iloc[i - 1]: changes.append([float(timeCode.iloc[i])*self.scaler, 'high' if bool(signal_values.iloc[i]) else 'low']) return changes def _getFloatChanges(self, signalName): timeCode = self.data['time'] signal_values = self.data[signalName] changes = [] if len(signal_values) > 0: for i in range (len(signal_values)): changes.append([float(timeCode.iloc[i]), float(signal_values.iloc[i])]) return changes