# -*- coding: utf-8 -*-
"""MapaDecalor2.ipynb

Automatically generated by Colab.

Original file is located at
    https://colab.research.google.com/drive/1KPyYnA7K3D35OpjrlLwkJG7soe2KIEA2
"""

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import folium
from folium.plugins import HeatMap

CoordenadasMunicipios = pd.read_excel('/content/sample_data/MunicipiosFosas.xlsx')

CoordenadasMunicipios.head ()

Desaparecidos = pd.read_excel('/content/sample_data/Desaparecidos-Colombia-hist-rico-a-os-1930-a-junio-de-2024-20240925-(2)-csv (2).xlsx')

Desaparecidos.head ()

# Filtrar el DataFrame de Desaparecidos para contar solo los municipios que están en CoordenadasMunicipios
conteo_municipios = Desaparecidos[Desaparecidos['Municipio'].isin(CoordenadasMunicipios['Municipios'])]

# Realizar el conteo por municipio
total_conteo = conteo_municipios['Municipio'].value_counts().reset_index()
total_conteo.columns = ['Municipio', 'Total']

# Unir el conteo con las coordenadas
resultado_final = CoordenadasMunicipios.merge(total_conteo, left_on='Municipios', right_on='Municipio', how='left')

# Llenar NaN con 0 en la columna Total
resultado_final['Total'] = resultado_final['Total'].fillna(0)

# Mostrar el resultado
print(resultado_final[['Municipios', 'Fosas', 'LATITUD', 'LONGITUD', 'Total']])

# Crear un mapa base
m1 = folium.Map(location=[4.0, -74.0], zoom_start=6)

# Preparar los datos para el mapa de calor
heat_data = resultado_final[['LATITUD', 'LONGITUD', 'Total']].dropna()

# Crear una lista de coordenadas para el mapa de calor
heat_coordinates = [[row['LATITUD'], row['LONGITUD'], row['Total']] for index, row in heat_data.iterrows()]

# Agregar el mapa de calor
HeatMap(heat_coordinates, radius=15).add_to(m1)

# Mostrar el mapa
m1.save('mapa_calor_fosas_comunes.html')
m1

CoordenadasDepartamento = pd.read_excel('/content/sample_data/DepartamentoFosas.xlsx')

CoordenadasDepartamento.head ()

# Filtrar el DataFrame de Desaparecidos para contar solo los Departamento que están en CoordenadasDepartamento
conteo_Departamento = Desaparecidos[Desaparecidos['Departamento'].isin(CoordenadasDepartamento['Departamento'])]

# Realizar el conteo por Departamento
total_conteo = conteo_Departamento['Departamento'].value_counts().reset_index()
total_conteo.columns = ['Departamento', 'Total']

# Unir el conteo con las coordenadas
resultado_final1 = CoordenadasDepartamento.merge(total_conteo, left_on='Departamento', right_on='Departamento', how='left')

# Llenar NaN con 0 en la columna Total
resultado_final1['Total'] = resultado_final1['Total'].fillna(0)

# Mostrar el resultado
print(resultado_final1[['Departamento', 'Fosas', 'LATITUD', 'LONGITUD', 'Total']])

# Crear un mapa base centrado en Colombia
m = folium.Map(location=[4.0, -74.0], zoom_start=5)

# Preparar los datos para el mapa de calor
heat_data = resultado_final1[['LATITUD', 'LONGITUD', 'Total']].dropna()

# Crear una lista de coordenadas para el mapa de calor
heat_coordinates = [[row['LATITUD'], row['LONGITUD'], row['Total']] for index, row in heat_data.iterrows()]

# Agregar el mapa de calor
HeatMap(heat_coordinates, radius=25).add_to(m)

# Guardar el mapa en un archivo HTML
m.save('mapa_calor_fosas_departamentos.html')

# Mostrar el mapa
m

# Contar el número de municipios por departamento
conteo_municipios = Desaparecidos.groupby('Departamento')['Municipio'].nunique().reset_index()

# Renombrar columnas
conteo_municipios.columns = ['Departamento', 'Número de Municipios']

# Mostrar el resultado
print(conteo_municipios)

# Crear un gráfico de barras con un tamaño más amplio
plt.figure(figsize=(14, 8))  # Aumentar el tamaño del gráfico
plt.bar(conteo_municipios['Departamento'], conteo_municipios['Número de Municipios'], color='blue')
plt.title('Número de Municipios por Departamento', fontsize=16)  # Título más grande
plt.xlabel('Departamento', fontsize=14)  # Etiqueta más grande
plt.ylabel('Número de Municipios', fontsize=14)  # Etiqueta más grande
plt.xticks(rotation=45, ha='right', fontsize=12)  # Rotar etiquetas y alinear a la derecha
plt.grid(axis='y', linestyle='--', alpha=0.7)  # Estilo de cuadrícula más suave

# Ajustar el espacio del gráfico para que no se vean pegadas las etiquetas
plt.tight_layout(pad=3.0)

# Mostrar el gráfico
plt.show()

Coordenadas = pd.read_excel('/content/sample_data/CoordenasDeDepartamentos.xlsx')

# Crear el mapa base
m3 = folium.Map(location=[4.5709, -74.2973], zoom_start=5)

# Crear una lista de coordenadas para el HeatMap
heat_data = [[row['LATITUD'], row['LONGITUD']] for index, row in Coordenadas.iterrows()]

# Agregar el HeatMap al mapa
HeatMap(heat_data).add_to(m3)

# Mostrar el mapa
m3.save('mapa_calor_departamentos_colombia.html')

# Mostrar el mapa
m3