Análisis de Atenciones Estomatológicas en el Perú (2017)¶
Autor: Daniel Claros Montero
Fecha: 02 de septiembre de 2024
import pandas as pd
import matplotlib.pyplot as plt
import geopandas as gpd
1. Introducción¶
La salud bucal es fundamental para el bienestar general de las personas, ya que los problemas estomatológicos pueden tener un impacto significativo en la calidad de vida. En este contexto, el Ministerio de Salud del Perú (MINSA) ha recopilado información detallada sobre las atenciones estomatológicas, tanto preventivas como recuperativas, realizadas entre el 1 de enero y el 15 de septiembre de 2017. Este análisis tiene como objetivo explorar estos datos para identificar patrones, brechas y tendencias en las atenciones estomatológicas a nivel nacional.
Objetivos del Análisis:
- Explorar la distribución temporal y geográfica de las atenciones estomatológicas.
- Comparar las atenciones preventivas y recuperativas para identificar posibles áreas de mejora.
- Analizar la distribución de atenciones por sexo y etapa de vida.
- Identificar recomendaciones para mejorar la salud bucal en el Perú, basadas en los resultados obtenidos.
Al final de este análisis, se espera tener una visión clara de cómo se distribuyen las atenciones estomatológicas en el Perú y qué intervenciones podrían implementarse para mejorar la cobertura y calidad de estos servicios.
df_dicc = pd.read_csv('../data/DIC S BUCAL - ATENCION PREVENTIVA.csv', delimiter=',', encoding='windows-1252')
df_dicc
2. Carga y Preprocesamiento de Datos¶
Importación de los archivos CSV, tratamiento de valores nulos y limpieza básica de datos.
missing_values = ["NaN", "NA", "N/a", "np.nan", "?"]
df_preventiva = pd.read_csv('../data/DAT S BUCAL - ATENCION PREVENTIVA.csv', delimiter=',', encoding='windows-1252', na_values=missing_values)
df_recuperativa = pd.read_csv('../data/DAT S BUCAL - ATENCION RECUPERATIVA.csv', delimiter=',', encoding='windows-1252', na_values=missing_values)
print("Datos Preventivos:")
df_preventiva
print("Datos Recuperativos:")
df_recuperativa
#print("Valores Nulos en el Dataset Preventivo:")
#df_preventiva.isnull().sum()
df_preventiva.info()
#print("Valores Nulos en el Dataset Recuperativo:")
#df_recuperativa.isnull().sum()
df_recuperativa.info()
3. Análisis Exploratorio de Datos (EDA)¶
Esta sección se centra en comprender los datos mediante el análisis gráfico y descriptivo. Planteé 8 preguntas que se puede explorar en esta etapa:
df_preventiva.describe(include='all')
df_recuperativa.describe(include='all')
3.1. ¿Cómo se distribuyen las atenciones estomatológicas (preventivas y recuperativas) a lo largo del tiempo (por año y mes)?¶
atenciones_mensuales_preventiva = df_preventiva.groupby(['Anio', 'NroMes']).size()
atenciones_mensuales_recuperativa = df_recuperativa.groupby(['Anio', 'NroMes']).size()
fig, axs = plt.subplots(1, 2, figsize=(12,6))
fig.suptitle('Total de Personas Atendidas por Mes en Perú (2017)')
fig.supxlabel('Mes')
fig.supylabel('Personas Atendidas')
atenciones_mensuales_preventiva.plot(
kind='line',
cmap='RdYlBu',
title='Atenciones Preventivas',
xlabel=' ',#xlabel='Mes',
ylabel=' ',#ylabel='Número de Atenciones',
ax=axs[0],
marker='o'
)
axs[0].set_xticks(range(0, 9), ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre'], rotation=45)
atenciones_mensuales_recuperativa.plot(
kind='line',
cmap='coolwarm',
title='Atenciones Recuperativas',
xlabel=' ',#xlabel='Mes',
ylabel=' ',#ylabel='Número de Atenciones',
ax=axs[1],
marker='o'
)
axs[1].set_xticks(range(0, 9), ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre'], rotation=45)
plt.tight_layout()
plt.show()
La distribución de atenciones preventivas y recuperativas muestra un crecimiento a lo largo de los meses. Sin embargo, se observa una ligera caída en el número de personas atendidas para ambos tipos en el mes de abril. A partir del siguiente mes (mayo), hay una tendencia a aumentar las atenciones para ambos tipos.
- Nota: Recordar que los datos están actualizados hasta el 15 de septiembre de 2017, por lo que la caída abrupta en ese mes puede deberse a la falta de datos completos para los meses posteriores.
3.2. ¿Qué departamentos presentan mayor número de atenciones estomatológicas (por tipo de atención)?¶
atenciones_departamentales_preventiva = df_preventiva.groupby('Departamento').size()#.sort_values(ascending=False)
atenciones_departamentales_recuperativa = df_recuperativa.groupby('Departamento').size()#.sort_values(ascending=False)
fig, axs = plt.subplots(1, 2, figsize=(12,6))
fig.suptitle('Total de Personas Atendidas por Departamento en Perú (2017)')
fig.supxlabel('Departamento')
fig.supylabel('Personas Atendidas')
atenciones_departamentales_preventiva.plot(
kind='bar',
cmap='RdYlBu',
title='Atenciones Preventivas',
xlabel=' ',
ylabel=' ',
ax=axs[0],
)
atenciones_departamentales_recuperativa.plot(
kind='bar',
cmap='coolwarm',
title='Atenciones Recuperativas',
xlabel=' ',
ylabel=' ',
ax=axs[1],
)
plt.tight_layout()
plt.show()
#print(atenciones_departamentales_preventiva.rank())
#print(atenciones_departamentales_recuperativa.rank())
En la mayoría de los departamentos, las atenciones preventivas (en rojo) son significativamente mayores que las recuperativas (en azul). Esto sugiere un enfoque más fuerte en la prevención en todo el país.
Algunos departamentos como Loreto, La Libertad, Madre de Dios, y Moquegua tienen tanto atenciones preventivas como recuperativas en números relativamente bajos, pero las preventivas siguen predominando.
3.3. ¿Cómo se distribuyen las atenciones según el sexo de los pacientes?¶
atenciones_sexo_preventiva = df_preventiva['Sexo'].value_counts()
atenciones_sexo_recuperativa = df_recuperativa['Sexo'].value_counts()
fig, axs = plt.subplots(1, 2, figsize=(12, 6))
fig.suptitle('Total de Personas Atendidas por Sexo en Perú (2017)')
atenciones_sexo_preventiva.plot(
kind='pie',
cmap='RdYlBu',
autopct='%1.1f%%',
startangle=90, # Mejora la orientación inicial del gráfico
labels=['Femenino', 'Masculino'],
ylabel='',
ax=axs[0]
)
axs[0].set_title('Atenciones Preventivas')
atenciones_sexo_recuperativa.plot(
kind='pie',
cmap='coolwarm_r',
autopct='%1.1f%%',
startangle=90,
labels=['Femenino', 'Masculino'],
ylabel='',
ax=axs[1]
)
axs[1].set_title('Atenciones Recuperativas')
#axs[1].legend(['Femenino', 'Masculino'], loc='upper right')
plt.tight_layout()
plt.show()
Atenciones Preventivas: El gráfico de la izquierda muestra que el 57% de las atenciones preventivas fueron dirigidas a mujeres, mientras que el 43% fueron dirigidas a hombres. Esto podría indicar que las mujeres participan más en actividades preventivas de salud que los hombres.
Atenciones Recuperativas: El gráfico de la derecha indica que el 56.1% de las atenciones recuperativas fueron para mujeres y el 43.9% para hombres. Esto sugiere una distribución similar a las atenciones preventivas, aunque un poco menos pronunciada.
3.4. ¿Cuál es la distribución de las atenciones según la etapa de vida (niños, adolescentes, adultos, etc.)?¶
orden_etapas = ["0 - 6 M", "7 - 11 M", "1 - 2 A", "3 - 5 A", "6 - 11 A", "12 - 17 A", "18 - 29 A"]
atenciones_etapa_preventiva = df_preventiva['Etapa'].value_counts().reindex(orden_etapas)
atenciones_etapa_recuperativa = df_recuperativa['Etapa'].value_counts().reindex(orden_etapas)
fig, axs = plt.subplots(1, 2, figsize=(12, 6))
fig.suptitle('Total de Personas Atendidas por Etapa de Vida en Perú (2017)')
fig.supxlabel('Etapa de Vida')
fig.supylabel('Personas Atendidas')
atenciones_etapa_preventiva.plot(
kind='bar',
cmap='RdYlBu',
xlabel='',
ax=axs[0]
)
axs[0].set_title('Atenciones Preventivas')
axs[0].set_xticklabels(atenciones_etapa_preventiva.index, rotation=0)
atenciones_etapa_recuperativa.plot(
kind='bar',
cmap='coolwarm',
xlabel='',
ax=axs[1]
)
axs[1].set_title('Atenciones Recuperativas')
axs[1].set_xticklabels(atenciones_etapa_recuperativa.index, rotation=0)
plt.tight_layout()
plt.show()
Atenciones Preventivas:
- Grupo de Edad 18-29 Años: Es el grupo que más atenciones preventivas recibió, con más de 70,000 personas atendidas. Esto podría sugerir una mayor conciencia o acceso a servicios preventivos en este grupo de edad, quizás debido a campañas de salud dirigidas a adultos jóvenes o a la necesidad de chequeos regulares para prevención de enfermedades en esta etapa activa de la vida.
- Grupos de Edad 12-17 Años y 6-11 Años: También muestran altos números de atenciones preventivas, lo cual podría estar relacionado con programas de vacunación y revisiones médicas regulares en edad escolar.
- Grupos de Edad 3-5 Años y 1-2 Años: Aunque hay una disminución en comparación con los niños en edad escolar, las cifras son significativas, posiblemente debido a chequeos pediátricos y vacunaciones en los primeros años de vida.
- Grupos de Edad Menores de 5 Años: Hay una disminución notable en las atenciones preventivas a medida que se observa en los menores de 1 año (0-6 meses y 7-11 meses) y de 1 a 2 años. Esto podría sugerir que, aunque los bebés reciben atención médica, la cantidad de atenciones preventivas aumenta una vez que pasan los primeros meses de vida.
Atenciones Recuperativas:
- Grupo de Edad 18-29 Años: También es el grupo con el mayor número de atenciones recuperativas, aunque la cantidad es menor que en las atenciones preventivas. Esto puede reflejar la propensión de los adultos jóvenes a participar en actividades de riesgo o enfermedades agudas que requieren atención médica.
- Grupo de Edad 1-17 Años: Hay una fuerte presencia de atenciones recuperativas en los grupos de 6-11 años y 12-17 años, lo cual puede deberse a accidentes infantiles comunes, enfermedades infecciosas o condiciones crónicas que requieren tratamientos.
- Grupos de Edad 0-6 Meses y 7-11 Meses: Estos grupos presentan las menores cifras de atenciones recuperativas, lo que podría indicar que los recién nacidos y bebés menores de 1 año son menos propensos a enfermedades que requieren recuperación, o que estas atenciones están más cubiertas por cuidados intensivos y no se registran en la misma categoría.
3.5. ¿Existen diferencias en los tipos de procedimientos aplicados entre hombres y mujeres?¶
# df_preventiva['Sexo'] = df_preventiva['Sexo'].replace({'F': 'Femenino', 'M': 'Masculino'})
# df_recuperativa['Sexo'] = df_recuperativa['Sexo'].replace({'F': 'Femenino', 'M': 'Masculino'})
atenciones_diagnosticoXsexo_preventiva = df_preventiva.groupby([df_preventiva['Sexo'].replace({'F': 'Femenino', 'M': 'Masculino'}), 'Diagnostico']).size().unstack()
atenciones_diagnosticoXsexo_recuperativa = df_recuperativa.groupby([df_recuperativa['Sexo'].replace({'F': 'Femenino', 'M': 'Masculino'}), 'Diagnostico']).size().unstack()
fig, axs = plt.subplots(2, 1, figsize=(12,12))
fig.suptitle('Total de Personas Atendidas por Diagnóstico y Sexo en Perú (2017)')
atenciones_diagnosticoXsexo_preventiva.plot(
kind='bar',
cmap='Set1',
ax=axs[0]
)
axs[0].set_title('Atenciones Preventivas')
axs[0].set_ylabel('Personas Atendidas')
axs[0].set_xticklabels(atenciones_diagnosticoXsexo_preventiva.index, rotation=0)
atenciones_diagnosticoXsexo_recuperativa.plot(
kind='bar',
cmap='Set2',
ax=axs[1]
)
axs[1].set_title('Atenciones Recuperativas')
axs[1].set_ylabel('Personas Atendidas')
axs[1].set_xticklabels(atenciones_diagnosticoXsexo_recuperativa.index, rotation=0)
for ax in axs:
ax.legend(loc='center left',bbox_to_anchor=(1, 0, 0.5, 1))
plt.tight_layout()
plt.show()
#atenciones_diagnosticoXsexo_preventiva.head()
En los gráficos presentados, se observa que tanto en las atenciones preventivas como en las recuperativas, las mujeres tienden a recibir un mayor número de procedimientos en comparación con los hombres. Esto es especialmente evidente en procedimientos como "Examen Estomatológico" e "Instrucción de Higiene Oral" en el caso de atenciones preventivas, así como en "Restauraciones Dentales con Resina" y "Raspaje Dental" en atenciones recuperativas. Esto sugiere una mayor frecuencia de atenciones odontológicas en mujeres, reflejando posibles diferencias en el acceso o en la búsqueda de servicios de salud bucal entre ambos sexos.
- Nota: La distribución desigual en algunos procedimientos podría señalar la necesidad de estudios más detallados para entender las razones subyacentes, como factores socioculturales, económicos, o diferencias en la percepción del cuidado dental.
3.6. ¿Cuál es la condición más común en la fase de tratamiento?¶
atenciones_condicion_preventiva = df_preventiva['Condicion'].value_counts()
atenciones_condicion_recuperativa = df_recuperativa['Condicion'].value_counts()
fig, axs = plt.subplots(1, 2, figsize=(12, 6))
fig.suptitle('Total de Personas Atendidas por Condición en Perú (2017)')
fig.supxlabel('Condición')
fig.supylabel('Personas Atendidas')
atenciones_condicion_preventiva.plot(
kind='bar',
cmap='RdYlBu',
xlabel='',
ax=axs[0]
)
axs[0].set_title('Atenciones Preventivas')
axs[0].set_xticklabels(atenciones_condicion_preventiva.index, rotation=0)
atenciones_condicion_recuperativa.plot(
kind='bar',
cmap='coolwarm',
xlabel='',
ax=axs[1]
)
axs[1].set_title('Atenciones Recuperativas')
axs[1].set_xticklabels(atenciones_condicion_recuperativa.index, rotation=0)
plt.tight_layout()
plt.show()
Atenciones Preventivas: El gráfico de la izquierda muestra que aproximadamente 250,000 personas inician como parte de las atenciones preventivas, mientras que casi 100,000 personas ya son casos tratados.
Atenciones Recuperativas: El gráfico de la derecha indica que más de 80,000 personas inician como parte de atenciones recuperativas. Sin embargo, se observa una clara disminución en el número de casos tratados en comparación con el número inicial. Esta diferencia sugiere que, a pesar de un número significativo de personas que comienzan el proceso de atención recuperativa, una proporción considerable no completa el tratamiento o no se registra como caso tratado.
3.7. ¿Cuál es el número promedio de atenciones por distrito?¶
# No es visualmente bueno, para ello usamos mapas shapefiles
#
# df_preventiva.groupby('Distrito')['Casos'].mean().plot(kind='bar')
# plt.show()
#
# df_recuperativa.groupby('Distrito')['Casos'].mean().plot(kind='bar')
# plt.show()
departamentos_map = gpd.read_file('../maps/shapefile/DEPARTAMENTOS/DEPARTAMENTOS.shp')
provincias_map = gpd.read_file('../maps/shapefile/PROVINCIAS/PROVINCIAS.shp')
distritos_map = gpd.read_file('../maps/shapefile/DISTRITOS/DISTRITOS.shp')
print(departamentos_map.columns)
print(provincias_map.columns)
print(distritos_map.columns)
departamentos_map.rename(columns={'DEPARTAMEN': 'Departamento'}, inplace=True)
provincias_map.rename(columns={'DEPARTAMEN': 'Departamento'}, inplace=True)
distritos_map.rename(columns={'DEPARTAMEN': 'Departamento'}, inplace=True)
departamentos_map.rename(columns={'PROVINCIA': 'Provincia'}, inplace=True)
provincias_map.rename(columns={'PROVINCIA': 'Provincia'}, inplace=True)
distritos_map.rename(columns={'PROVINCIA': 'Provincia'}, inplace=True)
departamentos_map.rename(columns={'DISTRITO': 'Distrito'}, inplace=True)
provincias_map.rename(columns={'DISTRITO': 'Distrito'}, inplace=True)
distritos_map.rename(columns={'DISTRITO': 'Distrito'}, inplace=True)
atenciones_prom_Xdistrito_preventiva = df_preventiva.groupby(['Departamento', 'Provincia', 'Distrito'])['Casos'].mean()
atenciones_prom_Xdistrito_recuperativa = df_recuperativa.groupby(['Departamento', 'Provincia', 'Distrito'])['Casos'].mean()
# Une los datos agregados con el shapefile de distritos
df_geo_dist_map_preventiva = distritos_map.merge(atenciones_prom_Xdistrito_preventiva, on=['Departamento', 'Provincia', 'Distrito'], how='left')
df_geo_dist_map_recuperativa = distritos_map.merge(atenciones_prom_Xdistrito_recuperativa, on=['Departamento', 'Provincia', 'Distrito'], how='left')
fig, axs = plt.subplots(1, 2, figsize=(12, 6))
fig.suptitle('Promedio de Casos Atendidos por Distrito de Perú (2017)')
divider1 = plt.cm.ScalarMappable(cmap='OrRd', norm=plt.Normalize(vmin=df_geo_dist_map_preventiva['Casos'].min(), vmax=df_geo_dist_map_preventiva['Casos'].max()))
df_geo_dist_map_preventiva.plot(
cmap='OrRd',
ax=axs[0]
)
axs[0].set_title('Atenciones Preventivas')
cbar1 = fig.colorbar(divider1, ax=axs[0], orientation='vertical')
cbar1.set_label('Promedio de Casos Preventivos')
#for idx, row in df_geo_dist_map_preventiva.iterrows():
# axs[0].text(row['geometry'].centroid.x, row['geometry'].centroid.y, s=row['Distrito'], fontsize=1, ha='center')
divider2 = plt.cm.ScalarMappable(cmap='OrRd', norm=plt.Normalize(vmin=df_geo_dist_map_recuperativa['Casos'].min(), vmax=df_geo_dist_map_recuperativa['Casos'].max()))
df_geo_dist_map_recuperativa.plot(
cmap='OrRd',
ax=axs[1]
)
axs[1].set_title('Atenciones Recuperativas')
cbar2 = fig.colorbar(divider2, ax=axs[1], orientation='vertical')
cbar2.set_label('Promedio de Casos Recuperativos')
#for idx, row in df_geo_dist_map_recuperativa.iterrows():
# axs[1].text(row['geometry'].centroid.x, row['geometry'].centroid.y, s=row['Distrito'], fontsize=1, ha='center')
plt.tight_layout()
plt.show()
Los mapas shapefile de distritos de Perú para casos de salud bucal permiten visualizar la distribución geográfica de atenciones preventivas y recuperativas, identificando áreas con mayores necesidades de intervención. Estos mapas evidencian desigualdades en el acceso a servicios de salud, con algunos distritos mostrando mayor prevalencia de tratamientos correctivos y otros distritos que no tienen pacientes estomatológicos. La información obtenida es clave para orientar recursos y políticas públicas hacia una mejor cobertura de salud bucal en todo el país. Además, facilita la evaluación de la efectividad de campañas preventivas en diferentes regiones.
3.8 ¿Hay alguna relación entre la condición de gestación y el tipo de atención recibida?¶
atenciones_detalleGestacion_preventiva = df_preventiva.groupby(['DetalleGestacion', 'Diagnostico']).size().unstack()
atenciones_detalleGestacion_recuperativa = df_recuperativa.groupby(['DetalleGestacion', 'Diagnostico']).size().unstack()
fig, axs = plt.subplots(2, 1, figsize=(12,12))
fig.suptitle('Total de Personas Atendidas por Condición de Gestación y Diagnóstico en Perú (2017)')
atenciones_detalleGestacion_preventiva.plot(
kind='bar',
cmap='Paired',
ax=axs[0]
)
axs[0].set_title('Atenciones Preventivas')
axs[0].set_ylabel('Personas Atendidas')
axs[0].set_xticklabels(atenciones_detalleGestacion_preventiva.index, rotation=0)
atenciones_detalleGestacion_recuperativa.plot(
kind='bar',
cmap='tab10',
ax=axs[1]
)
axs[1].set_title('Atenciones Recuperativas')
axs[1].set_ylabel('Personas Atendidas')
axs[1].set_xticklabels(atenciones_detalleGestacion_recuperativa.index, rotation=0)
for ax in axs:
ax.legend(loc='center left',bbox_to_anchor=(1, 0, 0.5, 1))
plt.tight_layout()
plt.show()
En el gráfico, se observa que las personas no gestantes recibieron significativamente más atenciones tanto preventivas como recuperativas en comparación con las gestantes. Además, las intervenciones como "Examen Estomatológico" y "Raspaje Dental" son más frecuentes en no gestantes. Esto sugiere que la condición de gestación podría estar asociada con una menor frecuencia en ciertos tipos de atención dental.
4. Análisis Comparativo¶
Para el Análisis Comparativo, el objetivo es identificar y entender las diferencias o similitudes clave entre distintas variables o grupos dentro de los datos. Aquí propuse 4 preguntas que se podrian explorar:
df_comparativo = pd.concat([df_preventiva.assign(Tipo='Preventiva'), df_recuperativa.assign(Tipo='Recuperativa')])
4.1. ¿Cómo se comparan las atenciones preventivas y recuperativas en diferentes departamentos?¶
dfcomp1 = df_comparativo.groupby(['Departamento', 'Tipo']).size().unstack()
dfcomp1.plot(
kind='bar',
stacked=False,
cmap='RdYlBu',
title='Comparación de Atenciones por Departamento y Tipo en Perú (2017)',
ylabel='Personas Atendidas'
)
plt.show()
En la mayoría de los departamentos del Perú en 2017, las atenciones preventivas superaron ampliamente a las recuperativas, destacando en regiones como Junín, Ayacucho y Huánuco. Esto sugiere un enfoque nacional en la prevención, aunque con variaciones significativas entre las regiones.
4.2. ¿Cuál es la diferencia en la distribución de atenciones por sexo entre atenciones preventivas y recuperativas?¶
dfcomp2 = df_comparativo.groupby(['Sexo', 'Tipo']).size().unstack()
dfcomp2.plot(
kind='bar',
cmap='RdYlBu',
title='Comparación de Atenciones por Sexo y Tipo en Perú (2017)',
ylabel='Personas Atendidas'
)
plt.show()
La gráfica sugiere que hay una mayor atención de casos preventivos en comparación con los recuperativos. Además, se observa una ligera preponderancia de mujeres en ambos tipos de atenciones.
4.3. ¿Cómo varía la proporción de atenciones preventivas y recuperativas entre las diferentes etapas de vida?¶
orden_etapas = ["0 - 6 M", "7 - 11 M", "1 - 2 A", "3 - 5 A", "6 - 11 A", "12 - 17 A", "18 - 29 A"]
dfcomp3 = df_comparativo.groupby(['Etapa', 'Tipo']).size().unstack().reindex(orden_etapas)
dfcomp3.plot(
kind='bar',
stacked=False,
cmap='RdYlBu',
title='Comparación de Atenciones por Etapa de Vida y Tipo en Perú (2017)',
ylabel='Personas Atendidas'
)
plt.xticks(ticks=range(len(dfcomp3.index)), labels=dfcomp3.index, rotation=0)
plt.show()
La gráfica sugiere un crecimiento en el número de personas atendidas para ambos tipos a medida que la etapa de vida avanza.
4.4. ¿Cómo se distribuyen geográficamente las atenciones preventivas y recuperativas a nivel departamental, provincial y distrital en el Perú?¶
# Mapa de Calor de Atenciones
atenciones_Xdepartamento_preventiva = df_preventiva.groupby('Departamento').size().reset_index(name='TotalAtenciones').fillna(0)
atenciones_Xprovincia_preventiva = df_preventiva.groupby(['Departamento', 'Provincia']).size().reset_index(name='TotalAtenciones').fillna(0)
atenciones_Xdistrito_preventiva = df_preventiva.groupby(['Departamento', 'Provincia', 'Distrito']).size().reset_index(name='TotalAtenciones').fillna(0)
atenciones_Xdepartamento_recuperativa = df_recuperativa.groupby('Departamento').size().reset_index(name='TotalAtenciones').fillna(0)
atenciones_Xprovincia_recuperativa = df_recuperativa.groupby(['Departamento', 'Provincia']).size().reset_index(name='TotalAtenciones').fillna(0)
atenciones_Xdistrito_recuperativa = df_recuperativa.groupby(['Departamento', 'Provincia', 'Distrito']).size().reset_index(name='TotalAtenciones').fillna(0)
# Une los datos agregados con los shapefiles
df_geo_depa_map_preventiva = departamentos_map.merge(atenciones_Xdepartamento_preventiva, on=['Departamento'], how='left')
df_geo_prov_map_preventiva = provincias_map.merge(atenciones_Xprovincia_preventiva, on=['Departamento', 'Provincia'], how='left')
df_geo_dist_map_preventiva = distritos_map.merge(atenciones_Xdistrito_preventiva, on=['Departamento', 'Provincia', 'Distrito'], how='left')
df_geo_depa_map_recuperativa = departamentos_map.merge(atenciones_Xdepartamento_recuperativa, on=['Departamento'], how='left')
df_geo_prov_map_recuperativa = provincias_map.merge(atenciones_Xprovincia_recuperativa, on=['Departamento', 'Provincia'], how='left')
df_geo_dist_map_recuperativa = distritos_map.merge(atenciones_Xdistrito_recuperativa, on=['Departamento', 'Provincia', 'Distrito'], how='left')
from mpl_toolkits.axes_grid1 import make_axes_locatable
fig, axs = plt.subplots(2, 3, figsize=(18, 18))
fig.suptitle('Total de Personas Atendidas por Departamento, Provincia y Distrito en Perú (2017)')
# 1subplot_departamento_preventiva
divider1 = make_axes_locatable(axs[0,0])
cax1 = divider1.append_axes("right", size="5%", pad=0.1)
df_geo_depa_map_preventiva.plot(
column='TotalAtenciones',
cmap='OrRd',
ax=axs[0,0],
legend=True,
cax=cax1
)
axs[0,0].set_title('Nivel Departamental')
cax1.set_ylabel('Total de Personas Preventivas Atentidos')
for idx, row in df_geo_depa_map_preventiva.iterrows():
axs[0,0].text(row['geometry'].centroid.x, row['geometry'].centroid.y, s=row['Departamento'], fontsize=6, ha='center')
# 2subplot_provincia_preventiva
divider2 = make_axes_locatable(axs[0,1])
cax2 = divider2.append_axes("right", size="5%", pad=0.1)
df_geo_prov_map_preventiva.plot(
column='TotalAtenciones',
cmap='OrRd',
ax=axs[0,1],
legend=True,
cax=cax2
)
axs[0,1].set_title('Nivel Provincial')
cax2.set_ylabel('Total de Personas Preventivas Atentidos')
# 3subplot_distrito_preventiva
divider3 = make_axes_locatable(axs[0,2])
cax3 = divider3.append_axes("right", size="5%", pad=0.1)
df_geo_dist_map_preventiva.plot(
column='TotalAtenciones',
cmap='OrRd',
ax=axs[0,2],
legend=True,
cax=cax3
)
axs[0,2].set_title('Nivel Distrital')
cax3.set_ylabel('Total de Personas Preventivas Atentidos')
# 4subplot_departamento_recuperativa
divider4 = make_axes_locatable(axs[1,0])
cax4 = divider4.append_axes("right", size="5%", pad=0.1)
df_geo_depa_map_recuperativa.plot(
column='TotalAtenciones',
cmap='OrRd',
ax=axs[1,0],
legend=True,
cax=cax4
)
axs[1,0].set_title('Nivel Departamental')
cax4.set_ylabel('Total de Personas Recuperativas Atentidos')
for idx, row in df_geo_depa_map_recuperativa.iterrows():
axs[1,0].text(row['geometry'].centroid.x, row['geometry'].centroid.y, s=row['Departamento'], fontsize=6, ha='center')
# 5subplot_provincia_recuperativa
divider5 = make_axes_locatable(axs[1,1])
cax5 = divider5.append_axes("right", size="5%", pad=0.1)
df_geo_prov_map_recuperativa.plot(
column='TotalAtenciones',
cmap='OrRd',
ax=axs[1,1],
legend=True,
cax=cax5
)
axs[1,1].set_title('Nivel Provincial')
cax5.set_ylabel('Total de Personas Recuperativas Atentidos')
# 6subplot_distrito_recuperativa
divider6 = make_axes_locatable(axs[1,2])
cax6 = divider6.append_axes("right", size="5%", pad=0.1)
df_geo_dist_map_recuperativa.plot(
column='TotalAtenciones',
cmap='OrRd',
ax=axs[1,2],
legend=True,
cax=cax6
)
axs[1,2].set_title('Nivel Distrital')
cax6.set_ylabel('Total de Personas Recuperativas Atentidos')
# Asegura que todos los subplots tengan las mismas dimensiones
## Obtiene los límites de todos los GeoDataFrames
bounds_preventiva = [df_geo_depa_map_preventiva.total_bounds,
df_geo_prov_map_preventiva.total_bounds,
df_geo_dist_map_preventiva.total_bounds]
bounds_recuperativa = [df_geo_depa_map_recuperativa.total_bounds,
df_geo_prov_map_recuperativa.total_bounds,
df_geo_dist_map_recuperativa.total_bounds]
##Combina todos los límites en una sola lista
all_bounds = bounds_preventiva + bounds_recuperativa
## Calcula los límites globales
min_x = min(bounds[0] for bounds in all_bounds)
max_x = max(bounds[2] for bounds in all_bounds)
min_y = min(bounds[1] for bounds in all_bounds)
max_y = max(bounds[3] for bounds in all_bounds)
# Define el rango de los ejes
xlim = (min_x, max_x)
ylim = (min_y, max_y)
for ax in axs.flat:
ax.set_xlim(xlim)
ax.set_ylim(ylim)
plt.tight_layout()
plt.show()
#atenciones_Xdepartamento_preventiva
#atenciones_Xdepartamento_recuperativa
Los mapas muestran cómo se distribuyen geográficamente las atenciones preventivas y recuperativas a nivel departamental, provincial y distrital en el Perú, con una barra de calor que indica el mayor número de personas atendidas en cada zona según el nivel correspondiente.
Algunas zonas están en blanco, lo que sugiere que no hay atenciones estomatológicas en determinadas áreas a nivel provincial y distrital en el Perú.
5. Conclusiones y Recomendaciones¶
Resumen de los hallazgos y sugerencias de políticas o intervenciones.
Resumen de Hallazgos Clave
Desigualdad en la Distribución Geográfica de Atenciones: Se observó que algunos departamentos y distritos tienen un acceso significativamente mayor a atenciones estomatológicas, tanto preventivas como recuperativas. Los departamentos como Junín y Huánuco mostraron una mayor concentración de servicios, mientras que regiones como Cajamarca y Pasco presentan menos atenciones en relación a su población.
Disparidad de Género: Se identificó una leve disparidad en las atenciones estomatológicas, con las mujeres recibiendo más atenciones preventivas que los hombres en varios departamentos. Sin embargo, la diferencia no es extremadamente pronunciada, lo que sugiere un acceso relativamente equitativo.
Variabilidad en Etapas de Vida: Los datos mostraron que las etapas de vida como la niñez y la adultez temprana reciben más atenciones preventivas.
Tendencia Temporal: A lo largo de los meses de enero a septiembre de 2017, se observó un incremento constante en las atenciones, sin embargo, en los meses de abril y mayo, hay una disminución que podría estar relacionado con cambios en la accesibilidad de servicios.
Recomendaciones de Políticas o Intervenciones
Ampliación de Cobertura en Regiones Desatendidas: Es crucial desarrollar políticas que redirijan recursos hacia departamentos y distritos con menor acceso a servicios estomatológicos. Esto podría incluir incentivos para que profesionales de la salud se desplacen a estas áreas, así como la mejora de la infraestructura.
Campañas de Concientización y Educación: Implementar programas de educación bucal que se enfoquen en la población masculina y en etapas de vida desatendidas, como los adultos mayores, podría equilibrar mejor la distribución de atenciones preventivas y reducir la necesidad de tratamientos recuperativos.
Fortalecimiento de las Campañas Temporales: Dado que los datos sugieren una efectividad en campañas realizadas en ciertos meses, se recomienda reforzar estas campañas, especialmente en los meses de baja atención, para mantener un acceso constante y equitativo a lo largo del año.
Integración de Servicios de Salud Bucal en Políticas de Salud General: Considerando la importancia de la salud bucal para el bienestar general, es recomendable integrar más estrechamente los servicios estomatológicos en las políticas de salud pública, asegurando que sean una parte clave de la atención primaria.
6. Referencias¶
- Gobierno del Perú. (2017). MINSA Salud Bucal [Data set]. Datos Abiertos Perú. https://www.datosabiertos.gob.pe/dataset/minsa-salud-bucal (Accedido: 31 de agosto de 2024).
- aquispeeign. (2022). Límites referenciales del Perú (Shapefile) [Data set]. Datos Abiertos Perú. https://www.datosabiertos.gob.pe/users/aquispeeign (Accedido: 31 de agosto de 2024).