1
0
Fork 0

Add Trajectory class

parallel_struct_est
philpMartin 4 years ago
parent b3d9b35a9d
commit 106a9d3a42
  1. 56
      main_package/classes/importer.py
  2. 16
      main_package/classes/trajectory.py

@ -7,10 +7,11 @@ import numpy as np
class Importer(): class Importer():
"""Importer forisce tutti i metodi per portare il dataset in input nelle strutture dati corrette per essere trattate """Importer forisce tutti i metodi per importare i dataset in input in pandas data_frame ed effettuare operazioni
in memoria...... volte ad ottenere i valori contenuti in tali frame nel formato utile alle computazioni sui dati.
:files_path: il path alla cartella contenente i dataset da utilizzare :files_path: il path alla cartella contenente i dataset da utilizzare
:df_list: lista contentente tutti i padas_data_frame che saranno importati
""" """
def __init__(self, files_path): def __init__(self, files_path):
self.files_path = files_path self.files_path = files_path
@ -18,14 +19,44 @@ class Importer():
self.trajectories = [] self.trajectories = []
def import_data_from_csv(self): def import_data_from_csv(self):
"""Importa tutti i file csv presenti nel path files_path in data_frame distinti.
Aggiunge ogni data_frame alla lista df_list.
Parameters:
void
Returns:
void
"""
read_files = glob.glob(os.path.join(self.files_path, "*.csv")) read_files = glob.glob(os.path.join(self.files_path, "*.csv"))
for file in read_files: for file in read_files:
my_df = pd.read_csv(file) #TODO:Aggiungere try-catch controllo correttezza dei tipi di dato presenti nel dataset e.g. i tipi di dato della seconda colonna devono essere float my_df = pd.read_csv(file) #TODO:Aggiungere try-catch controllo correttezza dei tipi di dato presenti nel dataset e.g. i tipi di dato della seconda colonna devono essere float
self.df_list.append(my_df) self.df_list.append(my_df)
def merge_value_columns(self, df): def merge_value_columns(self, df):
""" Effettua il merging di tutte le colonne che contengono i valori delle variabili in un unica colonna chiamata State.
Parameters:
df: il data_frame su cui effettuare il merging delle colonne
Returns:
void
"""
df['State'] = df[df.columns[2:]].apply(lambda row: ''.join(row.values.astype(str)), axis=1) df['State'] = df[df.columns[2:]].apply(lambda row: ''.join(row.values.astype(str)), axis=1)
def get_data_frames(self):
return self.df_list
def clear_data_frames(self):
for data_frame in self.df_list:
data_frame = data_frame.iloc[0:0]
def build_trajectories(self): def build_trajectories(self):
for data_frame in self.df_list: for data_frame in self.df_list:
self.merge_value_columns(data_frame) self.merge_value_columns(data_frame)
@ -42,26 +73,7 @@ imp = Importer("../data")
imp.import_data_from_csv() imp.import_data_from_csv()
imp.build_trajectories() imp.build_trajectories()
print(imp.trajectories[0]) print(imp.trajectories[0])
#print(len(imp.df_list))
#print(imp.df_list[0])
#for column in imp.df_list[0].columns[2:]:
#print(imp.df_list[0][column])
#imp.df_list[0]['State'] = imp.df_list[0][column].astype(str)
#imp.df_list[0]['State'] = imp.df_list[0][imp.df_list[0].columns[2:]].apply(lambda row: ''.join(row.values.astype(str)), axis=1)
#imp.df_list[0]['new'] = imp.df_list[0].astype(str).values.sum(axis=1)
#print(imp.df_list[0])
#trajectory = imp.df_list[0][['Time','State']].to_numpy()
#print(hash(trajectory[0][1]))
#print(hash(trajectory[0][1]))
#imp.df_list[0] = imp.df_list[0].iloc[0:0]
#print(imp.df_list[0])
#print(type(imp.df_list[0].iloc[0,2]))
#print(imp.df_list[0].iloc[:, 2:])
#imp.merge_columns_values((imp.df_list[0]))
#print(type(imp.df_list[0].iloc[0,2]))

@ -0,0 +1,16 @@
import pandas as pd
import numpy as np
import importer
class Trajectory():
def __init__(self, data_frame):
self.actual_trajectory = self.build_trajectory(data_frame)
def build_trajectory(self, data_frame):
return data_frame[['Time','State']].to_numpy()
def get_trajectory(self):
return self.actual_trajectory