Untitled
import pandas as pd def Elabora(T1, T2, T3, COD, Anni): T1_long = T1.melt(id_vars=['Anno'], var_name='Codice', value_name='Produzione') T3_long = T3.melt(id_vars=['Country Name', 'Country Code'], var_name='Anno', value_name='Popolazione') T3_long['Anno'] = T3_long['Anno'].astype(int) T1_filtrato = T1_long[T1_long['Codice'].isin(COD) & T1_long['Anno'].isin(Anni)] T3_filtrato = T3_long[T3_long['Country Code'].isin(COD) & T3_long['Anno'].isin(Anni)] T2.columns = [int(col) if isinstance(col, int) or str(col).isdigit() else col for col in T2.columns] T2_filtrato = T2[T2['Country Code'].isin(COD)] anni_disponibili = [anno for anno in Anni if anno in T2.columns] R1 = pd.merge(T1_filtrato, T3_filtrato, left_on=['Codice', 'Anno'], right_on=['Country Code', 'Anno'], how='inner') R1['Rapporto'] = R1['Produzione'] / R1['Popolazione'] R1 = R1[['Codice', 'Anno', 'Rapporto']] indicatori = [ 'Indice di Gini', 'Percentuale ricchezza posseduta dal più ricco 10%', 'Percentuale ricchezza posseduta dal più ricco 20%', 'Percentuale ricchezza posseduta dal più povero 10%', 'Percentuale ricchezza posseduta dal più povero 20%' ] statistiche = [] for indicatore in indicatori: subset = T2_filtrato[T2_filtrato['Series Name'] == indicatore] if anni_disponibili: subset_anni = subset[anni_disponibili] massimo = subset_anni.max().max() media = subset_anni.mean().mean() statistiche.append({ 'Indicatore': indicatore, 'Massimo': massimo, 'Media': media }) R2 = pd.DataFrame(statistiche) return R1, R2 file = 'IF20250115.xlsx' T1 = pd.read_excel(file, sheet_name='Foglio1') T2 = pd.read_excel(file, sheet_name='Foglio2') T3 = pd.read_excel(file, sheet_name='Foglio3') COD = ['FRA', 'DEU', 'ITA'] Anni = [1960, 1961, 1974, 1975] R1, R2 = Elabora(T1, T2, T3, COD, Anni) R1.to_excel('R1.xlsx', index=False) R2.to_excel('R2.xlsx', index=False)
Leave a Comment