Spaces:
Sleeping
Sleeping
| import pandas as pd | |
| import os | |
| import sys | |
| src_directory = os.path.abspath(os.path.join(os.path.dirname(__file__), "../..", "backend")) | |
| sys.path.append(src_directory) | |
| from utils import logger | |
| file_path = "./world_population.csv" | |
| def process_data(): | |
| try: | |
| logger.log("I'm going to read the csv") | |
| data_frame = pd.read_csv(file_path) | |
| logger.log("I'm reading the csv") | |
| return data_frame | |
| except Exception as e : | |
| logger.log("I couldn't read the file") | |
| return f"Unable to read the file {e}" | |
| def display_continents(dataframe): | |
| continents = dataframe['Continent'].unique() | |
| logger.log("Displaying the list of continents in the data") | |
| continents_df = pd.DataFrame(continents, columns=["Continent"]) | |
| return continents_df | |
| def display_countries(dataframe): | |
| countries = dataframe['Country'].values | |
| countries_df = pd.DataFrame(countries, columns=["Country"]) | |
| logger.log("Displaying the list of countries in the data") | |
| return countries_df | |
| def continent_stat(dataframe, attribute="Population", stat_type="highest"): | |
| try: | |
| if 'Continent' not in dataframe.columns or attribute not in dataframe.columns: | |
| return ValueError(f"Dataframe must contain 'Continent' and '{attribute}' columns.") | |
| continent_stats = dataframe.groupby('Continent')[attribute].agg(total_attribute='sum') | |
| if stat_type == "highest": | |
| continent = continent_stats.idxmax().item() | |
| value = continent_stats.max().item() | |
| logger.log(f"Displaying the continent with the highest {attribute}: {continent} with {attribute} {value}") | |
| elif stat_type == "lowest": | |
| continent = continent_stats.idxmin().item() | |
| value = continent_stats.min().item() | |
| logger.log(f"Displaying the continent with the lowest {attribute}: {continent} with {attribute} {value}") | |
| else: | |
| raise ValueError("Invalid stat_type. Use 'highest' or 'lowest'.") | |
| result = {attribute : {continent: value}} | |
| return result | |
| except Exception as e: | |
| logger.log(f"Error in continent_stat: {str(e)}") | |
| return {"error": str(e)} | |
| def country_stat(dataframe, attribute : str = "Population", stat_type :str = "highest"): | |
| try : | |
| if stat_type.lower() == "highest": | |
| index= dataframe[attribute].idxmax() | |
| elif stat_type.lower() == "lowest": | |
| index= dataframe[attribute].idxmin() | |
| country = dataframe['Country'][index] | |
| requested_attribute = dataframe[attribute][index] | |
| result = {attribute:{country:requested_attribute.item()}} | |
| logger.log(f"Displaying the country with {stat_type} {attribute} in the data") | |
| return result | |
| except Exception as e: | |
| return f"Unable to fetch the data. Error {e}" | |
| def get_continent_wise_stat(data_frame, attribute): | |
| if "Continent" in data_frame.columns and "Population" in data_frame.columns: | |
| continent_data = data_frame.groupby("Continent")[attribute].sum().reset_index() | |
| return continent_data.to_dict() | |
| def get_country_wise_stat(data_frame, country, attribute): | |
| country_df = data_frame[data_frame["Country"]== country] | |
| data = country_df[attribute].item() | |
| result = {country:{attribute:data}} | |
| return result |