From 53fb38eba1be3a94872d83db2aaaaa45785b00a5 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Sat, 26 Oct 2024 15:34:16 +0200 Subject: [PATCH 01/29] FlugHafen pipeline - first commit --- exercises/exercise1.jv | 74 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 exercises/exercise1.jv diff --git a/exercises/exercise1.jv b/exercises/exercise1.jv new file mode 100644 index 000000000..8e555d31a --- /dev/null +++ b/exercises/exercise1.jv @@ -0,0 +1,74 @@ +pipeline FlugHafen{ + + //1. FlugHafen Pipeline connects the blocks via pipes to extract data from a CSV file + // in the web to a SQLite file sink. + FlugHafenHttpExtractor + -> FlugHafenTextFileInterpreter; + + //2. The FlugHafenTextFileInterpreter output is used as input for the FlugHafenCsvFileInterpreter + // block which is then used as input for the FlugHafenDataSelector block. + FlugHafenTextFileInterpreter + -> FlugHafenCsvFileInterpreter + // -> FlugHafenDatabaseWriter + -> FlugHafenDataSelector + -> FlugHafenTableInterpreter + -> FlugHafenLoader; + + //3. The FlugHafenHttpExtractor block is of type HttpExtractor and the URL is specified. + block FlugHafenHttpExtractor oftype HttpExtractor { + // URL of the data source + url: "https://opendata.rhein-kreis-neuss.de/api/explore/v2.1/catalog/datasets/rhein-kreis-neuss-flughafen-weltweit/exports/csv?lang=en&timezone=Europe%2FBerlin&use_labels=true&delimiter=%3B"; + } + + //4. The FlugHafenTextFileInterpreter block is of type TextFileInterpreter. + block FlugHafenTextFileInterpreter oftype TextFileInterpreter { } + + //5. Since we only need a specific range of the data, we use the CellRangeSelector block. + block FlugHafenDataSelector oftype CellRangeSelector { + // The name of the sheet + select: range A1:I*; + } + + //6. The FlugHafenCsvFileInterpreter block is of type CSVInterpreter and the delimiter is specified. + block FlugHafenCsvFileInterpreter oftype CSVInterpreter { + // Specify the separator as a semicolon for the CSV + delimiter: ';'; + } + + // block FlugHafenDatabaseWriter oftype DatabaseWriter { + // // The name of the database + // database: "flughafen.db"; + // // The name of the table + // table: "flughafen"; + // } + + //7. The FlugHafenTableInterpreter block is of type TableInterpreter and the necessary columns are specified. + block FlugHafenTableInterpreter oftype TableInterpreter { + // The first row contains the header + header: true; + // The columns of the table + columns: [ + "Lfd. Nummmer" oftype integer, + "Name des Flughafens" oftype text, + "Ort" oftype text, + "Land" oftype text, + "IATA" oftype text, + "ICAO" oftype text, + "Latitude" oftype decimal, + "Longitude" oftype decimal, + "Altitude" oftype integer, + + ]; + } + + //8. Finally the FlugHafenLoader block is of type SQLiteLoader and the table name and file name are specified. + block FlugHafenLoader oftype SQLiteLoader { + // The name of the table + table: "airports"; + // The name of the file + file: "../data/airports.sqlite"; + } + + +} + From 14afdf4e11480e7e625c64c08747916f1ff8c407 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Sun, 3 Nov 2024 10:25:30 +0100 Subject: [PATCH 02/29] exercise 2 initial commit --- exercises/exercise1.jv | 2 +- exercises/exercise2.jv | 85 +++++++++++++++++++++++++++++++++ project/project-plan-example.md | 35 ++++++++++++++ 3 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 exercises/exercise2.jv create mode 100644 project/project-plan-example.md diff --git a/exercises/exercise1.jv b/exercises/exercise1.jv index 8e555d31a..069d53922 100644 --- a/exercises/exercise1.jv +++ b/exercises/exercise1.jv @@ -66,7 +66,7 @@ pipeline FlugHafen{ // The name of the table table: "airports"; // The name of the file - file: "../data/airports.sqlite"; + file: "airports.sqlite"; } diff --git a/exercises/exercise2.jv b/exercises/exercise2.jv new file mode 100644 index 000000000..f46db1c3c --- /dev/null +++ b/exercises/exercise2.jv @@ -0,0 +1,85 @@ +pipeline TreePlanting{ + + //1. TreePlanting Pipeline connects the blocks via pipes to extract data from a CSV file + // in the web to a SQLite file sink. + TreePlantingHttpExtractor + -> TreePlantingTextFileInterpreter; + + //2. The TreePlantingTextFileInterpreter output is used as input for the TreePlantingCsvFileInterpreter + // block which is then used as input for the TreePlantingDataSelector block. + TreePlantingTextFileInterpreter + -> TreePlantingCsvFileInterpreter + // -> TreePlantingDatabaseWriter + -> TreePlantingBaumartDeutschDeleter + -> TreePlantingTableInterpreter + -> TreePlantingLoader; + + //3. The TreePlantingHttpExtractor block is of type HttpExtractor and the URL is specified. + block TreePlantingHttpExtractor oftype HttpExtractor { + // URL of the data source + url: "https://opendata.rhein-kreis-neuss.de/api/v2/catalog/datasets/stadt-neuss-herbstpflanzung-2023/exports/csv"; + } + + //4. The TreePlantingTextFileInterpreter block is of type TextFileInterpreter. + block TreePlantingTextFileInterpreter oftype TextFileInterpreter { } + + //6. The TreePlantingCsvFileInterpreter block is of type CSVInterpreter and the delimiter is specified. + block TreePlantingCsvFileInterpreter oftype CSVInterpreter { + // Specify the separator as a semicolon for the CSV + delimiter: ';'; + } + + //5. The TreePlantingBaumartDeutschDeleter block is of type ColumnDeleter and the column to be deleted is specified. + block TreePlantingBaumartDeutschDeleter oftype ColumnDeleter { + // The name of the column + delete: [column E]; + } + + //7. The TreePlantingTableInterpreter block is of type TableInterpreter and the necessary columns are specified. + block TreePlantingTableInterpreter oftype TableInterpreter { + // The first row contains the header + header: true; + // The columns of the table + columns: [ + "lfd_nr" oftype integer, + "stadtteil" oftype Vogelsang, + "standort" oftype text, + "baumart_botanisch" oftype text, + "id" oftype GeoCoordinate, + "baumfamilie" oftype text, + + ]; + } + + block TreePlantingLoader oftype SQLiteLoader { + // The name of the table + table: "trees"; + // The name of the file + file: "trees.sqlite"; + } + + + valuetype Vogelsang oftype text { + // The value of the column + constraints: [ + // only allow column values that start with "Vogelsang" + VogelsangStadteil + ]; + } + + valuetype GeoCoordinate oftype text { + // The value of the column + constraints: [ + // only allow column values that match the pattern of a geo coordinate + Geopoints + ]; + } + + constraint VogelsangStadteil on text: value matches(/^Vogelsang*/); + //8. Finally the TreePlantingLoader block is of type SQLiteLoader and the table name and file name are specified. + + constraint Geopoints on text: value matches(/^\d{1,3}\.\d+,\s*\d{1,3}\.\d+$/); + + +} + diff --git a/project/project-plan-example.md b/project/project-plan-example.md new file mode 100644 index 000000000..3273ed659 --- /dev/null +++ b/project/project-plan-example.md @@ -0,0 +1,35 @@ +# Project Plan + +## Title + +Awesome MADE project. + +## Main Question + + +1. Does writing an example question help students write better project plans? + +## Description + + +XY is an important problem, because... This projects analyzes XY, using method A. The results can give insights into... + +## Datasources + + + +### Datasource1: ExampleSource +* Metadata URL: https://mobilithek.info/offers/-6901989592576801458 +* Data URL: https://raw.githubusercontent.com/od-ms/radverkehr-zaehlstellen/main/100035541/2019-01.csv +* Data Type: CSV + +Short description of the DataSource. + +## Work Packages + + + +1. Example Issue [#1][i1] +2. ... + +[i1]: https://github.com/jvalue/made-template/issues/1 From 71c382d963a76e26220772a364bd47735b39c639 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Sun, 3 Nov 2024 12:27:24 +0100 Subject: [PATCH 03/29] Project plan inital commit --- project/project-plan-example.md | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/project/project-plan-example.md b/project/project-plan-example.md index 3273ed659..5731350a6 100644 --- a/project/project-plan-example.md +++ b/project/project-plan-example.md @@ -1,35 +1,42 @@ # Project Plan -## Title +## A visual inspection of Renewable Energy across North and South America -Awesome MADE project. +This analysis utilizes the International Renewable Energy Agency (IRENA) dataset to carry out a comprehensive visual inspection of the energy deployment across the Americas. Some of the key aspects that will be covered are: Costs, Energy Transition, Capacity and Generation and Investment trends. ## Main Question -1. Does writing an example question help students write better project plans? +1. What are the trends in renewable energy investments in Latin American countries, and how do they compare to fossil fuel investments over the past decade? + +2. What is the rate of adoption of renewable energy sources in countries across the Americas, and what factor contributes to differences? ## Description -XY is an important problem, because... This projects analyzes XY, using method A. The results can give insights into... +This project aims to analyze the renewable energy landscape in North and South America using the IRENA dataset. By examining trends in investment, capacity, and generation of renewable energy, we can gain insights into the energy transition in these regions. The analysis will involve visualizations to depict how renewable energy adoption varies by country and region, identifying factors such as government policies, economic conditions, and technological advancements that influence these trends. By comparing renewable energy investments to fossil fuel investments, this project seeks to highlight the evolving dynamics of energy financing and its implications for sustainable development in the Americas. ## Datasources -### Datasource1: ExampleSource -* Metadata URL: https://mobilithek.info/offers/-6901989592576801458 -* Data URL: https://raw.githubusercontent.com/od-ms/radverkehr-zaehlstellen/main/100035541/2019-01.csv -* Data Type: CSV +The International Renewable Energy Agency (IRENA) is a lead global intergovernmental agency for energy transformation that serves as the principal platform for international cooperation, supports countries in their energy transitions, and provides state of the art data and analyses on technology, innovation, policy, finance and investment. IRENA drives the widespread adoption and sustainable use of all forms of renewable energy, including bioenergy, geothermal, hydropower, ocean, solar and wind energy in the pursuit of sustainable development, energy access, and energy security, for economic and social resilience and prosperity and a climate-proof future. [IRENA Website](https://www.irena.org/About) + +### Datasource: IRENA Dataset +* Metadata URL: https://www.irena.org/Data/Downloads/Tools +* Data URL: https://www.irena.org/Data/Downloads/IRENASTAT +* Data Type: xlsx + -Short description of the DataSource. ## Work Packages -1. Example Issue [#1][i1] -2. ... +1. Data Collection and Cleaning [#1][i1] +2. Exploratory Data Analysis [#2][i1] +3. Visualization Development [#3][i1] +4. Comparision of Investment Trends [#4][i1] +5. Final Report and Presentation [#5][i1] [i1]: https://github.com/jvalue/made-template/issues/1 From d72f740890b08eaeea9c44a1fc7229a67978de9d Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Wed, 13 Nov 2024 22:43:08 +0100 Subject: [PATCH 04/29] ex 3 initial commit --- .gitignore | 4 +- project/pipeline.sh | 2 + project/prepare_data.py | 158 ++++++++++++++++++++++++++++++++ project/project-plan-example.md | 21 +++-- 4 files changed, 176 insertions(+), 9 deletions(-) create mode 100755 project/pipeline.sh create mode 100644 project/prepare_data.py diff --git a/.gitignore b/.gitignore index d6d425f68..b0d1d6bcd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .DS_Store /data/* -!/data/.gitkeep \ No newline at end of file +!/data/.gitkeep +.mypy_cache/ +temp_dir/ \ No newline at end of file diff --git a/project/pipeline.sh b/project/pipeline.sh new file mode 100755 index 000000000..736c1a3c6 --- /dev/null +++ b/project/pipeline.sh @@ -0,0 +1,2 @@ +#!/bin/bash +python3 /home/blackphoenix/projects/MADE/made-template/project/prepare_data.py diff --git a/project/prepare_data.py b/project/prepare_data.py new file mode 100644 index 000000000..178390e3c --- /dev/null +++ b/project/prepare_data.py @@ -0,0 +1,158 @@ +import requests +import zipfile +import io +import os +import pandas as pd +import shutil +from sqlalchemy import create_engine, Table, Column, String, Integer, Float, MetaData + +def create_temp_directory(path="project/temp_dir"): + """Creates a temporary directory for storing extracted files.""" + os.makedirs(path, mode=0o777, exist_ok=True) + return path + +def create_database_engine(db_path="data/world_data.sqlite"): + """Creates and returns an SQLAlchemy engine.""" + return create_engine(f"sqlite:///{db_path}") + +def create_tables(metadata, year_columns): + """Defines and returns the table structures.""" + tables = { + "LCN": Table( + "LCN", + metadata, + Column("CountryName", String), + Column("CountryCode", String), + Column("IndicatorName", String), + Column("IndicatorCode", String), + Column("SourceNote", String), + Column("SourceOrganization", String), + *[Column(year, Float) for year in year_columns], + ), + "NAC": Table( + "NAC", + metadata, + Column("CountryName", String), + Column("CountryCode", String), + Column("IndicatorName", String), + Column("IndicatorCode", String), + Column("SourceNote", String), + Column("SourceOrganization", String), + *[Column(year, Float) for year in year_columns], + ), + } + return tables + +def download_and_extract_data(urls, temp_dir): + """Downloads and extracts CSV files from the given URLs.""" + for region, url in urls.items(): + response = requests.get(url) + with zipfile.ZipFile(io.BytesIO(response.content)) as zip_ref: + zip_ref.extractall(temp_dir) + print(f"Downloaded and extracted data for {region}") + +def load_main_and_metadata_files(temp_dir): + """Loads main and metadata files from the temporary directory.""" + main_files = [f for f in os.listdir(temp_dir) if f.startswith("API") and f.endswith(".csv")] + metadata_files = [f for f in os.listdir(temp_dir) if f.startswith("Metadata_Indicator") and f.endswith(".csv")] + metadata_files = list(reversed(metadata_files)) + return main_files, metadata_files + +def clean_and_merge_data(main_file, metadata_file, temp_dir, year_columns): + """Cleans and merges the main data with metadata.""" + # Load main data + main_df = pd.read_csv(os.path.join(temp_dir, main_file), encoding="utf-8-sig", skiprows=4) + main_df.fillna(0, inplace=True) + main_df = main_df.loc[:, ~main_df.columns.str.contains("^Unnamed")] + + # Load metadata + metadata_df = pd.read_csv(os.path.join(temp_dir, metadata_file), encoding="utf-8-sig") + metadata_df = metadata_df.loc[:, ~metadata_df.columns.str.contains("^Unnamed")] + metadata_df.rename(columns={"INDICATOR_CODE": "Indicator Code"}, inplace=True) + metadata_df = metadata_df.drop(columns=["INDICATOR_NAME"]) + + # Merge data and metadata on 'Indicator Code' + merged_df = main_df.merge(metadata_df, on="Indicator Code", how="outer") + + # Rename columns to match the database table schema + merged_df.rename( + columns={ + "Country Name": "CountryName", + "Country Code": "CountryCode", + "Indicator Name": "IndicatorName", + "Indicator Code": "IndicatorCode", + "SOURCE_NOTE": "SourceNote", + "SOURCE_ORGANIZATION": "SourceOrganization", + }, + inplace=True, + ) + + # Rearrange columns + merged_df = merged_df[[ + "CountryName", + "CountryCode", + "IndicatorName", + "IndicatorCode", + "SourceNote", + "SourceOrganization", + *year_columns, + ]] + + return merged_df + +def save_to_database(merged_df, table_name, tables, engine): + """Saves the merged data to the appropriate SQLite table.""" + if table_name in tables: + merged_df.to_sql(table_name, engine, if_exists="append", index=False) + print(f"Merged data and metadata stored in SQLite table '{table_name}'") + else: + print(f"Table '{table_name}' not found in the database") + +def clean_up(temp_dir): + """Removes the temporary directory.""" + shutil.rmtree(temp_dir) + print("Cleaned up temporary directory.") + +def main(): + """Main function that orchestrates the entire process.""" + urls = { + "north_america": "https://api.worldbank.org/v2/en/country/NAC?downloadformat=csv", + "latin_america_caribbean": "https://api.worldbank.org/v2/en/country/LCN?downloadformat=csv", + } + + # Create the temp directory and database engine + temp_dir = create_temp_directory() + engine = create_database_engine() + + # Define year columns (1960 to 2023) + year_columns = [str(year) for year in range(1960, 2024)] + + # Create tables if they don't exist + metadata = MetaData() + tables = create_tables(metadata, year_columns) + metadata.create_all(engine) + + # Download and extract data + download_and_extract_data(urls, temp_dir) + + # Load main and metadata files + main_files, metadata_files = load_main_and_metadata_files(temp_dir) + + # Process each file pair + for main_file, metadata_file in zip(main_files, metadata_files): + merged_df = clean_and_merge_data(main_file, metadata_file, temp_dir, year_columns) + + # Determine the table name based on the region + # table_name = main_file.split("_")[1].split(".")[0].title().replace(" ", "_") + # table_name = region.replace("_", " ").title().replace(" ", "_") + # Determine the region and map to table name + region = main_file.split("_")[1].split(".")[0] + + # Save the merged data to the database + save_to_database(merged_df, region, tables, engine) + + # Clean up the temporary directory + clean_up(temp_dir) + +if __name__ == "__main__": + main() diff --git a/project/project-plan-example.md b/project/project-plan-example.md index 5731350a6..374c9a673 100644 --- a/project/project-plan-example.md +++ b/project/project-plan-example.md @@ -1,30 +1,35 @@ # Project Plan -## A visual inspection of Renewable Energy across North and South America +## A visual inspection of Regional Economic Trends: North America & Latin America Analysis This analysis utilizes the International Renewable Energy Agency (IRENA) dataset to carry out a comprehensive visual inspection of the energy deployment across the Americas. Some of the key aspects that will be covered are: Costs, Energy Transition, Capacity and Generation and Investment trends. ## Main Question -1. What are the trends in renewable energy investments in Latin American countries, and how do they compare to fossil fuel investments over the past decade? +1. How have economic indicators (such as GDP, poverty rate, or education level) evolved over time across different countries in North America and Latin America & the Caribbean, and what trends or patterns can be identified in their development? + -2. What is the rate of adoption of renewable energy sources in countries across the Americas, and what factor contributes to differences? ## Description -This project aims to analyze the renewable energy landscape in North and South America using the IRENA dataset. By examining trends in investment, capacity, and generation of renewable energy, we can gain insights into the energy transition in these regions. The analysis will involve visualizations to depict how renewable energy adoption varies by country and region, identifying factors such as government policies, economic conditions, and technological advancements that influence these trends. By comparing renewable energy investments to fossil fuel investments, this project seeks to highlight the evolving dynamics of energy financing and its implications for sustainable development in the Americas. +For this project, I am working on integrating and analyzing global economic and development indicators from the World Bank for different regions. The goal is to clean, merge, and store these indicators in an SQLite database to facilitate future analysis. The project begins by downloading raw CSV files containing economic data as well as many indicators for North America and Latin America & the Caribbean. These files are then extracted from compressed archives, cleaned by removing unnecessary columns, and merged with metadata that provides descriptions for each indicator. The data is then transformed to match a predefined schema with columns for country names, indicator codes, and values for each year from 1960 to 2023. ## Datasources -The International Renewable Energy Agency (IRENA) is a lead global intergovernmental agency for energy transformation that serves as the principal platform for international cooperation, supports countries in their energy transitions, and provides state of the art data and analyses on technology, innovation, policy, finance and investment. IRENA drives the widespread adoption and sustainable use of all forms of renewable energy, including bioenergy, geothermal, hydropower, ocean, solar and wind energy in the pursuit of sustainable development, energy access, and energy security, for economic and social resilience and prosperity and a climate-proof future. [IRENA Website](https://www.irena.org/About) +Datasource1: North America Economic Data [World Bank](https://data.worldbank.org/country) +This dataset contains various economic and development indicators for countries in North America, including the United States, Canada, and Mexico. It includes data on GDP, poverty rates, education, healthcare, and other socio-economic indicators over time (from 1960 to 2023). The data is provided by the World Bank in CSV format and will be used to examine the economic development and trends in the North American region. The source is available for download through a World Bank API, which delivers the data in a zip file. + +Datasource2: Latin America & Caribbean Economic Data [World Bank](https://data.worldbank.org/country) +Similar to the North American dataset, this dataset provides economic and development indicators for countries in Latin America and the Caribbean. It includes a wide range of data on economic growth, social development, and health metrics. The dataset spans the years 1960 to 2023 and will be used to analyze trends in economic and social development for the Latin American and Caribbean region. The data is also provided in CSV format and can be accessed through the World Bank API in a compressed zip file. [IRENA Website](https://www.irena.org/About) -### Datasource: IRENA Dataset -* Metadata URL: https://www.irena.org/Data/Downloads/Tools -* Data URL: https://www.irena.org/Data/Downloads/IRENASTAT +### Datasource: World Bank Dataset +* Metadata URL: https://data.worldbank.org/country +* Data source 1: https://data.worldbank.org/region/north-america?view=chart +* Data source 2: https://data.worldbank.org/region/north-america?view=chart * Data Type: xlsx From b3c8deedde135dc902429bdf5197667cb33e32a8 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Wed, 13 Nov 2024 22:46:19 +0100 Subject: [PATCH 05/29] minor change --- project/project-plan-example.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/project-plan-example.md b/project/project-plan-example.md index 374c9a673..a7b8dcc7b 100644 --- a/project/project-plan-example.md +++ b/project/project-plan-example.md @@ -30,7 +30,7 @@ Similar to the North American dataset, this dataset provides economic and develo * Metadata URL: https://data.worldbank.org/country * Data source 1: https://data.worldbank.org/region/north-america?view=chart * Data source 2: https://data.worldbank.org/region/north-america?view=chart -* Data Type: xlsx +* Data Type: csv From 6a6507a02050c8d8b7363085dcc46881122d21b3 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Wed, 13 Nov 2024 22:49:58 +0100 Subject: [PATCH 06/29] update to project plan --- project/project-plan-example.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/project/project-plan-example.md b/project/project-plan-example.md index a7b8dcc7b..a733f3f91 100644 --- a/project/project-plan-example.md +++ b/project/project-plan-example.md @@ -38,10 +38,10 @@ Similar to the North American dataset, this dataset provides economic and develo -1. Data Collection and Cleaning [#1][i1] -2. Exploratory Data Analysis [#2][i1] -3. Visualization Development [#3][i1] -4. Comparision of Investment Trends [#4][i1] -5. Final Report and Presentation [#5][i1] +[x] Data Collection and Cleaning [#1][i1] +[] Exploratory Data Analysis [#2][i1] +[] Visualization Development [#3][i1] +[] Comparision of Investment Trends [#4][i1] +[] Final Report and Presentation [#5][i1] [i1]: https://github.com/jvalue/made-template/issues/1 From f40dfd710c444f14b62c61abb66655159e9ae53d Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Wed, 13 Nov 2024 22:57:03 +0100 Subject: [PATCH 07/29] update to project plan --- project/project-plan-example.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/project/project-plan-example.md b/project/project-plan-example.md index a733f3f91..2b4b4c1ef 100644 --- a/project/project-plan-example.md +++ b/project/project-plan-example.md @@ -38,10 +38,10 @@ Similar to the North American dataset, this dataset provides economic and develo -[x] Data Collection and Cleaning [#1][i1] -[] Exploratory Data Analysis [#2][i1] -[] Visualization Development [#3][i1] -[] Comparision of Investment Trends [#4][i1] -[] Final Report and Presentation [#5][i1] +- [x] Data Collection and Cleaning [#1][i1] +- [] Exploratory Data Analysis [#2][i1] +- [] Visualization Development [#3][i1] +- [] Comparision of Investment Trends [#4][i1] +- [] Final Report and Presentation [#5][i1] [i1]: https://github.com/jvalue/made-template/issues/1 From e9454dca2befd8716c9a6870c2078550cb9cf02d Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Wed, 13 Nov 2024 23:10:29 +0100 Subject: [PATCH 08/29] update to project plan --- project/project-plan-example.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/project-plan-example.md b/project/project-plan-example.md index 2b4b4c1ef..e22f9fc71 100644 --- a/project/project-plan-example.md +++ b/project/project-plan-example.md @@ -14,7 +14,7 @@ This analysis utilizes the International Renewable Energy Agency (IRENA) dataset ## Description -For this project, I am working on integrating and analyzing global economic and development indicators from the World Bank for different regions. The goal is to clean, merge, and store these indicators in an SQLite database to facilitate future analysis. The project begins by downloading raw CSV files containing economic data as well as many indicators for North America and Latin America & the Caribbean. These files are then extracted from compressed archives, cleaned by removing unnecessary columns, and merged with metadata that provides descriptions for each indicator. The data is then transformed to match a predefined schema with columns for country names, indicator codes, and values for each year from 1960 to 2023. +For this project, I am working on integrating and analyzing global economic and development indicators from the World Bank for different regions. The goal is to clean, merge, and store these indicators in an SQLite database to facilitate future analysis. The project begins by downloading raw CSV files containing economic data as well as many indicators for North America and Latin America & the Caribbean. These files are then extracted from compressed archives, cleaned by removing unnecessary columns, and merged with metadata that provides descriptions for each indicator. The data is then transformed to match a predefined schema with columns for country names, indicator codes, and values for each year from 1960 to 2023 and stored in two tables 'LCN' and 'NAC' of the world_data.sqlite database. ## Datasources From 3976fad7f732c8f882db8201b791d4d3597b5d1d Mon Sep 17 00:00:00 2001 From: "Rabin BK (Bishwokarma)" Date: Thu, 14 Nov 2024 15:17:55 +0100 Subject: [PATCH 09/29] Update project-plan-example.md minor changes in the project plan md --- project/project-plan-example.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/project/project-plan-example.md b/project/project-plan-example.md index e22f9fc71..e7f378f15 100644 --- a/project/project-plan-example.md +++ b/project/project-plan-example.md @@ -20,17 +20,20 @@ For this project, I am working on integrating and analyzing global economic and -Datasource1: North America Economic Data [World Bank](https://data.worldbank.org/country) +Datasource 1: North America Economic Data [World Bank](https://data.worldbank.org/region/north-america?view=chart) This dataset contains various economic and development indicators for countries in North America, including the United States, Canada, and Mexico. It includes data on GDP, poverty rates, education, healthcare, and other socio-economic indicators over time (from 1960 to 2023). The data is provided by the World Bank in CSV format and will be used to examine the economic development and trends in the North American region. The source is available for download through a World Bank API, which delivers the data in a zip file. -Datasource2: Latin America & Caribbean Economic Data [World Bank](https://data.worldbank.org/country) -Similar to the North American dataset, this dataset provides economic and development indicators for countries in Latin America and the Caribbean. It includes a wide range of data on economic growth, social development, and health metrics. The dataset spans the years 1960 to 2023 and will be used to analyze trends in economic and social development for the Latin American and Caribbean region. The data is also provided in CSV format and can be accessed through the World Bank API in a compressed zip file. [IRENA Website](https://www.irena.org/About) +Datasource 2: Latin America & Caribbean Economic Data [World Bank]( https://data.worldbank.org/region/latin-america-and-caribbean?view=chart) +Similar to the North American dataset, this dataset provides economic and development indicators for countries in Latin America and the Caribbean. It includes a wide range of data on economic growth, social development, and health metrics. The dataset spans the years 1960 to 2023 and will be used to analyze trends in economic and social development for the Latin American and Caribbean region. The data is also provided in CSV format and can be accessed through the World Bank API in a compressed zip file. [World bank Website](https://data.worldbank.org/) ### Datasource: World Bank Dataset * Metadata URL: https://data.worldbank.org/country * Data source 1: https://data.worldbank.org/region/north-america?view=chart -* Data source 2: https://data.worldbank.org/region/north-america?view=chart -* Data Type: csv +* Data source 2: https://data.worldbank.org/region/latin-america-and-caribbean?view=chart +* Data Type: csv + +### License +[Creative Commons Attribution 4.0 International License (CC BY 4.0)](https://www.worldbank.org/en/about/legal/terms-of-use-for-datasets) From 57d181b6cbc45385a00b89d795cfdf7dafbe9fef Mon Sep 17 00:00:00 2001 From: "Rabin BK (Bishwokarma)" Date: Thu, 14 Nov 2024 15:18:41 +0100 Subject: [PATCH 10/29] Update project-plan-example.md fixing typos --- project/project-plan-example.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/project/project-plan-example.md b/project/project-plan-example.md index e7f378f15..ead1ec288 100644 --- a/project/project-plan-example.md +++ b/project/project-plan-example.md @@ -20,10 +20,10 @@ For this project, I am working on integrating and analyzing global economic and -Datasource 1: North America Economic Data [World Bank](https://data.worldbank.org/region/north-america?view=chart) +#### Datasource 1: North America Economic Data [World Bank](https://data.worldbank.org/region/north-america?view=chart) This dataset contains various economic and development indicators for countries in North America, including the United States, Canada, and Mexico. It includes data on GDP, poverty rates, education, healthcare, and other socio-economic indicators over time (from 1960 to 2023). The data is provided by the World Bank in CSV format and will be used to examine the economic development and trends in the North American region. The source is available for download through a World Bank API, which delivers the data in a zip file. -Datasource 2: Latin America & Caribbean Economic Data [World Bank]( https://data.worldbank.org/region/latin-america-and-caribbean?view=chart) +#### Datasource 2: Latin America & Caribbean Economic Data [World Bank]( https://data.worldbank.org/region/latin-america-and-caribbean?view=chart) Similar to the North American dataset, this dataset provides economic and development indicators for countries in Latin America and the Caribbean. It includes a wide range of data on economic growth, social development, and health metrics. The dataset spans the years 1960 to 2023 and will be used to analyze trends in economic and social development for the Latin American and Caribbean region. The data is also provided in CSV format and can be accessed through the World Bank API in a compressed zip file. [World bank Website](https://data.worldbank.org/) ### Datasource: World Bank Dataset From d7b0bd802700b6a629feaba00e02c75caebae0d6 Mon Sep 17 00:00:00 2001 From: "Rabin BK (Bishwokarma)" Date: Thu, 14 Nov 2024 15:33:36 +0100 Subject: [PATCH 11/29] Update project-plan-example.md just a dot --- project/project-plan-example.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/project-plan-example.md b/project/project-plan-example.md index ead1ec288..109487d1e 100644 --- a/project/project-plan-example.md +++ b/project/project-plan-example.md @@ -7,7 +7,7 @@ This analysis utilizes the International Renewable Energy Agency (IRENA) dataset ## Main Question -1. How have economic indicators (such as GDP, poverty rate, or education level) evolved over time across different countries in North America and Latin America & the Caribbean, and what trends or patterns can be identified in their development? +* How have economic indicators (such as GDP, poverty rate, or education level) evolved over time across different countries in North America and Latin America & the Caribbean, and what trends or patterns can be identified in their development? From de98368a74eac52ae097359005c4a8f7c54ef067 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Mon, 18 Nov 2024 23:11:27 +0100 Subject: [PATCH 12/29] exercise 3 initial commit --- exercises/exercise3.py | 90 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 exercises/exercise3.py diff --git a/exercises/exercise3.py b/exercises/exercise3.py new file mode 100644 index 000000000..a5e2d0f79 --- /dev/null +++ b/exercises/exercise3.py @@ -0,0 +1,90 @@ +import pandas as pd +import os +import requests +import zipfile +from sqlalchemy import create_engine, Table, Column, String, Integer, Float, MetaData + + +# fetch the data +def fetch_data(url): + response = requests.get(url) + data = pd.read_excel(url, sheet_name="Figure S5.1.2", usecols="P:S", skiprows=1) + return data + + +def clean_and_validate_data(data): + data = data.dropna() + columns_to_rename = { + "ISO3": "Country Code", + "GDP per capita (US$, thousands)": "GDP per Capita", + "Share of government sustainable\nbonds": "Bond Issuance Share", + } + data = data.rename(columns=columns_to_rename) + + print(data.columns) + + # country code should be ISO 3166-1 alpha-3 + data = data[data["Country Code"].str.len() == 3] + + # GDP should be a positive decimal and not empty + # data = data["GDP per Capita"].str.replace(",", "").str.replace(".", "").str.isnumeric() + data = data[data["GDP per Capita"].astype(float) > 0] + + # Bond issuance share should be a decimal between 0 and 1 (inclusive) + data = data[data["Bond Issuance Share"].between(0, 1, inclusive="both")] + + return data + + +def create_database_engine(db_path="data/country-stats.sqlite"): + """Creates and returns an SQLAlchemy engine.""" + return create_engine(f"sqlite:///{db_path}") + + +def create_tables(data): + """Defines two tables and returns the table structures.""" + metadata = MetaData() + tables = { + "gdpPerCapita": Table( + "gdpPerCapita", + metadata, + Column("Country Code", String), + Column("GDP per Capita", Float), + ), + "bondIssuance": Table( + "bondIssuance", + metadata, + Column("Country Code", String), + Column("Bond Issuance Share", Float), + ), + } + return tables + + +def save_to_database(data, tables, engine): + """Saves the data to the database.""" + for table_name, table in tables.items(): + table_columns = [column.name for column in table.columns] + + data[table_columns].to_sql(table_name, engine, if_exists="replace", index=False) + + +if __name__ == "__main__": + url = "https://thedocs.worldbank.org/en/doc/7d852628d96b9411d43e5d36d5dff941-0050062022/original/Graphs-Chapter-5-02082022.xlsx" + data = fetch_data(url) + + # clean and prepare the data + df = clean_and_validate_data(data) + + # create the database engine + engine = create_database_engine() + + # create the tables + tables = create_tables(df) + + # save the data to the database + save_to_database(df, tables, engine) + + print("Data saved to SQLite database.") + + \ No newline at end of file From b93c460fb4145d3eaf99ccd28194003708cecbac Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Tue, 19 Nov 2024 19:04:13 +0100 Subject: [PATCH 13/29] removed python code, with complete jv code --- exercises/exercise3.jv | 126 +++++++++++++++++++++++++++++++++++++++++ exercises/exercise3.py | 90 ----------------------------- 2 files changed, 126 insertions(+), 90 deletions(-) create mode 100644 exercises/exercise3.jv delete mode 100644 exercises/exercise3.py diff --git a/exercises/exercise3.jv b/exercises/exercise3.jv new file mode 100644 index 000000000..79810744d --- /dev/null +++ b/exercises/exercise3.jv @@ -0,0 +1,126 @@ +pipeline WorldBank{ + + // //1. WorldBank Pipeline connects the blocks via pipes to extract data from a CSV file + // // in the web to a SQLite file sink. + // WorldBankHttpExtractor + // -> WorldBankTextXLSXInterpreter; + // // -> DataCellSheetpicker; + + // //2. The WorldBankTextFileInterpreter output is used as input for the WorldBankCsvFileInterpreter + // // block which is then used as input for the WorldBankDataSelector block. + // WorldBankTextXLSXInterpreter + // -> DataCellSheetpicker + // -> WorldBankRangeSelector + // -> NameHeaderWriter + // -> WorldBankTableInterpreter + // -> BondIssuanceSelector + // -> GDPSelector + // -> BondIssuanceTableLoader + // -> GDPTableLoader; + + + //3. The WorldBankHttpExtractor block is of type HttpExtractor and the URL is specified. + block WorldBankHttpExtractor oftype HttpExtractor { + // URL of the data source + url: "https://thedocs.worldbank.org/en/doc/7d852628d96b9411d43e5d36d5dff941-0050062022/original/Graphs-Chapter-5-02082022.xlsx"; + } + + //4. The WorldBankTextFileInterpreter block is of type TextFileInterpreter. + block WorldBankTextXLSXInterpreter oftype XLSXInterpreter { } + + //Selecting only the sheet S5.1.2 from the excel file + block DataCellSheetpicker oftype SheetPicker { + // Specify the separator as a semicolon for the CSV + sheetName: "Figure S5.1.2"; + } + + //Selecting the range of cells + block WorldBankRangeSelector oftype CellRangeSelector { + // The name of the column + select: range P2:S45; + } + + // Renaming the columns + block NameHeaderWriter oftype CellWriter { + // The name of the column + at: range A1:D1; + write: ["Country Code", "Economy", "GDP per Capita", "Bond Issuance Share"]; + } + + // Selecting the Bond Issuance Share column + block BondIssuanceTableInterpreter oftype TableInterpreter { + // The name of the column + columns: [ + "Country Code" oftype CountryCodeAlpha3, + // "Economy" oftype text, + // "GDP per Capita" oftype PositiveDecimal, + "Bond Issuance Share" oftype BetweenZeroAndOne, + ]; + } + + // Selecting the GDP per Capita column + block GDPTableInterpreter oftype TableInterpreter { + // The name of the column + columns: [ + "Country Code" oftype CountryCodeAlpha3, + // "Economy" oftype text, + "GDP per Capita" oftype PositiveDecimal, + // "Bond Issuance Share" oftype BetweenZeroAndOne, + ]; + } + + block BondIssuanceTableLoader oftype SQLiteLoader { + // The name of the table + table: "bondIssuance"; + // The name of the file + file: "data/country-stats.sqlite"; + } + + block GDPTableLoader oftype SQLiteLoader { + // The name of the table + table: "gdpPerCapita"; + // The name of the file + file: "data/country-stats.sqlite"; + } + + + valuetype PositiveDecimal oftype decimal { + // The value of the column + constraints: [ + // only allow column values that start with "Vogelsang" + OnlyPositiveDecimal + ]; + } + + valuetype BetweenZeroAndOne oftype decimal { + // The value of the column + constraints: [ + // only allow column values that are between 0 and 1 + BetweenZeroAndOneConstraint + ]; + } + + constraint OnlyPositiveDecimal on decimal: value > 0; + constraint BetweenZeroAndOneConstraint on decimal: value >= 0 and value <= 1; + + + WorldBankHttpExtractor + -> WorldBankTextXLSXInterpreter; + + WorldBankTextXLSXInterpreter + -> DataCellSheetpicker + -> WorldBankRangeSelector + -> NameHeaderWriter; + + // Bond Issuance pipeline + NameHeaderWriter + -> BondIssuanceTableInterpreter + -> BondIssuanceTableLoader; + + NameHeaderWriter + -> GDPTableInterpreter + -> GDPTableLoader; + + +} + diff --git a/exercises/exercise3.py b/exercises/exercise3.py deleted file mode 100644 index a5e2d0f79..000000000 --- a/exercises/exercise3.py +++ /dev/null @@ -1,90 +0,0 @@ -import pandas as pd -import os -import requests -import zipfile -from sqlalchemy import create_engine, Table, Column, String, Integer, Float, MetaData - - -# fetch the data -def fetch_data(url): - response = requests.get(url) - data = pd.read_excel(url, sheet_name="Figure S5.1.2", usecols="P:S", skiprows=1) - return data - - -def clean_and_validate_data(data): - data = data.dropna() - columns_to_rename = { - "ISO3": "Country Code", - "GDP per capita (US$, thousands)": "GDP per Capita", - "Share of government sustainable\nbonds": "Bond Issuance Share", - } - data = data.rename(columns=columns_to_rename) - - print(data.columns) - - # country code should be ISO 3166-1 alpha-3 - data = data[data["Country Code"].str.len() == 3] - - # GDP should be a positive decimal and not empty - # data = data["GDP per Capita"].str.replace(",", "").str.replace(".", "").str.isnumeric() - data = data[data["GDP per Capita"].astype(float) > 0] - - # Bond issuance share should be a decimal between 0 and 1 (inclusive) - data = data[data["Bond Issuance Share"].between(0, 1, inclusive="both")] - - return data - - -def create_database_engine(db_path="data/country-stats.sqlite"): - """Creates and returns an SQLAlchemy engine.""" - return create_engine(f"sqlite:///{db_path}") - - -def create_tables(data): - """Defines two tables and returns the table structures.""" - metadata = MetaData() - tables = { - "gdpPerCapita": Table( - "gdpPerCapita", - metadata, - Column("Country Code", String), - Column("GDP per Capita", Float), - ), - "bondIssuance": Table( - "bondIssuance", - metadata, - Column("Country Code", String), - Column("Bond Issuance Share", Float), - ), - } - return tables - - -def save_to_database(data, tables, engine): - """Saves the data to the database.""" - for table_name, table in tables.items(): - table_columns = [column.name for column in table.columns] - - data[table_columns].to_sql(table_name, engine, if_exists="replace", index=False) - - -if __name__ == "__main__": - url = "https://thedocs.worldbank.org/en/doc/7d852628d96b9411d43e5d36d5dff941-0050062022/original/Graphs-Chapter-5-02082022.xlsx" - data = fetch_data(url) - - # clean and prepare the data - df = clean_and_validate_data(data) - - # create the database engine - engine = create_database_engine() - - # create the tables - tables = create_tables(df) - - # save the data to the database - save_to_database(df, tables, engine) - - print("Data saved to SQLite database.") - - \ No newline at end of file From c60b39208e1bf9fd1ca61e7087be0075a0ddbe97 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Tue, 19 Nov 2024 19:07:48 +0100 Subject: [PATCH 14/29] code revision and documentation --- exercises/exercise3.jv | 80 ++++++++++++------------------------------ 1 file changed, 23 insertions(+), 57 deletions(-) diff --git a/exercises/exercise3.jv b/exercises/exercise3.jv index 79810744d..90d443400 100644 --- a/exercises/exercise3.jv +++ b/exercises/exercise3.jv @@ -1,109 +1,77 @@ -pipeline WorldBank{ - - // //1. WorldBank Pipeline connects the blocks via pipes to extract data from a CSV file - // // in the web to a SQLite file sink. - // WorldBankHttpExtractor - // -> WorldBankTextXLSXInterpreter; - // // -> DataCellSheetpicker; - - // //2. The WorldBankTextFileInterpreter output is used as input for the WorldBankCsvFileInterpreter - // // block which is then used as input for the WorldBankDataSelector block. - // WorldBankTextXLSXInterpreter - // -> DataCellSheetpicker - // -> WorldBankRangeSelector - // -> NameHeaderWriter - // -> WorldBankTableInterpreter - // -> BondIssuanceSelector - // -> GDPSelector - // -> BondIssuanceTableLoader - // -> GDPTableLoader; - - - //3. The WorldBankHttpExtractor block is of type HttpExtractor and the URL is specified. +pipeline WorldBank { + + // 1. Block to extract an XLSX file from the web block WorldBankHttpExtractor oftype HttpExtractor { - // URL of the data source + // URL of the source file containing the data url: "https://thedocs.worldbank.org/en/doc/7d852628d96b9411d43e5d36d5dff941-0050062022/original/Graphs-Chapter-5-02082022.xlsx"; } - //4. The WorldBankTextFileInterpreter block is of type TextFileInterpreter. + // 2. Block to interpret the downloaded file as an XLSX workbook block WorldBankTextXLSXInterpreter oftype XLSXInterpreter { } - //Selecting only the sheet S5.1.2 from the excel file + // 3. Block to select the specific sheet "Figure S5.1.2" from the workbook block DataCellSheetpicker oftype SheetPicker { - // Specify the separator as a semicolon for the CSV sheetName: "Figure S5.1.2"; } - //Selecting the range of cells + // 4. Block to specify the cell range of interest in the selected sheet block WorldBankRangeSelector oftype CellRangeSelector { - // The name of the column select: range P2:S45; } - // Renaming the columns + // 5. Block to rename columns for clarity and standardization block NameHeaderWriter oftype CellWriter { - // The name of the column at: range A1:D1; write: ["Country Code", "Economy", "GDP per Capita", "Bond Issuance Share"]; } - // Selecting the Bond Issuance Share column + // 6. Block to interpret and filter the "Bond Issuance Share" column data block BondIssuanceTableInterpreter oftype TableInterpreter { - // The name of the column columns: [ "Country Code" oftype CountryCodeAlpha3, - // "Economy" oftype text, - // "GDP per Capita" oftype PositiveDecimal, "Bond Issuance Share" oftype BetweenZeroAndOne, ]; } - // Selecting the GDP per Capita column + // 7. Block to interpret and filter the "GDP per Capita" column data block GDPTableInterpreter oftype TableInterpreter { - // The name of the column columns: [ "Country Code" oftype CountryCodeAlpha3, - // "Economy" oftype text, "GDP per Capita" oftype PositiveDecimal, - // "Bond Issuance Share" oftype BetweenZeroAndOne, ]; } + // 8. Block to load "Bond Issuance Share" data into a SQLite table block BondIssuanceTableLoader oftype SQLiteLoader { - // The name of the table - table: "bondIssuance"; - // The name of the file - file: "data/country-stats.sqlite"; + table: "bondIssuance"; // Table name in the SQLite database + file: "country-stats.sqlite"; // SQLite database file } + // 9. Block to load "GDP per Capita" data into a SQLite table block GDPTableLoader oftype SQLiteLoader { - // The name of the table - table: "gdpPerCapita"; - // The name of the file - file: "data/country-stats.sqlite"; + table: "gdpPerCapita"; // Table name in the SQLite database + file: "country-stats.sqlite"; // SQLite database file } - + // 10. Value type to enforce positive decimal values valuetype PositiveDecimal oftype decimal { - // The value of the column constraints: [ - // only allow column values that start with "Vogelsang" - OnlyPositiveDecimal + OnlyPositiveDecimal // Constraint: Values must be > 0 ]; } + // 11. Value type to enforce decimal values between 0 and 1 valuetype BetweenZeroAndOne oftype decimal { - // The value of the column constraints: [ - // only allow column values that are between 0 and 1 - BetweenZeroAndOneConstraint + BetweenZeroAndOneConstraint // Constraint: 0 <= value <= 1 ]; } + // 12. Constraints definitions constraint OnlyPositiveDecimal on decimal: value > 0; constraint BetweenZeroAndOneConstraint on decimal: value >= 0 and value <= 1; - + // Pipeline connections WorldBankHttpExtractor -> WorldBankTextXLSXInterpreter; @@ -117,10 +85,8 @@ pipeline WorldBank{ -> BondIssuanceTableInterpreter -> BondIssuanceTableLoader; + // GDP per Capita pipeline NameHeaderWriter -> GDPTableInterpreter -> GDPTableLoader; - - } - From 2f5ba0e5a8a2f31799ccceea080b029f415b36c1 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Wed, 27 Nov 2024 22:56:59 +0100 Subject: [PATCH 15/29] report pdf --- project/data-report.pdf | Bin 0 -> 41587 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 project/data-report.pdf diff --git a/project/data-report.pdf b/project/data-report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..58a9e5426a4e16698f54c2c5cfbb7324f4b031f2 GIT binary patch literal 41587 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 G>i+?->ac?V literal 0 HcmV?d00001 From 6fd741dd12da3429fbaae308dc1b8743fafb8df0 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Sun, 1 Dec 2024 13:50:15 +0100 Subject: [PATCH 16/29] exercise 4 first commit --- exercises/exercise4.jv | 92 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 exercises/exercise4.jv diff --git a/exercises/exercise4.jv b/exercises/exercise4.jv new file mode 100644 index 000000000..b5d89066b --- /dev/null +++ b/exercises/exercise4.jv @@ -0,0 +1,92 @@ +pipeline MobiliThek{ + + block DataExtractor oftype HttpExtractor { + url : "https://www.mowesta.com/data/measure/mowesta-dataset-20221107.zip"; + } + + block DataInterpreter oftype ArchiveInterpreter { + archiveType: "zip"; + } + + block FilePicker oftype FilePicker { + path: "/data.csv"; + } + + block TextFileInterpreter oftype TextFileInterpreter { } + + block CSVInterpreter oftype CSVInterpreter { + delimiter: ';'; + } + + block CellRangeSelector oftype CellRangeSelector { + select: range A1:J*; + } + + block DeleteSomeColumns oftype ColumnDeleter { + delete: [column F, column G, column H, column I]; + } + + block RenameColumns oftype CellWriter { + at: range A1:F1; + write: ["id", "producer", "model", "month", "temperature", "battery_temperature"]; + } + + block TempMeasurementTableInterpreter oftype TableInterpreter { + header: true; + columns: [ + "id" oftype integer, + "producer" oftype text, + "model" oftype text, + "month" oftype integer, + "temperature" oftype integer, + "battery_temperature" oftype integer, + ]; + } + + block DataLoader oftype SQLiteLoader { + table: "temperatures"; + file: "temperatures.sqlite"; + } + + DataExtractor + -> DataInterpreter + -> FilePicker + -> TextFileInterpreter + -> CSVInterpreter + -> CellRangeSelector + -> DeleteSomeColumns + -> RenameColumns + -> TempMeasurementTableInterpreter + -> DataLoader; +} + + +// block DeleteSomeColumns oftype ColumnDeleter { +// delete: [column F, column G, column H, column I]; +// } + + +// block RenameColumns oftype CellWriter { +// at: range A1:F1; +// write: ["id", "producer", "model", "month", "temperature", "battery_temperature"]; +// } + +// block TempMeasurementTableInterpreter oftype TableInterpreter { +// header: true; +// columns: [ +// "id" oftype integer, +// "producer" oftype text, +// "model" oftype text, +// "month" oftype integer, +// "temperature" oftype integer, +// "battery_temperature" oftype integer, +// ]; +// } + +// block TempMeasurementLoader oftype SQLiteLoader { +// table: "temperatures"; +// file: "temperatures.sqlite"; +// } + + +// } \ No newline at end of file From 917bd69bf903d3ca71497a6020ff3f4d2ccfd8d4 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Wed, 4 Dec 2024 21:53:11 +0100 Subject: [PATCH 17/29] fixing data transform --- exercises/exercise4.jv | 88 +++++++++++++++++++++++------------------ temperatures.sqlite | Bin 0 -> 233472 bytes 2 files changed, 49 insertions(+), 39 deletions(-) create mode 100644 temperatures.sqlite diff --git a/exercises/exercise4.jv b/exercises/exercise4.jv index b5d89066b..e3f03e642 100644 --- a/exercises/exercise4.jv +++ b/exercises/exercise4.jv @@ -14,16 +14,33 @@ pipeline MobiliThek{ block TextFileInterpreter oftype TextFileInterpreter { } + block CSVInterpreter oftype CSVInterpreter { delimiter: ';'; } - block CellRangeSelector oftype CellRangeSelector { - select: range A1:J*; - } + // block CellRangeSelector oftype CellRangeSelector { + // select: range A1:J4873; + // } block DeleteSomeColumns oftype ColumnDeleter { - delete: [column F, column G, column H, column I]; + delete: [column F, column G, column H, column I, column K, column L, column M, column N, column O, column P, column Q, + column R, column S, column T, column U, column V, column W, column X, column Y, column Z, + column AA, column AB, column AC, column AD, column AE, column AF, column AG, column AH, column AI, + column AJ, column AK, column AL, column AM, column AN, column AO, column AP, column AQ, column AR, + column AS, column AT, column AU, column AV, column AW, column AX, column AY, column AZ, column BA, + column BB, column BC, column BD, column BE, column BF, column BG, column BH, column BI, column BJ, + column BK, column BL, column BM, column BN, column BO, column BP, column BQ, column BR, column BS, + column BT, column BU, column BV, column BW, column BX, column BY, column BZ, column CA, column CB, + column CC, column CD, column CE, column CF, column CG, column CH, column CI, column CJ, column CK, + column CL, column CM, column CN, column CO, column CP, column CQ, column CR, column CS, column CT, + column CU, column CV, column CW, column CX, column CY, column CZ, column DA, column DB, column DC, + column DD, column DE, column DF, column DG, column DH, column DI, column DJ, column DK, column DL, + column DM, column DN, column DO, column DP, column DQ, column DR, column DS, column DT, column DU, + column DV, column DW, column DX, column DY, column DZ, column EA, column EB, column EC, column ED, + column EE, column EF, column EG, column EH, column EI, column EJ, column EK, column EL, column EM, + column EN, column EO, column EP, column EQ, column ER, column ES, column ET, column EU, column EV, + column EW, column EX, column EY]; } block RenameColumns oftype CellWriter { @@ -38,11 +55,33 @@ pipeline MobiliThek{ "producer" oftype text, "model" oftype text, "month" oftype integer, - "temperature" oftype integer, - "battery_temperature" oftype integer, + "temperature" oftype decimal, + "battery_temperature" oftype decimal, ]; } + block TempMeasurementTransformer oftype TableTransformer { + inputColumns: [ + "temperature", + ]; + outputColumn: "temperature"; + uses: FahrenheitUnit; + } + + block TempMeausurementBatteryTransformer oftype TableTransformer { + inputColumns: [ + "battery_temperature", + ]; + outputColumn: "battery_temperature"; + uses: FahrenheitUnit; + } + + transform FahrenheitUnit { + from Celsius oftype decimal; + to Fahrenheit oftype decimal; + Fahrenheit: Celsius * 9/5 + 32; + } + block DataLoader oftype SQLiteLoader { table: "temperatures"; file: "temperatures.sqlite"; @@ -53,40 +92,11 @@ pipeline MobiliThek{ -> FilePicker -> TextFileInterpreter -> CSVInterpreter - -> CellRangeSelector + // -> CommaSeparator -> DeleteSomeColumns -> RenameColumns -> TempMeasurementTableInterpreter + -> TempMeasurementTransformer + -> TempMeausurementBatteryTransformer -> DataLoader; -} - - -// block DeleteSomeColumns oftype ColumnDeleter { -// delete: [column F, column G, column H, column I]; -// } - - -// block RenameColumns oftype CellWriter { -// at: range A1:F1; -// write: ["id", "producer", "model", "month", "temperature", "battery_temperature"]; -// } - -// block TempMeasurementTableInterpreter oftype TableInterpreter { -// header: true; -// columns: [ -// "id" oftype integer, -// "producer" oftype text, -// "model" oftype text, -// "month" oftype integer, -// "temperature" oftype integer, -// "battery_temperature" oftype integer, -// ]; -// } - -// block TempMeasurementLoader oftype SQLiteLoader { -// table: "temperatures"; -// file: "temperatures.sqlite"; -// } - - -// } \ No newline at end of file +} \ No newline at end of file diff --git a/temperatures.sqlite b/temperatures.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..bf386e3bf0d98a31b519f298e852efc03e7dff89 GIT binary patch literal 233472 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ℑfM2XM7&)gTyq{yjov2IOki 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 literal 0 HcmV?d00001 From 6bc38c34961fa8fb77106fcd61b7eb2ffc77c539 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Thu, 5 Dec 2024 01:11:41 +0100 Subject: [PATCH 18/29] test cases --- project/.__init__.py | 0 .../__pycache__/prepare_data.cpython-311.pyc | Bin 0 -> 8880 bytes project/__pycache__/run_tests.cpython-311.pyc | Bin 0 -> 4526 bytes project/pipeline.sh | 2 +- project/run_tests.py | 70 ++++++++++++++++++ project/tests.sh | 1 + temperatures.sqlite | Bin 233472 -> 0 bytes 7 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 project/.__init__.py create mode 100644 project/__pycache__/prepare_data.cpython-311.pyc create mode 100644 project/__pycache__/run_tests.cpython-311.pyc create mode 100644 project/run_tests.py create mode 100644 project/tests.sh delete mode 100644 temperatures.sqlite diff --git a/project/.__init__.py b/project/.__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/project/__pycache__/prepare_data.cpython-311.pyc b/project/__pycache__/prepare_data.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..234995a1127e4897588d6b9943d386d30aedeba5 GIT binary patch literal 8880 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ℑfM2XM7&)gTyq{yjov2IOki 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 From ae92cb8f192202073d98eb401a5262dbc579bed4 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Thu, 5 Dec 2024 08:09:35 +0100 Subject: [PATCH 19/29] rounded off temperature, validated month --- exercises/exercise4.jv | 13 +++++++++++-- temperatures.sqlite | Bin 0 -> 233472 bytes 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 temperatures.sqlite diff --git a/exercises/exercise4.jv b/exercises/exercise4.jv index e3f03e642..34000156c 100644 --- a/exercises/exercise4.jv +++ b/exercises/exercise4.jv @@ -54,7 +54,7 @@ pipeline MobiliThek{ "id" oftype integer, "producer" oftype text, "model" oftype text, - "month" oftype integer, + "month" oftype BetweenOneAndTwelve, "temperature" oftype decimal, "battery_temperature" oftype decimal, ]; @@ -79,9 +79,18 @@ pipeline MobiliThek{ transform FahrenheitUnit { from Celsius oftype decimal; to Fahrenheit oftype decimal; - Fahrenheit: Celsius * 9/5 + 32; + Fahrenheit: round(Celsius * 9/5 + 32); } + valuetype BetweenOneAndTwelve oftype integer { + constraints: [ + BetweenOneAndTwelveConstraint + ]; + } + + constraint BetweenOneAndTwelveConstraint on integer: value >= 1 and value <= 12; + + block DataLoader oftype SQLiteLoader { table: "temperatures"; file: "temperatures.sqlite"; diff --git a/temperatures.sqlite b/temperatures.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..ef4a2fe62fe1c6f613553b0b02a9376dc3bd854f GIT binary patch literal 233472 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 leY1BK(V0;5 Date: Thu, 5 Dec 2024 08:28:29 +0100 Subject: [PATCH 20/29] data unit fixed --- .gitignore | 4 +++- exercises/exercise4.jv | 2 +- project/__pycache__/run_tests.cpython-311.pyc | Bin 4526 -> 4561 bytes project/run_tests.py | 3 ++- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index b0d1d6bcd..67978b0a3 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,6 @@ /data/* !/data/.gitkeep .mypy_cache/ -temp_dir/ \ No newline at end of file +temp_dir/ +__pycache__/ +*.pyc \ No newline at end of file diff --git a/exercises/exercise4.jv b/exercises/exercise4.jv index 34000156c..579294ee7 100644 --- a/exercises/exercise4.jv +++ b/exercises/exercise4.jv @@ -79,7 +79,7 @@ pipeline MobiliThek{ transform FahrenheitUnit { from Celsius oftype decimal; to Fahrenheit oftype decimal; - Fahrenheit: round(Celsius * 9/5 + 32); + Fahrenheit: Celsius * 9/5 + 32; } valuetype BetweenOneAndTwelve oftype integer { diff --git a/project/__pycache__/run_tests.cpython-311.pyc b/project/__pycache__/run_tests.cpython-311.pyc index 7f8d3ea5d39701fb6991c1795c8a7b2f170f4830..248cdc77de431c98ae65545a6e74b3962121ec9a 100644 GIT binary patch delta 441 zcmZ3dd{LQqIWI340}wC<2c~yy}tlz?>LninJ2&J6=h-es}h@Bz$(U5#Z_FGlUb5#rLV6)xs6rV zkflfnXv{64-2CM1_~fG0#FEtb)V%b}ywqFlDM|4Ki6t4g*dPMMAonOtzQr14>R`VssD4pU^NOHm2ipw}sp}lNmpF7U=(+4L2NFPZk;C;0hwB9n*UeFE8cd8z zlbbox809y=;>cp;Py(8w$y}r|IfiR1qyA0 AqW}N^ delta 361 zcmcbpyiS>SIWI340}!;m3rNr0$a|56pBcyl;m>72Vmia*k1W#6Of`&?Kk$k%r7%v` zWz}S4nw-ck%E#narBGa$lUb5#rLV6)xqww{@+4MWM&`)}SfzN_QuER?^HPgJCQbgp z8l`3fWHc~56;!_{sCh+DvxDshhtzcr-Af$07xV%yas*!C2)w`%xVe^1gNadb@-mJz zM!C(roLP($$cv>TNdV&SqpZn7oi@9;5kW2i{je#oBzSjLwrM@@0w2 z0@W62fCxPhVGbg!CJXQii!9hY0Qu@%VgLXD diff --git a/project/run_tests.py b/project/run_tests.py index 5ce799474..452aaba83 100644 --- a/project/run_tests.py +++ b/project/run_tests.py @@ -23,8 +23,9 @@ def test_create_temp_directory(self, mock_makedirs): @patch("sqlalchemy.create_engine") def test_create_database_engine(self, mock_create_engine): + db_path = "data/world_data.sqlite" engine = create_database_engine() - mock_create_engine.assert_called_with("sqlite:///data/world_data.sqlite") + mock_create_engine.assert_called_with(f"sqlite:///{db_path}") self.assertIsNotNone(engine) @patch("requests.get") From 382dc6abe4c57c58369eb27defee03a5b0f73470 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Thu, 5 Dec 2024 09:55:30 +0100 Subject: [PATCH 21/29] test cases fixed --- .gitignore | 2 +- exercises/exercise5.jv | 0 .../__pycache__/prepare_data.cpython-311.pyc | Bin 8880 -> 9062 bytes project/__pycache__/run_tests.cpython-311.pyc | Bin 4561 -> 4715 bytes project/prepare_data.py | 81 ++++++++++++------ project/run_tests.py | 6 +- project/tests.sh | 0 7 files changed, 59 insertions(+), 30 deletions(-) create mode 100644 exercises/exercise5.jv mode change 100644 => 100755 project/tests.sh diff --git a/.gitignore b/.gitignore index 67978b0a3..bea670e1a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,5 @@ !/data/.gitkeep .mypy_cache/ temp_dir/ -__pycache__/ +project/__pycache__/ *.pyc \ No newline at end of file diff --git a/exercises/exercise5.jv b/exercises/exercise5.jv new file mode 100644 index 000000000..e69de29bb diff --git a/project/__pycache__/prepare_data.cpython-311.pyc b/project/__pycache__/prepare_data.cpython-311.pyc index 234995a1127e4897588d6b9943d386d30aedeba5..8b6946d4cad28adbf91f1287772a93e8cab02ff2 100644 GIT binary patch delta 1078 zcmY+DOK1~87{_O_o6SCxY&MVPVY*eSO>0D>2Z>3wq*_~1e4v(kF|zT2TA|HBrO|+b zRRjxDBsY7IDi*YwgZ1F0m+HwbERsvG7Zn9z3RO{iaCU1FJIwxe=9~Zb|GwR2r+0ta zBR!HN9*}YE_@OgX&!wyl^5~N72XvQDQ?Dr4f>g&_xDkDIT!g-IKYNRUiSmN*({?OP zl7{ya6afY{57R)!>3Y27S?Wn@#;$jC8XcXOBIlJ%_gr!|`R25qIcj8%uEbc*x;JuB z*!68-muY?IpEd0#)-^1MQbiE&rS7EWn>Ok~+z{f}VIDGI>$aEeFWP60>4|P5(QQR5 zrhP5dGC>F3mrw36?ei=4bglEM;u}wv&g#krL)l<8wP-%ol8Is;W@e~XH7wQ`@LXS`@ zd9_%2r!Xo+{_Cgsghu1*`sgW4;p}t5f6fDgbkL=XAU@aR=Sm73+ z@vB?bgodUdhdEcdI8=?#b}S@9P*ITLje=p(YxqF<~CUlXV8`AgsVz(^L$FD(*~WM zr_*Sv`DRSCr!XMUS#^{fOIN*Z711|Vm^eEvE>bohPd=rOALX#Sd_;W!uQL>MW3U>c z4Q?Sn$|~?7=)s_lBm>hJ)Zr1}dJO7_Y=S-v>No`%*ab~_ogNCt&9VWDaV)mO00wmo JpwYE$e*wc@53B$H delta 894 zcmZvaT}V@57{}jdpJ$u(kSKsdUxZaOCpv>Qopx(I@Ekp)H2d$wE{Jv`@k9vvTLMzm#em$q!q(nb1* z>SVXOwWviy6LXosqD34^M+#1P* z^mfTis;`KmwYl?>wY1}S1&}P|og)BK_@}EM0=Ul|u_jb=D61x`{)vP-p}`yOAZYQ9 z+fBabFH))va&Cz5oQk`7SwUyCevnh8rBcsveg*@{ZEhjth zz5*)N=1XOCojj2*OH>}@d@T@R03s|wgw13D{zwJ&i>w+~ST#N{v9hXuU;q*ynHktL z;UavKJNa+%+~SCj&rQtCi;ve7o}4ORz-Iz9;Fd^1QGQlxa*5vL*#h=@wjd!Ekg6gF zkn!RmLKH~+;;_lhPbtkwwJY)jav6cR_~qok0<*#`7 z89gU2U^Ci$mra9-QE4(8XBwmY=3LG!Mh+#QCQardmC5(HwleB(p30rg$Y?m3k#`=W z#pDINuYiiX`BE8OCV%A15|sn0Ez$%L`XIsrL|9KQ;Ez;Ly~wI|g;nhX6AP>A2L>SV zk(q%_9WKH%`6d4?CQZS~=LHPdjDgy2@l56wv{$wVnIH}#M1jOF4x8Nkl+v73yCOFr jml24I&rGfooMmOssPlmVlb9iKMN;b{Na70?S+KzXQ!rgg diff --git a/project/prepare_data.py b/project/prepare_data.py index 178390e3c..83b2a711b 100644 --- a/project/prepare_data.py +++ b/project/prepare_data.py @@ -6,15 +6,18 @@ import shutil from sqlalchemy import create_engine, Table, Column, String, Integer, Float, MetaData + def create_temp_directory(path="project/temp_dir"): """Creates a temporary directory for storing extracted files.""" os.makedirs(path, mode=0o777, exist_ok=True) return path + def create_database_engine(db_path="data/world_data.sqlite"): """Creates and returns an SQLAlchemy engine.""" return create_engine(f"sqlite:///{db_path}") + def create_tables(metadata, year_columns): """Defines and returns the table structures.""" tables = { @@ -27,7 +30,7 @@ def create_tables(metadata, year_columns): Column("IndicatorCode", String), Column("SourceNote", String), Column("SourceOrganization", String), - *[Column(year, Float) for year in year_columns], + *[Column(year, Float) for year in year_columns], ), "NAC": Table( "NAC", @@ -38,11 +41,12 @@ def create_tables(metadata, year_columns): Column("IndicatorCode", String), Column("SourceNote", String), Column("SourceOrganization", String), - *[Column(year, Float) for year in year_columns], + *[Column(year, Float) for year in year_columns], ), } return tables + def download_and_extract_data(urls, temp_dir): """Downloads and extracts CSV files from the given URLs.""" for region, url in urls.items(): @@ -50,23 +54,35 @@ def download_and_extract_data(urls, temp_dir): with zipfile.ZipFile(io.BytesIO(response.content)) as zip_ref: zip_ref.extractall(temp_dir) print(f"Downloaded and extracted data for {region}") - + + def load_main_and_metadata_files(temp_dir): """Loads main and metadata files from the temporary directory.""" - main_files = [f for f in os.listdir(temp_dir) if f.startswith("API") and f.endswith(".csv")] - metadata_files = [f for f in os.listdir(temp_dir) if f.startswith("Metadata_Indicator") and f.endswith(".csv")] + main_files = [ + f for f in os.listdir(temp_dir) if f.startswith("API") and f.endswith(".csv") + ] + metadata_files = [ + f + for f in os.listdir(temp_dir) + if f.startswith("Metadata_Indicator") and f.endswith(".csv") + ] metadata_files = list(reversed(metadata_files)) return main_files, metadata_files + def clean_and_merge_data(main_file, metadata_file, temp_dir, year_columns): """Cleans and merges the main data with metadata.""" # Load main data - main_df = pd.read_csv(os.path.join(temp_dir, main_file), encoding="utf-8-sig", skiprows=4) + main_df = pd.read_csv( + os.path.join(temp_dir, main_file), encoding="utf-8-sig", skiprows=4 + ) main_df.fillna(0, inplace=True) main_df = main_df.loc[:, ~main_df.columns.str.contains("^Unnamed")] # Load metadata - metadata_df = pd.read_csv(os.path.join(temp_dir, metadata_file), encoding="utf-8-sig") + metadata_df = pd.read_csv( + os.path.join(temp_dir, metadata_file), encoding="utf-8-sig" + ) metadata_df = metadata_df.loc[:, ~metadata_df.columns.str.contains("^Unnamed")] metadata_df.rename(columns={"INDICATOR_CODE": "Indicator Code"}, inplace=True) metadata_df = metadata_df.drop(columns=["INDICATOR_NAME"]) @@ -86,20 +102,23 @@ def clean_and_merge_data(main_file, metadata_file, temp_dir, year_columns): }, inplace=True, ) - + # Rearrange columns - merged_df = merged_df[[ - "CountryName", - "CountryCode", - "IndicatorName", - "IndicatorCode", - "SourceNote", - "SourceOrganization", - *year_columns, - ]] - + merged_df = merged_df[ + [ + "CountryName", + "CountryCode", + "IndicatorName", + "IndicatorCode", + "SourceNote", + "SourceOrganization", + *year_columns, + ] + ] + return merged_df + def save_to_database(merged_df, table_name, tables, engine): """Saves the merged data to the appropriate SQLite table.""" if table_name in tables: @@ -108,51 +127,57 @@ def save_to_database(merged_df, table_name, tables, engine): else: print(f"Table '{table_name}' not found in the database") + def clean_up(temp_dir): """Removes the temporary directory.""" shutil.rmtree(temp_dir) print("Cleaned up temporary directory.") + def main(): """Main function that orchestrates the entire process.""" urls = { "north_america": "https://api.worldbank.org/v2/en/country/NAC?downloadformat=csv", "latin_america_caribbean": "https://api.worldbank.org/v2/en/country/LCN?downloadformat=csv", } - + # Create the temp directory and database engine temp_dir = create_temp_directory() engine = create_database_engine() - + print("Created temporary directory and database engine.") + # Define year columns (1960 to 2023) year_columns = [str(year) for year in range(1960, 2024)] - + # Create tables if they don't exist metadata = MetaData() tables = create_tables(metadata, year_columns) metadata.create_all(engine) - + # Download and extract data download_and_extract_data(urls, temp_dir) - + # Load main and metadata files main_files, metadata_files = load_main_and_metadata_files(temp_dir) - + # Process each file pair for main_file, metadata_file in zip(main_files, metadata_files): - merged_df = clean_and_merge_data(main_file, metadata_file, temp_dir, year_columns) - + merged_df = clean_and_merge_data( + main_file, metadata_file, temp_dir, year_columns + ) + # Determine the table name based on the region # table_name = main_file.split("_")[1].split(".")[0].title().replace(" ", "_") # table_name = region.replace("_", " ").title().replace(" ", "_") # Determine the region and map to table name region = main_file.split("_")[1].split(".")[0] - + # Save the merged data to the database save_to_database(merged_df, region, tables, engine) - + # Clean up the temporary directory clean_up(temp_dir) + if __name__ == "__main__": main() diff --git a/project/run_tests.py b/project/run_tests.py index 452aaba83..8ac2c1828 100644 --- a/project/run_tests.py +++ b/project/run_tests.py @@ -21,7 +21,7 @@ def test_create_temp_directory(self, mock_makedirs): self.assertTrue(mock_makedirs.called) self.assertEqual(path, "project/temp_dir") - @patch("sqlalchemy.create_engine") + @patch("prepare_data.create_engine") def test_create_database_engine(self, mock_create_engine): db_path = "data/world_data.sqlite" engine = create_database_engine() @@ -69,3 +69,7 @@ def test_save_to_database(self, mock_to_sql): def test_clean_up(self, mock_rmtree): clean_up("temp_dir") self.assertTrue(mock_rmtree.called) + + +if __name__ == "__main__": + unittest.main() \ No newline at end of file diff --git a/project/tests.sh b/project/tests.sh old mode 100644 new mode 100755 From c9880835a8d3735db5056e7a496c6a6616a57a94 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Thu, 5 Dec 2024 10:13:59 +0100 Subject: [PATCH 22/29] exercise 5 initial commit --- .gitignore | 3 +- exercises/exercise5.jv | 66 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index bea670e1a..cc52fe553 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ .mypy_cache/ temp_dir/ project/__pycache__/ -*.pyc \ No newline at end of file +*.pyc +*.sqlite \ No newline at end of file diff --git a/exercises/exercise5.jv b/exercises/exercise5.jv index e69de29bb..7d18e8445 100644 --- a/exercises/exercise5.jv +++ b/exercises/exercise5.jv @@ -0,0 +1,66 @@ +pipeline GTFS { + + block GTFSDataExtractor oftype HttpExtractor{ + url: "https://gtfs.rhoenenergie-bus.de/GTFS.zip"; + } + + block GTFSDataInterpreter oftype ArchiveInterpreter{ + archiveType: "zip"; + } + + block GTFSFilePicker oftype FilePicker{ + path: "/stops.txt"; + } + + block GTFSTextFileInterpreter oftype TextFileInterpreter{} + + + block GTFSCSVInterpreter oftype CSVInterpreter{ + enclosing: '"'; + enclosingEscape: '"'; + } + + block GTFSTableInterpreter oftype TableInterpreter{ + header: true; + columns: [ + "stop_id" oftype integer, + "stop_name" oftype text, + "stop_lat" oftype BetweenPlusMinusNinety, + "stop_lon" oftype BetweenPlusMinusNinety, + "zone_id" oftype ValidZone + ]; + } + + valuetype BetweenPlusMinusNinety oftype decimal{ + constraints: [ + BetweenPlusMinusNinetyConstraint + ]; + } + constraint BetweenPlusMinusNinetyConstraint on decimal: value >= -90 and value <= 90; + + + valuetype ValidZone oftype text{ + constraints: [ + ValidZoneConstraint + ]; + } + + constraint ValidZoneConstraint oftype RangeConstraint{ + lowerBound: 2001; + upperBound: 2001; + } + + block GTFSDataLoader oftype SQLiteLoader{ + table: "stops"; + file: "gtfs.sqlite"; + } + + + GTFSDataExtractor + -> GTFSDataInterpreter + -> GTFSFilePicker + -> GTFSTextFileInterpreter + -> GTFSCSVInterpreter + -> GTFSTableInterpreter + -> GTFSDataLoader; +} \ No newline at end of file From 5d6db9452d37aa080f9cc52ff944d357d5e827b6 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Thu, 5 Dec 2024 12:01:40 +0100 Subject: [PATCH 23/29] exercise 5 adding validation --- exercises/exercise5.jv | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/exercises/exercise5.jv b/exercises/exercise5.jv index 7d18e8445..0fc306b8a 100644 --- a/exercises/exercise5.jv +++ b/exercises/exercise5.jv @@ -27,27 +27,41 @@ pipeline GTFS { "stop_name" oftype text, "stop_lat" oftype BetweenPlusMinusNinety, "stop_lon" oftype BetweenPlusMinusNinety, - "zone_id" oftype ValidZone + "zone_id" oftype ValidZone, ]; } + valuetype GermanUmlauts oftype text{ + constraints: [ + GermanUmlautsConstraint + ]; + } + + constraint GermanUmlautsConstraint on text: value matches /^[A-Za-z0-9äöüÄÖÜß\s\-\.(),]*$/; ///^(?=.*[äöüÄÖÜß])[A-Za-z0-9äöüÄÖÜß]*$/; + valuetype BetweenPlusMinusNinety oftype decimal{ constraints: [ BetweenPlusMinusNinetyConstraint ]; } - constraint BetweenPlusMinusNinetyConstraint on decimal: value >= -90 and value <= 90; + constraint BetweenPlusMinusNinetyConstraint oftype RangeConstraint{ + lowerBound: -90; + lowerBoundInclusive: true; + upperBound: 90; + upperBoundInclusive: true; + } - valuetype ValidZone oftype text{ + valuetype ValidZone oftype integer{ constraints: [ ValidZoneConstraint ]; } + constraint ValidZoneConstraint oftype RangeConstraint{ - lowerBound: 2001; - upperBound: 2001; + lowerBound: 1925; + // upperBound: 1925; } block GTFSDataLoader oftype SQLiteLoader{ From cd12db847a4fb426bea7816945b100fb547f3285 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Wed, 11 Dec 2024 22:49:34 +0100 Subject: [PATCH 24/29] workflow and requirements added --- .github/workflows/project_feedback.yml | 31 +++++++++++++++++++++++++ project/version_check.py | 11 +++++++++ requirements.txt | 7 ++++++ temperatures.sqlite | Bin 233472 -> 0 bytes 4 files changed, 49 insertions(+) create mode 100644 .github/workflows/project_feedback.yml create mode 100644 project/version_check.py create mode 100644 requirements.txt delete mode 100644 temperatures.sqlite diff --git a/.github/workflows/project_feedback.yml b/.github/workflows/project_feedback.yml new file mode 100644 index 000000000..bfa1ec4f0 --- /dev/null +++ b/.github/workflows/project_feedback.yml @@ -0,0 +1,31 @@ +name: Run Tests +run-name: ${{ github.actor }} is running tests + +on: + push: + branches: + - main + +jobs: + test: + runs-on: ubuntu-20.04 + + steps: + - uses: actions/checkout@v2 + + - name: Set up Python 3.11 + uses: actions/setup-python@v2 + with: + python-version: 3.11 + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + + # project and exercise feedbacks + - name: Make test executable + run: chmod +x /home/runner/work/made-template/made-template/project/tests.sh + + - name: Run project tests + run: /home/runner/work/made-template/made-template/project/tests.sh \ No newline at end of file diff --git a/project/version_check.py b/project/version_check.py new file mode 100644 index 000000000..723123ea5 --- /dev/null +++ b/project/version_check.py @@ -0,0 +1,11 @@ +import pkg_resources + +def check_versions(package_list): + installed_packages = {pkg.key: pkg.version for pkg in pkg_resources.working_set} + for package in package_list: + version = installed_packages.get(package.lower(), "Not installed") + print(f"{package}: {version}") + +# Replace these with the package names you want to check +selected_packages = ["zipfile", "shutil", "numpy", "pandas", "scikit-learn", "matplotlib", "sqlalchemy"] +check_versions(selected_packages) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..0ac2d2f1e --- /dev/null +++ b/requirements.txt @@ -0,0 +1,7 @@ +numpy==1.26.4 +pandas==1.5.3 +scikit-learn==1.2.2 +matplotlib==3.8.0 +sqlalchemy==2.0.25 +seaborn +pytest \ No newline at end of file diff --git a/temperatures.sqlite b/temperatures.sqlite deleted file mode 100644 index ef4a2fe62fe1c6f613553b0b02a9376dc3bd854f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233472 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 leY1BK(V0;5 Date: Wed, 11 Dec 2024 22:51:07 +0100 Subject: [PATCH 25/29] requirements updated --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 0ac2d2f1e..b36213ddf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,4 +4,5 @@ scikit-learn==1.2.2 matplotlib==3.8.0 sqlalchemy==2.0.25 seaborn -pytest \ No newline at end of file +pytest +requests \ No newline at end of file From 5d143db57df06d26da37adfb84da7e4db580c227 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Tue, 17 Dec 2024 21:59:59 +0100 Subject: [PATCH 26/29] minor changes --- exercises/exercise5.jv | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/exercises/exercise5.jv b/exercises/exercise5.jv index 0fc306b8a..cf8031d1e 100644 --- a/exercises/exercise5.jv +++ b/exercises/exercise5.jv @@ -36,8 +36,9 @@ pipeline GTFS { GermanUmlautsConstraint ]; } - - constraint GermanUmlautsConstraint on text: value matches /^[A-Za-z0-9äöüÄÖÜß\s\-\.(),]*$/; ///^(?=.*[äöüÄÖÜß])[A-Za-z0-9äöüÄÖÜß]*$/; + // /^[A-Za-z0-9äöüÄÖÜß\s\-\.(),]*$/; + // /^(?=.*[äöüÄÖÜß])[A-Za-z0-9äöüÄÖÜß]*$/; + constraint GermanUmlautsConstraint on text: value matches /^[A-Za-z0-9äöüÄÖÜß\s\-\.(),]*$/; valuetype BetweenPlusMinusNinety oftype decimal{ constraints: [ From 7fd19bbace1a7a862620d0510efa3cfb3f954590 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Tue, 17 Dec 2024 22:15:22 +0100 Subject: [PATCH 27/29] minor changes --- exercises/exercise5.jv | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/exercises/exercise5.jv b/exercises/exercise5.jv index cf8031d1e..b79682ed7 100644 --- a/exercises/exercise5.jv +++ b/exercises/exercise5.jv @@ -60,10 +60,12 @@ pipeline GTFS { } - constraint ValidZoneConstraint oftype RangeConstraint{ - lowerBound: 1925; - // upperBound: 1925; - } + // constraint ValidZoneConstraint oftype RangeConstraint{ + // lowerBound: 1925; + // // upperBound: 1925; + // } + + constraint ValidZoneConstraint on integer: value >= 1925 ; block GTFSDataLoader oftype SQLiteLoader{ table: "stops"; From 5d185fc0c9e9f303c8794f49f4c35fad06225d06 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Tue, 17 Dec 2024 22:37:25 +0100 Subject: [PATCH 28/29] minor changes --- exercises/exercise5.jv | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/exercises/exercise5.jv b/exercises/exercise5.jv index b79682ed7..e86a24074 100644 --- a/exercises/exercise5.jv +++ b/exercises/exercise5.jv @@ -12,7 +12,9 @@ pipeline GTFS { path: "/stops.txt"; } - block GTFSTextFileInterpreter oftype TextFileInterpreter{} + block GTFSTextFileInterpreter oftype TextFileInterpreter{ + encoding: "utf8"; + } block GTFSCSVInterpreter oftype CSVInterpreter{ @@ -31,15 +33,6 @@ pipeline GTFS { ]; } - valuetype GermanUmlauts oftype text{ - constraints: [ - GermanUmlautsConstraint - ]; - } - // /^[A-Za-z0-9äöüÄÖÜß\s\-\.(),]*$/; - // /^(?=.*[äöüÄÖÜß])[A-Za-z0-9äöüÄÖÜß]*$/; - constraint GermanUmlautsConstraint on text: value matches /^[A-Za-z0-9äöüÄÖÜß\s\-\.(),]*$/; - valuetype BetweenPlusMinusNinety oftype decimal{ constraints: [ BetweenPlusMinusNinetyConstraint From 2510641bea8ba6d016b5b3ba448901ecd7b32845 Mon Sep 17 00:00:00 2001 From: crazz-zaac Date: Thu, 19 Dec 2024 09:44:49 +0100 Subject: [PATCH 29/29] minor changes --- exercises/exercise5.jv | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/exercises/exercise5.jv b/exercises/exercise5.jv index e86a24074..73335fbec 100644 --- a/exercises/exercise5.jv +++ b/exercises/exercise5.jv @@ -33,6 +33,15 @@ pipeline GTFS { ]; } + // valuetype GermanUmlauts oftype text{ + // constraints: [ + // GermanUmlautsConstraint + // ]; + // } + // // /^[A-Za-z0-9äöüÄÖÜß\s\-\.(),]*$/; + // // /^(?=.*[äöüÄÖÜß])[A-Za-z0-9äöüÄÖÜß]*$/; + // constraint GermanUmlautsConstraint on text: value matches /^[A-Za-z0-9äöüÄÖÜß\s\-\.(),]*$/; + valuetype BetweenPlusMinusNinety oftype decimal{ constraints: [ BetweenPlusMinusNinetyConstraint @@ -58,7 +67,7 @@ pipeline GTFS { // // upperBound: 1925; // } - constraint ValidZoneConstraint on integer: value >= 1925 ; + constraint ValidZoneConstraint on integer: value == 1925 ; block GTFSDataLoader oftype SQLiteLoader{ table: "stops";