cristian Lozano

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())