PROYECTO FINAL DE ASIGNATURA
1. INFORMACIÓN GENERAL DEL PROYECTO
TÍTULO DEL PROYECTO Pueblos Indígenas del Ecuador
PROYECTO FINAL DE ASIGNATURA
GRUPO1
Marco López
NOMBRE (S) COMPLETO (S)
Tannia Miranda
Maythe Gonzaga
CARRERA Big Data e Inteligencia de Negocios.
NIVEL Primero
DOCENTE Ing. Ruth Tenesaca
FECHA DE
FECHA DE INICIO DEL
12/04/2025 FINALIZACIÓN DEL 26/04/2025
PROYECTO
PROYECTO
Web Scraping
1. INTRODUCCIÓN
1.1 Problema de investigación
Este proyecto se alinea perfectamente con el uso de RStudio, ya que R ofrece paquetes potentes
como rvest, httr, xml2 y tidyverse, que permiten extraer, limpiar y estructurar información web de
forma eficiente. Además, el ecosistema de R facilita el análisis posterior de los datos extraídos,
permitiendo visualizar patrones culturales, geográficos o lingüísticos relacionados con los pueblos
indígenas.
RStudio, como entorno de desarrollo, permite automatizar tareas repetitivas, programar scrapers
que se ejecuten con regularidad y transformar datos no estructurados en bases limpias, organizadas
y listas para investigación o difusión pública.
Dificultades comunes en un proyecto de web scraping
1. Diversidad de estructuras web: No todas las páginas están construidas igual. Algunas utilizan
JavaScript dinámico, otras tienen etiquetas HTML inconsistentes o contenidos embebidos, lo
que complica la extracción uniforme de datos.
2. Cambios constantes en las páginas: Un scraper puede dejar de funcionar si el sitio web
cambia su diseño o estructura interna. Esto requiere constante revisión y ajuste del código.
3. Restricciones de acceso: Algunos sitios limitan el número de visitas o usan mecanismos para
bloquear bots. Es necesario programar con ética, respetando términos de uso y evitando
sobrecargar servidores.
4. Falta de documentación o APIs oficiales: En muchos casos, la información no está disponible
de forma abierta ni estructurada, lo cual obliga al scraper a navegar por rutas complejas o
páginas poco amigables.
5. Acceso desigual a internet: Especialmente en temas sensibles como los pueblos indígenas,
muchos sitios son mantenidos por comunidades o instituciones con recursos limitados. Esto
puede hacer que sus sitios estén desactualizados o caídos con frecuencia.
Este proyecto no es solo técnico, es socialmente valioso. Al facilitar el acceso a datos sobre los
pueblos indígenas, no solo estamos mejorando la tecnología, sino también visibilizando culturas,
promoviendo la inclusión y facilitando la investigación intercultural. El uso de herramientas como
RStudio permite democratizar el conocimiento, y con un enfoque ético y colaborativo, este proyecto
puede convertirse en una puerta al entendimiento y respeto hacia los pueblos originarios.
2. FUNDAMENTOS DEL PROYECTO
2.1 Justificación
La elección de implementar una solución de web scraping en este proyecto responde a la necesidad
urgente de acceder, centralizar y sistematizar información pública y dispersa relacionada con los
pueblos indígenas del Ecuador. Actualmente, gran parte de esta información se encuentra
distribuida en portales web de instituciones gubernamentales, ONGs, universidades y medios de
comunicación. Sin embargo, estas fuentes presentan una alta heterogeneidad en su diseño, acceso
y frecuencia de actualización, lo que dificulta el trabajo de investigadores, docentes, activistas y
tomadores de decisiones.
El uso del web scraping permite automatizar este proceso de búsqueda y recopilación, brindando
una solución tecnológica que ahorra tiempo, reduce el error humano y mejora el acceso a datos
relevantes. De esta manera, no solo se optimiza el trabajo técnico, sino que también se favorece la
visibilidad, el reconocimiento y la preservación de la diversidad cultural y territorial de los pueblos
indígenas, muchas veces invisibilizados en las bases de datos oficiales.
Además, este enfoque contribuye al desarrollo de herramientas abiertas, replicables y escalables, lo
que podría beneficiar a futuros proyectos con objetivos similares en otras regiones o temáticas. Usar
tecnologías como RStudio para este fin promueve la formación de competencias técnicas en el
ámbito del análisis de datos y la responsabilidad ética en el uso de la información pública.
En definitiva, este proyecto no se trata solo de recoger datos, sino de construir puentes de
conocimiento, respetando la identidad cultural y permitiendo que la tecnología esté al servicio de
la equidad, la inclusión y la investigación con impacto social.
2.2. Objetivo general:
Desarrollar una solución basada en técnicas de web scraping en R para la recolección automatizada,
estructuración y análisis de datos públicos disponibles en línea sobre las provincias del Ecuador.
Objetivos Específicos
1. Identificar y seleccionar fuentes web confiables que contengan información pública relevante
sobre las provincias del Ecuador, tales como indicadores demográficos, sociales, económicos
y culturales.
2. Diseñar y programar scripts en R que permitan extraer de forma automática los datos desde
páginas web con estructuras diversas, garantizando la integridad y calidad de la información
obtenida.
3. Transformar y estructurar los datos recolectados en formatos adecuados para su posterior
análisis, utilizando técnicas de limpieza, normalización y almacenamiento eficiente en R.
4. Implementar visualizaciones y análisis exploratorios de los datos, que faciliten la comprensión
de las características de cada provincia y permitan identificar patrones o necesidades
específicas.
5. Evaluar la eficacia del proceso de web scraping desarrollado, considerando criterios como
tiempo de ejecución, exactitud de los datos y facilidad de replicación del sistema.
3. DESARROLLO
Explicación del Código de Web Scraping y Análisis en R
Proyecto: Pueblos Indígenas del Ecuador
[Link]
1. Instalación y carga de paquetes
if (!require("rvest")) [Link]("rvest")
if (!require("dplyr")) [Link]("dplyr")
if (!require("tidyr")) [Link]("tidyr")
if (!require("zoo")) [Link]("zoo")
if (!require("ggplot2")) [Link]("ggplot2")
[Link]("janitor")
¿Qué hace esto?
Instala paquetes necesarios para realizar web scraping, limpieza, manipulación y visualización de
datos. Luego, se cargan las librerías con library() para que se puedan usar sus funciones en el
análisis.
library(rvest)
¿Para qué sirve?
Esta librería se usa para hacer web scraping, es decir, extraer información directamente desde
páginas web.
¿Qué permite hacer?
• Leer el contenido HTML de una página.
• Buscar elementos como tablas, párrafos, títulos, imágenes, etc.
• Extraer datos útiles de forma estructurada.
Ejemplo:
pagina <-
read_html("[Link]
ador")
tablas <- pagina %>% html_nodes("table")
library(dplyr)
¿Para qué sirve?
Es una de las librerías más usadas para manipular y transformar datos en R de forma clara y
eficiente.
Funciones comunes:
• filter() – filtrar filas.
• select() – seleccionar columnas.
• mutate() – crear nuevas columnas.
• summarise() – resumir valores.
• group_by() – agrupar datos para análisis.
Ejemplo:
datos %>% filter(region == "Amazonía")
library(ggplot2)
¿Para qué sirve?
Es una poderosa librería para crear gráficos y visualizaciones de datos en R. Usa una gramática de
gráficos muy intuitiva.
Tipos de gráficos comunes:
• Barras (geom_bar)
• Líneas (geom_line)
• Dispersión (geom_point)
• Pastel (coord_polar)
Ejemplo:
ggplot(datos, aes(x = region)) +
geom_bar()
library(janitor)
¿Para qué sirve?
Sirve para limpiar y preparar datos de manera rápida. Es muy útil cuando trabajas con datos
desordenados (como tablas de Excel o HTML).
Funciones comunes:
• clean_names() – convierte los nombres de columnas a formato limpio y estandarizado (sin
espacios ni caracteres raros).
• remove_empty() – elimina filas o columnas vacías.
• tabyl() – crea tablas de frecuencias rápidamente.
Ejemplo:
datos <- clean_names(datos)
Resumen
Librería Uso principal Ejemplo clave
Web scraping (extraer datos
rvest html_nodes("table")
web)
dplyr Manipulación de datos filter(), mutate()
ggplo geom_bar(),
Visualización de datos
t2 geom_point()
janit
Limpieza de datos clean_names()
or
2. Lectura y extracción de datos desde la web
url <-
"[Link]
datos <- read_html(url) %>%
html_nodes("table") %>%
.[[3]] %>%
html_table()
¿Qué ocurre aquí?
• read_html(url): lee el contenido HTML de la página.
• html_nodes("table"): selecciona todas las tablas de la página.
• . [[3]]: selecciona la tercera tabla, que contiene la información útil.
• html_table(): transforma esa tabla HTML en un dataframe de R.
3. Limpieza básica de los datos
df <- [Link](datos)
datos <- clean_names(datos)
¿Qué se hace aquí?
Se convierte el objeto a un [Link] y se normalizan los nombres de las columnas con
clean_names() del paquete janitor, eliminando espacios, tildes, mayúsculas, etc., para facilitar el
trabajo posterior.
4. Revisión y manejo de columnas sin nombre o con NA
names(datos)[names(datos) == ""] <- "columna_sin_nombre"
names(datos)[[Link](names(datos))] <- "columna_na"
Esto garantiza que todas las columnas tengan nombre y podamos manipularlas sin errores.
5. Limpieza de datos faltantes (NA)
datos_limpios <- datos %>%
filter(, )
Se filtran las filas que no tienen información útil (por ejemplo, nombres de nacionalidades o
población en blanco).
6. Filtrado específico: población Achuar
Achuar_datos <- datos %>%
filter(nacionalidad == "Achuar") %>%
count(poblacion)
Se extrae solo la información de la nacionalidad "Achuar", para un análisis más específico.
7. Cálculo de población total
datos$poblacion <- [Link](datos$poblacion)
total_poblacion <- sum(datos$poblacion, [Link] = TRUE)
Se convierte la columna de población a numérica (por si venía como texto), y luego se suma toda
la población indígena registrada.
8. Gráfico de barras: nacionalidades por región
ggplot(datos, aes(x = region)) +
geom_bar() +
theme_minimal() +
labs(title = "Nacionalidades de Ecuador", x = "Nacionalidad", y =
"Conteo")
Este gráfico muestra cuántas nacionalidades indígenas hay por región (Costa, Sierra, Amazonía).
9. Gráfico de porcentajes por región
datos_summary <- datos %>%
count(region) %>%
mutate(porcentaje = n / sum(n) * 100)
ggplot(datos_summary, aes(x = region, y = n, fill = region)) +
geom_bar(stat = "identity") +
geom_text(aes(label = paste0(round(porcentaje, 1), "%")),
vjust = -0.5, size = 4) +
theme_minimal() +
labs(title = "Nacionalidades de Ecuador", x = "Nacionalidad", y =
"Conteo") +
guides(fill = FALSE)
Aquí se muestra la proporción porcentual de nacionalidades indígenas por región con una barra
de colores y etiquetas. Muy útil para hacer comparaciones visuales.
¿Qué demuestra este código?
• Que es posible automatizar la recolección de información confiable (en este caso de
Wikipedia).
• Que R permite limpiar, organizar y analizar grandes volúmenes de datos rápidamente.
• Que se pueden obtener resultados visuales que hacen más comprensibles los datos,
incluso para públicos no técnicos.
Código completo:
ggplot(datos_resumen, aes(x = "", y = n, fill = nacionalidad)) +
geom_bar(stat = "identity", width = 1) +
coord_polar("y") +
theme_void() +
labs(title = "Nacionalidades indígenas del Ecuador",
fill = "Nacionalidad Indígena") +
geom_text(aes(label = etiqueta),
position = position_stack(vjust = 0.5),
size = 4, color = "black")
Línea por línea explicada:
ggplot(datos_resumen, aes(x = "", y = n, fill = nacionalidad))
• Se crea un gráfico usando el dataframe datos_resumen.
• x = "": se deja vacío porque no queremos una variable en el eje X (típico en gráficos de
pastel).
• y = n: es la cantidad o frecuencia de cada nacionalidad.
• fill = nacionalidad: cada porción del pastel tendrá un color distinto según la
nacionalidad.
geom_bar(stat = "identity", width = 1)
• Crea un gráfico de barras, pero con stat = "identity" usamos los valores reales (n) sin
contar nada automáticamente.
• width = 1 asegura que las barras sean de ancho completo (necesario para luego
convertirlas en pastel).
coord_polar("y")
• Esta línea convierte el gráfico de barras en un gráfico de pastel al aplicar coordenadas
polares en el eje Y.
theme_void()
• Quita todos los ejes, líneas, cuadrículas, etc., dejando solo el gráfico circular limpio.
labs(...)
• Añade un título al gráfico y un nombre a la leyenda del color:
o Título: "Nacionalidades indígenas del Ecuador"
o Leyenda: "Nacionalidad Indígena"
geom_text(...)
• Añade etiquetas de texto (porcentajes o nombres) dentro de cada porción del pastel.
• label = etiqueta: aquí debe haber una columna llamada etiqueta en
datos_resumen, que contenga los textos (como "25%").
• position_stack(vjust = 0.5): posiciona el texto en el centro de cada porción.
• size = 4, color = "black": ajusta el tamaño y el color del texto.
Resultado esperado:
Un gráfico circular en colores, con las nacionalidades indígenas como categorías, y etiquetas
mostrando el porcentaje que representa cada una.
4. RESULTADOS OBTENIDOS
4.1. Resultados e informe final
Hallazgos más relevantes
Tras implementar la solución de web scraping en R, se lograron extraer y organizar datos de
Wikipedia. Los principales hallazgos fueron:
1. Desigualdad en la disponibilidad de datos:
a. Algunas provincias como Pichincha, Guayas y Azuay cuentan con abundante
información actualizada.
b. Otras, como Sucumbíos o Pastaza, presentan vacíos importantes en cuanto a
indicadores sociales y económicos.
2. Heterogeneidad en las fuentes:
a. Las páginas web no siguen un estándar único, lo que implicó diseñar múltiples
enfoques para la extracción de datos (HTML estático, tablas dinámicas, JSON).
3. Principales indicadores recolectados:
a. Población por provincia
b. Nivel de educación
c. Acceso a servicios básicos (agua, internet, salud)
d. Tasa de empleo/desempleo
e. Representación indígena en los censos y registros
1. Estandarización de datos públicos:
a. Se recomienda a los entes gubernamentales y organizaciones sociales establecer
formatos comunes para publicar la información, lo cual facilitaría futuras
investigaciones y automatizaciones.
2. Ampliación de fuentes:
a. Incluir medios comunitarios, ONGs y registros académicos regionales puede
enriquecer los datos y evitar la centralización.
3. Continuidad del proyecto:
a. Proponer un repositorio abierto (por ejemplo, en GitHub) para que otros
investigadores, estudiantes o instituciones puedan reutilizar el código y mejorar el
scraping en el tiempo.
4. Aplicación en política pública:
a. Utilizar los datos recolectados para apoyar la toma de decisiones más inclusivas en
salud, educación y servicios básicos, especialmente en provincias menos visibilizadas.
5. CONCLUSIONES
Principales Hallazgos
El proyecto logró desarrollar con éxito una solución de web scraping en R para recolectar datos
públicos sobre las provincias del Ecuador, enfrentando y resolviendo los desafíos de acceder a
información dispersa, heterogénea y en muchos casos, poco estructurada. Entre los logros más
relevantes se destacan:
• La automatización de procesos que antes eran manuales y tediosos.
• La recolección de información clave sobre indicadores sociales, económicos y demográficos.
• La construcción de visualizaciones útiles para el análisis territorial y el diagnóstico local.
Impacto en la Formación Académica
Este proyecto ha sido una oportunidad valiosa para que los estudiantes:
• Apliquen conocimientos técnicos de programación en RStudio, enfocados en problemas
reales del entorno.
• Desarrollen competencias críticas como la investigación aplicada, el trabajo colaborativo y el
análisis ético de datos.
• Se acerquen a tecnologías actuales como el web scraping, ampliamente utilizadas en
periodismo de datos, inteligencia de negocios y ciencias sociales.
Además, fortalece el pensamiento crítico y el compromiso con el uso responsable de la información
pública.
Contribución al Instituto LENDAN
El éxito de este proyecto aporta directamente al posicionamiento del Instituto LENDAN como un
referente en innovación educativa, investigación aplicada y responsabilidad social. Los resultados
obtenidos:
• Visibilizan el talento y la preparación de sus estudiantes.
• Reflejan el compromiso del Instituto con el desarrollo de herramientas tecnológicas que
generen impacto social.
• Promueven una mejora continua, motivando nuevas líneas de investigación, alianzas
institucionales y proyectos que integren tecnología y contexto local.
6. REFERENCIAS BIBLIOGRÁFICAS
[Link]
7. ANEXOS
ELABORADO POR: REVISADO POR: APROBADO POR:
Fecha: 12 abril 2025 Fecha: Fecha:
Marco López
Tannia Miranda
Maythe Gonzaga
Firma: Firma: Firma:
………………………………… …………………………………. ………………………………….
. Nombre del docente ………………………………….
Nombre del estudiante DOCENTE DE LA MATERIA COORDINADOR DE CARRERA
ESTUDIANTE RESPONSABLE