Aggrégation des différents jeux de données dans un unique dataframe ../data/data_aggregate_PDL.csv
Compte du nom de valeur manquantes par colonne ../data/variables_count.csv
import pandas as pd
import os
#Aggregation des différents fichiers _PDL en un df
# TODO: passer par un système de multi index avec les noms de variables
dataDir = '../data/'
dfList = []
if 'BTX_aggregate.xlsx' not in os.listdir(dataDir + 'Insee/'):
for f in os.listdir(dataDir + '/Insee/data_raw/'):
if f.endswith(".xlsx") and f.startswith("BTX") and 'BTX_aggregate' not in f:
print(f)
#ajout de tag correspondant au nom du fichier
etude = f.split("_")[2]
df = pd.read_excel(dataDir + '/Insee/data_raw/' + f, index_col = 'CODGEO')
#Ajout du tag fichier en préfixe du nom de colonne
df.columns = df.columns[0:2].tolist() + df.add_prefix(etude + "_").columns[2:].tolist()
dfList.append(df)
else:
df = pd.read_excel( dataDir + '/Insee/BTX_aggregate.xlsx')
#df.iloc[:,1:] = df.iloc[:,1:].astype(int)
dfList.append(df)
df = pd.read_excel( dataDir + '/Insee/data_raw/base_cc_comparateur.xlsx', skiprows=5, index_col='CODGEO')
df = df[df.index.str[:2].isin(['44','85','53','72','49'])]
df.index = df.index.astype('int')
dfList.append(df)
#Merge des différents df et suppression des dupliqués
df = pd.concat(dfList, axis=1)
df = df.T.drop_duplicates().T
#le fichier /base_cc_comparateur.xlsx possède 4 colonnes avec des valeurs manquantes en grand nombre
# 2 col sont à supprimer
df = df.drop('PIMP18', axis = 1)
df = df.drop('TP6018', axis = 1)
#AJout des données de la CAF
dfT = pd.read_csv(dataDir + 'CAF/CAF_aggregate_PDL.csv')
dfT = dfT.rename(columns={'Codes_Insee':'CODGEO'})
dfT.index = dfT['CODGEO']
dfT = dfT.drop('CODGEO', axis = 1)
dfT = dfT.drop('Communes', axis = 1)
df = df.merge(dfT, on='CODGEO')
#AJout des données fibre
dfFibre = pd.read_csv(dataDir + 'Arcep/data_fibre.csv')
dfFibre = dfFibre[['Code commune', 'Taux fibre']]
dfFibre.columns = ['CODGEO', 'Taux fibre']
df = df.merge(dfFibre, on='CODGEO')
#AJout des données filosofi
dfm = pd.read_excel(dataDir + 'Insee/data_raw/base-cc-filosofi-2017.xlsx', sheet_name='COM',skiprows=5)
dfm = dfm[dfm['CODGEO'].str[:2].isin(['44','85','53','72','49'])]
dfm['CODGEO'] = dfm['CODGEO'].astype(int)
df = df.merge(dfm, on='CODGEO')
#AJout des données MBD_INSEE
#Ajout des données MDB-INSEE-V2.xls
dfm = pd.read_excel(dataDir + 'Insee/data_raw/MDB-INSEE-V2.xls')
dfm = dfm[dfm['CODGEO'].str[:2].isin(['44','85','53','72','49'])]
dfm['CODGEO'] = dfm['CODGEO'].astype(int)
df = df.merge(dfm, on='CODGEO')
#Nettoyage du df
cols_to_drop = ['Indice Fiscal Partiel','Score Fiscal', 'LIBGEO_y','Dep Moyenne Salaires Horaires','Dep Moyenne Salaires Cadre Horaires','Dep Moyenne Salaires Prof Intermédiaire Horaires','Dep Moyenne Salaires Employé Horaires','Dep Moyenne Salaires Ouvrié Horaires','Reg Moyenne Salaires Horaires','Reg Moyenne Salaires Cadre Horaires','Reg Moyenne Salaires Prof Intermédiaire Horaires','Reg Moyenne Salaires Employé Horaires','Reg Moyenne Salaires Ouvrié Horaires','Valeur ajoutée régionale']
for col in cols_to_drop:
df = df.drop(col, axis=1)
# Suppression des colonnes à valeurs unique
df = df[[c for c in list(df) if len(df[c].unique()) > 1]]
df.to_csv(dataDir + 'data_aggregate_PDL.csv')
df.to_csv(dataDir + 'data_aggregate_PDL.csv')
#Calcul valeurs manquantes
df.isna().sum().to_csv(dataDir + 'variables_count.csv')