Limpieza Excel Eleccions
Python
#Instalación librerias faltantes
!pip install pyjanitor
#Importar librerias
import numpy as np
import pandas as pd
from janitor import clean_names
import re
#Autocompletar rápido
%config IPCompleter.greedy=True
#Sustituir ruta proyecto
fichero_datos = "datos.csv"
#Cargar datos
df = pd.read_csv(fichero_datos)
df
#Corregir automáticamente limpiando nombres de columnas
df = clean_names(df)
df
#Corregir manualmente
df.rename(columns = {'fomacion':'formacion',
'prestamo_hipotecario':'hipoteca',
'prestamo_personal':'consumo'}, inplace=True)
df
#Limpieza columnas vacías
df = df.dropna(axis=1, how='all')
df = df.loc[:, df.nunique() > 1]
#Eliminar filas con demasiados nulos
df = df.dropna(thresh=int(0.7 * len(df.columns)))
df
#df['fecha'] = pd.to_datetime(df['fecha'], errors='coerce') # Convertir a fecha
#df['numero'] = pd.to_numeric(df['numero'], errors='coerce') # Convertir a número
df.to_csv('datos_limpios', index=False)
#Mostrar nombres columnas
print(df.columns.tolist())
#Visión general
df.info()
#Tipos de datos
df.dtypes
#Comprovar columna sea númerica
#df['vots_percent'] = pd.to_numeric(df['vots_percent'], errors='coerce')
#Mostrar los 5 primeros de mayor a menor
#top5 = df.sort_values(by='vots_percent', ascending=False).head(5)
#print(top5)
# Agrupar por tipo de elección y año
participacion_anual = df.groupby(['vots_percent'])['any_eleccio'].mean().reset_index()
#Ordenar de mayor a menor el porcentaje
participacion_anual_ordenada = participacion_anual.sort_values(by='vots_percent', ascending=False)
#Visualizar resultado
print(participacion_anual_ordenada.head())