# CSV Data loader class class CSVDataLoader: def __init__(self, file_path): self.file_path = file_path def get_data(self): return pd.read_csv(self.file_path) def save_data(self, df): df.to_csv(f'data/transformed_{self.file_path}', index=False) # Interface class DataProcessor: def __init__(self, train_data_loader, test_data_loader): self.train_data_loader = train_data_loader self.test_data_loader = test_data_loader def run(self): # Load training and test data using data loaders train_df = self.train_data_loader.get_data() test_df = self.test_data_loader.get_data() # Create a data processor instance process = DataProcessor( train_data_loader=CSVDataLoader(file_path='train.csv'), test_data_loader=CSVDataLoader(file_path='test.csv') ) # Run the data processing pipeline process.run()