diff --git a/w1/data_processor.py b/w1/data_processor.py index b6d0bfd..ea35ae3 100644 --- a/w1/data_processor.py +++ b/w1/data_processor.py @@ -79,5 +79,13 @@ def aggregate(self, column_name: str) -> float: aggregate should be 105.58 """ ######################################## YOUR CODE HERE ################################################## + gen_data_reader = (row for row in self.data_reader) + _= next(gen_data_reader) + + aggregate = 0 + + for row in tqdm(gen_data_reader): + aggregate += self.to_float(row[column_name]) + return aggregate ######################################## YOUR CODE HERE ################################################## diff --git a/w1/main.py b/w1/main.py index 8d7dbfa..70c37cf 100644 --- a/w1/main.py +++ b/w1/main.py @@ -44,6 +44,22 @@ def revenue_per_region(dp: DataProcessor) -> Dict: } """ ######################################## YOUR CODE HERE ################################################## + gen_data_reader = (row for row in dp.data_reader) + + _= next(gen_data_reader) + + revenue_per_region = {} + + for row in tqdm(gen_data_reader): + country = row['Country'] + total_price = dp.to_float((row['TotalPrice'])) + + if country in revenue_per_region: + revenue_per_region[country] += total_price + else: + revenue_per_region[country] = total_price + + return revenue_per_region ######################################## YOUR CODE HERE ################################################## diff --git a/w1/utils.py b/w1/utils.py index f9bccf4..1102f9c 100644 --- a/w1/utils.py +++ b/w1/utils.py @@ -112,6 +112,11 @@ def __iter__(self) -> Generator: } """ ######################################## YOUR CODE HERE ################################################## + with open(self._fp, 'r') as f: + rows = f.readlines() + for row in rows: + row = row.strip().split(self._sep) + yield {self._col_names[i]: row[i] for i in range((len(self._col_names)))} ######################################## YOUR CODE HERE ##################################################