Skip to content
Snippets Groups Projects
Commit 7d0c68f5 authored by Michael Reuscher's avatar Michael Reuscher
Browse files

create dataframes refactored

parent 26b830eb
No related branches found
No related tags found
1 merge request!4Python driver and data analysis part
...@@ -17,67 +17,64 @@ class DataFrameCreator: ...@@ -17,67 +17,64 @@ class DataFrameCreator:
merged_dfs[outer_key] = merged_dataframe_sorted merged_dfs[outer_key] = merged_dataframe_sorted
return merged_dfs return merged_dfs
def read_various_data(self, root, folder): @staticmethod
for filename in folder: def _set_dataframe(root, filename):
if filename.endswith('.dat'): if filename.endswith('.dat'):
file_path = os.path.join(root, filename) file_path = os.path.join(root, filename)
dataframe_name = os.path.splitext(filename)[0] dataframe_name = os.path.splitext(filename)[0]
dataframe_type = dataframe_name.split('-')[1] dataframe_type = dataframe_name.split('-')[1]
dataframe = pd.read_csv(file_path, delimiter=" ", header=0) dataframe = pd.read_csv(file_path, delimiter=" ", header=0)
return dataframe, dataframe_type, dataframe_name
if dataframe_type in self.v_dfs: def read_various_data(self, root, filename):
inner_dict = self.v_dfs[dataframe_type] dataframe, dataframe_type, dataframe_name = self._set_dataframe(root, filename)
if dataframe_name in inner_dict: if dataframe_type in self.v_dfs:
# DataFrame hinzufügen inner_dict = self.v_dfs[dataframe_type]
inner_dict[dataframe_name] = pd.concat([inner_dict[dataframe_name], dataframe], if dataframe_name in inner_dict:
ignore_index=True) # DataFrame hinzufügen
else: inner_dict[dataframe_name] = pd.concat([inner_dict[dataframe_name], dataframe],
inner_dict[dataframe_name] = dataframe ignore_index=True)
else: else:
self.v_dfs[dataframe_type] = { inner_dict[dataframe_name] = dataframe
dataframe_name: dataframe else:
} self.v_dfs[dataframe_type] = {
dataframe_name: dataframe
}
def read_long_data(self, root, folder): def read_long_data(self, root, filename):
for filename in folder: dataframe, dataframe_type, dataframe_name = self._set_dataframe(root, filename)
if filename.endswith('.dat'): # Berechnung der Zeitdifferenz in Sekunden ab dem ersten Wert
file_path = os.path.join(root, filename) if not dataframe.empty:
dataframe_name = os.path.splitext(filename)[0] dataframe['start'] = pd.to_datetime(dataframe['start'], unit='s')
dataframe_type = dataframe_name.split('-')[1] start_time = dataframe['start'].iloc[0]
dataframe = pd.read_csv(file_path, delimiter=" ", header=0) dataframe['seconds_since_start'] = (dataframe['start'] - start_time).dt.total_seconds()
# Berechnung der Zeitdifferenz in Sekunden ab dem ersten Wert
if not dataframe.empty:
dataframe['start'] = pd.to_datetime(dataframe['start'], unit='s')
start_time = dataframe['start'].iloc[0]
dataframe['seconds_since_start'] = (dataframe['start'] - start_time).dt.total_seconds()
if dataframe_type in self.l_dfs: if dataframe_type in self.l_dfs:
inner_dict = self.l_dfs[dataframe_type] inner_dict = self.l_dfs[dataframe_type]
if dataframe_name in inner_dict: if dataframe_name in inner_dict:
# DataFrame hinzufügen # DataFrame hinzufügen
inner_dict[dataframe_name] = pd.concat([inner_dict[dataframe_name], dataframe], inner_dict[dataframe_name] = pd.concat([inner_dict[dataframe_name], dataframe],
ignore_index=True) ignore_index=True)
else: else:
inner_dict[dataframe_name] = dataframe inner_dict[dataframe_name] = dataframe
else: else:
self.l_dfs[dataframe_type] = { self.l_dfs[dataframe_type] = {
dataframe_name: dataframe dataframe_name: dataframe
} }
def create(self): def create(self):
dfs = {}
for root, _, folder in os.walk(self.folder_path): for root, _, folder in os.walk(self.folder_path):
if os.path.basename(root) == "statistics": if os.path.basename(root) == "statistics":
print("this was statistic") for filename in folder:
continue print("this was statistic" + filename)
continue
elif os.path.basename(root) == "Data_Set_Long": elif os.path.basename(root) == "Data_Set_Long":
self.read_long_data(root, folder) for filename in folder:
self.read_long_data(root, filename)
else: else:
self.read_various_data(root, folder) for filename in folder:
self.read_various_data(root, filename)
various_dfs = self._merge_dataframes(self.v_dfs) various_dfs = self._merge_dataframes(self.v_dfs)
long_dfs = self._merge_dataframes(self.l_dfs) long_dfs = self._merge_dataframes(self.l_dfs)
return various_dfs, long_dfs return various_dfs, long_dfs
...@@ -3,8 +3,6 @@ import matplotlib.pyplot as plt ...@@ -3,8 +3,6 @@ import matplotlib.pyplot as plt
import seaborn as sns import seaborn as sns
from matplotlib.offsetbox import OffsetImage, AnnotationBbox from matplotlib.offsetbox import OffsetImage, AnnotationBbox
import os import os
import pandas as pd
sns.set_theme() sns.set_theme()
...@@ -68,15 +66,3 @@ class SeabornPlotter: ...@@ -68,15 +66,3 @@ class SeabornPlotter:
plt.xticks(rotation=45) plt.xticks(rotation=45)
plt.savefig(title + ".svg", format='svg') plt.savefig(title + ".svg", format='svg')
plt.show() plt.show()
...@@ -17,12 +17,13 @@ def main(): ...@@ -17,12 +17,13 @@ def main():
# Import Data # Import Data
creator = DataFrameCreator(data_path) creator = DataFrameCreator(data_path)
v_dataframes, l_dataframes = creator.create() v_dataframes, l_dataframes = creator.create()
# Plot
for frame in v_dataframes.keys(): for frame in v_dataframes.keys():
if not v_dataframes[frame].empty: if not v_dataframes[frame].empty:
# Setup Plotter # Setup Plotter
frame_name = frame frame_name = frame
v_plotter = SeabornPlotter(v_dataframes[frame], frame_name) v_plotter = SeabornPlotter(v_dataframes[frame], frame_name)
# Plotter run # Plotter run
v_plotter.plot_histogram_various() v_plotter.plot_histogram_various()
...@@ -31,7 +32,6 @@ def main(): ...@@ -31,7 +32,6 @@ def main():
# Setup Plotter # Setup Plotter
frame_name = frame frame_name = frame
l_plotter = SeabornPlotter(l_dataframes[frame], frame_name) l_plotter = SeabornPlotter(l_dataframes[frame], frame_name)
# Plotter run # Plotter run
l_plotter.plot_histogram_long() l_plotter.plot_histogram_long()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment