Population_FastAPI / service /population_pandas.py
Chittrarasu's picture
backend deploymemt
a90a6d5
raw
history blame
2.04 kB
import pandas as pd
# from backend.population_pandas import get_continents, get_continent_data
from logger import logger
import os
# file_path = os.path.join(os.path.dirname(__file__), "../../data/world_population.csv")
file_path = os.path.join(os.path.dirname(__file__), "../data/world_population.csv")
# file_path = os.path.abspath(file_path) # Convert to absolute path
file_path = os.path.abspath(file_path) # Convert to absolute path
try:
df = pd.read_csv(file_path)
logger.info(f"CSV file loaded successfully from: {file_path}")
except Exception as e:
logger.error(f"Error loading CSV file from {file_path}: {e}")
df = None # Prevent NameError if file loading fails
if df is not None:
# Perform the aggregations only if df is successfully loaded
continent_stats = df.groupby("Continent").agg(
Total_Countries=('Country', 'count'),
Total_Population=('Population', 'sum'),
Average_Population=('Population', 'mean'),
Total_Area=('Area', 'sum'),
max_population=('Population', 'max'),
min_population=('Population', 'min'),
Country_Max_Population=('Population', lambda x: df.loc[x.idxmax(), 'Country']),
Country_Min_Population=('Population', lambda x: df.loc[x.idxmin(), 'Country'])
).reset_index()
# Compute Population Density
continent_stats["Population_Density"] = (
continent_stats["Total_Population"] / continent_stats["Total_Area"]
)
logger.info("Data processing completed.")
def get_continents():
"""Returns a list of all continents."""
logger.info("Fetching all continents.")
return continent_stats["Continent"].tolist()
def get_continent_data(continent):
"""Returns statistics for a specific continent."""
logger.info(f"Fetching data for continent: {continent}")
result = continent_stats[continent_stats["Continent"] == continent].squeeze()
if result.empty:
logger.warning(f"No data found for continent: {continent}")
return {}
return result.to_dict()