Spaces:
Sleeping
Sleeping
| import csv | |
| import os | |
| def open_file(filename): | |
| try: | |
| with open(filename, 'r', newline='', encoding='utf-8') as file: | |
| csv_reader = csv.reader(file) | |
| data = list(csv_reader) | |
| return data | |
| except FileNotFoundError: | |
| print(f"File {filename} not found.") | |
| return [] | |
| except Exception as e: | |
| print(f"An error occurred: {e}") | |
| return [] | |
| def get_income_decile(years, smsv_ids, filename): | |
| income_deciles = {smsv_id: {year: {} for year in years} for smsv_id in smsv_ids} # Initialize output dict | |
| csv_data = open_file(filename) | |
| if csv_data: # Check if data is empty | |
| header = csv_data[0] # Extract header for column indexing | |
| smsv_id_index = header.index('smasvaedi') | |
| decile_index = header.index('tekjutiund') | |
| population_index = header.index('fjoldi') | |
| year_index = header.index('ar') | |
| for row in csv_data[1:]: # Skip header | |
| row_smsv_id = row[smsv_id_index] | |
| row_year = int(row[year_index]) | |
| if row_smsv_id in smsv_ids and row_year in years: | |
| decile_group = row[decile_index] | |
| population = int(row[population_index]) | |
| if row_smsv_id not in income_deciles: | |
| income_deciles[row_smsv_id] = {} | |
| if row_year not in income_deciles[row_smsv_id]: | |
| income_deciles[row_smsv_id][row_year] = {} | |
| if decile_group not in income_deciles[row_smsv_id][row_year]: | |
| income_deciles[row_smsv_id][row_year][int(decile_group)] = population | |
| return income_deciles | |
| if __name__ == '__main__': | |
| # Example usage: | |
| filename = os.path.join('given_data', 'tekjutiundir.csv') | |
| smsv_ids_to_find = ['0103', '2903', '4002'] # List of desired smsv_ids | |
| years = [2017, 2024] | |
| income_decile = get_income_decile(years, smsv_ids_to_find, filename) | |
| for smsv_id, deciles in income_decile.items(): | |
| print(f"Income Deciles for SMSV ID: {smsv_id}") | |
| for decile, population in deciles.items(): | |
| print(f" - {decile}: {population}") | |
| print() |