dd.tabla#
- dane_data.tabla(df, por=None, variable=None, estadistico='total', peso='fex')[fuente]#
Tabla ponderada de cualquier variable.
Expande la muestra con el factor de expansión y, si hay varios meses de un mismo año, convierte los totales en promedios mensuales, como el DANE. Sirve para la GEIH y para cualquier otra tabla con pesos.
- Parámetros:
df (DataFrame) – Microdatos, una fila por persona (por ejemplo, de
dd.geih.load).por (str | Iterable[str] | None) – Variable o lista de variables que definen los grupos. Sin
por, una sola fila con tododf.variable (str | None) – Variable numérica para
"media"y"mediana". Las filas donde está vacía se descartan también con"total"y"porcentaje".estadistico (str) –
"total": personas (promedio mensual) en cada grupo."porcentaje": distribución de la última variable depordentro de las demás; por ejemplo, conpor=["anio", "sexo"], el porcentaje de cada sexo en cada año."media"o"mediana": devariable, ponderadas, en cada grupo.peso (str | None) – Columna del factor de expansión.
Nonecuenta observaciones sin expandir.
- Devuelve:
Una fila por grupo con las columnas de
por, el estadístico (total,porcentaje,mediaomediana;"porcentaje"trae tambiéntotal) yn_muestra, el número de observaciones sin expandir.- Tipo del valor devuelto:
DataFrame
- Muestra:
ValueError – Si
estadisticono es uno de los cuatro, o faltavariablepara la media o la mediana.
Ver también
dane_data.geih.serie_tablaLa misma tabla para muchos años, sin cargarlos en memoria.
weighted_meanMedia ponderada de una sola serie.
weighted_quantileCuantil ponderado de una sola serie.
Notas
Con pocas observaciones las cifras expandidas no son confiables: revise
n_muestray desconfíe de los grupos con menos de unas 30 a 100 personas.La mediana es la de
weighted_quantile(el menor valor que acumula la mitad del peso).Ejemplos
Dos meses de una muestra con seis personas. Cada total es el promedio de los dos meses:
>>> import pandas as pd >>> import dane_data as dd >>> df = pd.DataFrame({ ... "anio": 2024, "mes": [1, 1, 1, 2, 2, 2], ... "sexo": ["Mujer", "Hombre", "Mujer", "Mujer", "Hombre", "Hombre"], ... "ingreso": [1.2, 2.0, 1.5, 1.3, 2.2, 1.8], ... "fex": [100.0, 150.0, 50.0, 120.0, 90.0, 110.0], ... }) >>> dd.tabla(df, por="sexo") sexo total n_muestra 0 Hombre 175.0 3 1 Mujer 135.0 3 >>> dd.tabla(df, por="sexo", estadistico="porcentaje").round(1) sexo total n_muestra porcentaje 0 Hombre 175.0 3 56.5 1 Mujer 135.0 3 43.5 >>> dd.tabla(df, por="sexo", variable="ingreso", estadistico="mediana") sexo mediana n_muestra 0 Hombre 2.0 3 1 Mujer 1.3 3
Con la GEIH:
>>> df = dd.geih.load(2024) >>> dd.tabla(df, por=["anio", "nivel_educativo"], estadistico="porcentaje") >>> dd.tabla(df[df.ocupado == 1], por="sexo", variable="ingreso_laboral", estadistico="mediana")