import geoquetzal as gq
# Listar todas las variables del dataset de hogares
gq.describe_hogares()
# Detalle de una variable específica
gq.describe_hogares("PCH4")
# Retorna etiqueta, tipo y valores codificados
# Variables de personas
gq.describe_personas("PCP12")
# Autoidentificación étnica: Maya, Garífuna, Xinka, Ladino...Ejemplos: Datos Censales
Esta sección muestra cómo explorar y analizar los microdatos del Censo 2018 sin necesidad de mapas. Para combinar datos censales con visualizaciones geográficas, consulte Censo + Mapas.
Explorar variables disponibles
Antes de analizar, use las funciones describe_* para conocer qué variables están disponibles y qué valores toman.
library(geoquetzal)
# Listar todas las variables del dataset de hogares
describe_hogares()
# Detalle de una variable específica
describe_hogares("PCH4")
# Retorna etiqueta, tipo y valores codificados
# Variables de personas
describe_personas("PCP12")
# Autoidentificación étnica: Maya, Garífuna, Xinka, Ladino...Acceso a servicios básicos por departamento
¿Qué porcentaje de hogares tiene acceso a electricidad de red en cada departamento?
import geoquetzal as gq
# Descargar hogares de todo Guatemala (~38 MB)
df = gq.hogares()
# PCH8 = tipo de alumbrado; 1 = Red de energía eléctrica
electricidad = (
df.groupby("departamento")["PCH8"]
.apply(lambda x: (x == 1).mean() * 100)
.round(1)
.reset_index(name="pct_electricidad")
.sort_values("pct_electricidad", ascending=False)
)
print(electricidad.to_string(index=False))library(geoquetzal)
library(dplyr)
# Descargar hogares de todo Guatemala (~38 MB)
df <- hogares()
# PCH8 = tipo de alumbrado; 1 = Red de energía eléctrica
electricidad <- df |>
group_by(departamento) |>
summarise(pct_electricidad = round(mean(PCH8 == 1, na.rm = TRUE) * 100, 1)) |>
arrange(desc(pct_electricidad))
print(electricidad)Autoidentificación étnica en Sacatepéquez
import geoquetzal as gq
df = gq.personas(departamento="Sacatepequez")
# PCP12: autoidentificación étnica
# 1=Maya, 2=Garífuna, 3=Xinka, 4=Afrodescendiente, 5=Ladino, 6=Extranjero
etnicidad = (
df["PCP12"]
.value_counts(normalize=True)
.mul(100)
.round(1)
.rename({1: "Maya", 2: "Garífuna", 3: "Xinka",
4: "Afrodescendiente", 5: "Ladino", 6: "Extranjero"})
)
print(etnicidad)library(geoquetzal)
library(dplyr)
df <- personas(departamento = "Sacatepequez")
# PCP12: autoidentificación étnica
# 1=Maya, 2=Garífuna, 3=Xinka, 4=Afrodescendiente, 5=Ladino, 6=Extranjero
etnicidad <- df |>
count(PCP12) |>
mutate(
pct = round(n / sum(n) * 100, 1),
etnia = recode(as.character(PCP12),
"1" = "Maya", "2" = "Garífuna", "3" = "Xinka",
"4" = "Afrodescendiente", "5" = "Ladino", "6" = "Extranjero")
) |>
select(etnia, pct) |>
arrange(desc(pct))
print(etnicidad)Lengua materna más hablada por municipio
import geoquetzal as gq
df = gq.personas(departamento="Huehuetenango")
idioma_dominante = (
df.groupby("MUNICIPIO")["PCP15"]
.agg(lambda x: int(x.dropna().mode()[0]) if not x.dropna().empty else None)
.reset_index(name="idioma_dominante")
)
valores = gq.describe_personas("PCP15")["valores"]
idioma_dominante["idioma_dominante"] = idioma_dominante["idioma_dominante"].map(valores)
print(idioma_dominante.to_string(index=False))library(geoquetzal)
library(dplyr)
df <- personas(departamento = "Huehuetenango")
# PCP15: idioma en que aprendió a hablar
# Mode por municipio = idioma más frecuente
idioma_dominante <- df |>
group_by(MUNICIPIO) |>
summarise(idioma_dominante = as.integer(names(which.max(table(PCP15))))) |>
left_join(
data.frame(
idioma_dominante = as.integer(names(describe_personas("PCP15")$valores)),
etiqueta = unlist(describe_personas("PCP15")$valores)
),
by = "idioma_dominante"
)
print(idioma_dominante)Años de estudio promedio por municipio
import geoquetzal as gq
import pandas as pd
df = gq.personas(departamento="Sacatepequez")
# ANEDUCA is stored as VARCHAR, cast before aggregating
df["ANEDUCA"] = pd.to_numeric(df["ANEDUCA"], errors="coerce")
aneduca = (
df.groupby("MUNICIPIO")["ANEDUCA"]
.mean()
.round(1)
.reset_index(name="aneduca_promedio")
.sort_values("aneduca_promedio", ascending=False)
)
print(aneduca.to_string(index=False))library(geoquetzal)
library(dplyr)
df <- personas(departamento = "Sacatepequez")
# ANEDUCA: años de estudio (variable derivada, numérica)
# Se almacena como character en los datos — convertir antes de calcular
aneduca <- df |>
mutate(ANEDUCA = as.numeric(ANEDUCA)) |>
group_by(MUNICIPIO) |>
summarise(aneduca_promedio = round(mean(ANEDUCA, na.rm = TRUE), 1)) |>
arrange(desc(aneduca_promedio))
print(aneduca)Acceso a tecnología — brecha digital
¿Cuántos hogares tienen computadora e internet en Quiché?
import geoquetzal as gq
import pandas as pd
df = gq.hogares(departamento="Quiche")
# PCH9_H=computadora, PCH9_I=internet, PCH9_M=carro (1=Sí, 2=No)
tecnologia = pd.DataFrame({
"Indicador": ["Computadora", "Internet", "Carro"],
"% hogares": [
(df["PCH9_H"] == 1).mean() * 100,
(df["PCH9_I"] == 1).mean() * 100,
(df["PCH9_M"] == 1).mean() * 100,
]
}).round(1)
print(tecnologia.to_string(index=False))library(geoquetzal)
df <- hogares(departamento = "Quiche")
# PCH9_H=computadora, PCH9_I=internet, PCH9_M=carro (1=Sí, 2=No)
tecnologia <- data.frame(
Indicador = c("Computadora", "Internet", "Carro"),
pct_hogares = round(c(
mean(df$PCH9_H == 1, na.rm = TRUE) * 100,
mean(df$PCH9_I == 1, na.rm = TRUE) * 100,
mean(df$PCH9_M == 1, na.rm = TRUE) * 100
), 1)
)
print(tecnologia)Datos de lugares poblados
Los datos pre-agregados de lugares poblados permiten análisis sub-municipales sin necesidad de procesar los microdatos.
import geoquetzal as gq
# Cargar indicadores de Antigua Guatemala
lp = gq.lugares_poblados(municipio="Antigua Guatemala")
# Ver columnas disponibles
print(lp.columns.tolist())
# Calcular % de hogares con internet por lugar poblado
lp["pct_internet"] = (
lp["pch9_i_si"] / (lp["pch9_i_si"] + lp["pch9_i_no"]) * 100
).round(1)
# Top 5 lugares con más acceso a internet
print(
lp[["nombre", "poblacion_total", "pct_internet"]]
.sort_values("pct_internet", ascending=False)
.head(5)
.to_string(index=False)
)
# Consultar qué significa una columna
gq.describe_lugares_poblados("pch9_i_si")
# {'variable': 'pch9_i_si',
# 'etiqueta': 'Conteo: tiene internet',
# 'tipo': 'equipamiento',
# 'fuente': 'hogar'}library(geoquetzal)
library(dplyr)
# Cargar indicadores de Antigua Guatemala
lp <- lugares_poblados(municipio = "Antigua Guatemala")
# Ver columnas disponibles
names(lp)
# Calcular % de hogares con internet por lugar poblado
lp$pct_internet <- round(
lp$pch9_i_si / (lp$pch9_i_si + lp$pch9_i_no) * 100,
1
)
# Top 5 lugares con más acceso a internet
lp |>
select(nombre, poblacion_total, pct_internet) |>
arrange(desc(pct_internet)) |>
head(5)
# Consultar qué significa una columna
describe_lugares_poblados("pch9_i_si")
# $variable: "pch9_i_si"
# $etiqueta: "Conteo: tiene internet"
# $tipo: "equipamiento"
# $fuente: "hogar"