Los datos se descargan de https://www.aduana.gov.py/?page_id=14523
Se utilizan los comandos de la libreria tidyr [@tidyverse]
import polars as pl
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt
# 1) Leer CSV con Polars
df = pl.read_csv(
r"G:/Mi unidad/Classroom/Big Data Sudameris/datosADUANASpy/2024_DICIEMBRE.csv",
infer_schema_length=1000
)
df
DESPACHO CIFRADO | OPERACION | DESTINACION | REGIMEN | OFICIALIZACION | CANCELACION | AÑO | MES | ADUANA | COTIZACION | MEDIO TRANSPORTE | CANAL | ITEM | PAIS ORIGEN | PAIS PROCEDENCIA/DESTINO | USO | UNIDAD MEDIDA ESTADISTICA | CANTIDAD ESTADISTICA | KILO NETO | KILO BRUTO | FOB DOLAR | FLETE DOLAR | SEGURO DOLAR | IMPONIBLE DOLAR | IMPONIBLE GS | AJUSTE A INCLUIR | AJUSTE A DEDUCIR | POSICION | RUBRO | DESC CAPITULO | DESC PARTIDA | DESC POSICION | MERCADERIA | MARCA ITEM | ACUERDO | NUMERO SUBITEM | CANTIDAD SUBITEM | PRECION UNITARIO SUBITEM | DESC SUBITEM | MARCA SUBITEM | DERECHO | ISC | SERVICIO | RENTA | IVA | OTROS | TOTAL |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
str | str | str | str | str | str | i64 | str | str | str | str | str | i64 | str | str | str | str | str | str | str | str | str | str | str | str | str | str | str | str | str | str | str | str | str | str | i64 | i64 | str | str | str | str | str | str | str | str | str | str |
"24DA000000611468" | "IMPORTACION" | "IC04" | "IMPORTACION A CONSUMO CON DOCU… | "09/12/2024" | "09/12/2024" | 2024 | "DICIEMBRE" | "PAKSA" | "7813,19" | "CAMION" | "V" | 4 | "BRASIL" | "BRASIL" | "NUEVO" | "KILOGRAMO" | "514,8" | "514,8" | "514,8" | "3162,51" | "99,88" | "31,63" | "3294,02" | "25736804,12" | ",0" | ",0" | "5208.29.00.000Q" | "MATERIAS TEXTILES (TEJIDOS)" | "CAPITULO 52 ALGODON" | "TEJIDOS DE ALGODON CON UN CONT… | "CAPITULO 52 ALGODON TEJIDOS D… | "LOS DEMAS TEJIDOS DETALLE SUB-… | null | "MERCOSUR" | 6 | 22 | "1,48" | "MTS. TEJIDOS TP 05754 RIVIERA… | "CIC" | ",0" | ",0" | "128684,0" | ",0" | "2586549,0" | "103462,0" | "2818695,0" |
"24DA000000611468" | "IMPORTACION" | "IC04" | "IMPORTACION A CONSUMO CON DOCU… | "09/12/2024" | "09/12/2024" | 2024 | "DICIEMBRE" | "PAKSA" | "7813,19" | "CAMION" | "V" | 4 | "BRASIL" | "BRASIL" | "NUEVO" | "KILOGRAMO" | "514,8" | "514,8" | "514,8" | "3162,51" | "99,88" | "31,63" | "3294,02" | "25736804,12" | ",0" | ",0" | "5208.29.00.000Q" | "MATERIAS TEXTILES (TEJIDOS)" | "CAPITULO 52 ALGODON" | "TEJIDOS DE ALGODON CON UN CONT… | "CAPITULO 52 ALGODON TEJIDOS D… | "LOS DEMAS TEJIDOS DETALLE SUB-… | null | "MERCOSUR" | 7 | 57 | "1,48" | "MTS. TEJIDOS TP 05849 OXFORD … | "CIC" | ",0" | ",0" | "128684,0" | ",0" | "2586549,0" | "103462,0" | "2818695,0" |
"24DA000000611468" | "IMPORTACION" | "IC04" | "IMPORTACION A CONSUMO CON DOCU… | "09/12/2024" | "09/12/2024" | 2024 | "DICIEMBRE" | "PAKSA" | "7813,19" | "CAMION" | "V" | 4 | "BRASIL" | "BRASIL" | "NUEVO" | "KILOGRAMO" | "514,8" | "514,8" | "514,8" | "3162,51" | "99,88" | "31,63" | "3294,02" | "25736804,12" | ",0" | ",0" | "5208.29.00.000Q" | "MATERIAS TEXTILES (TEJIDOS)" | "CAPITULO 52 ALGODON" | "TEJIDOS DE ALGODON CON UN CONT… | "CAPITULO 52 ALGODON TEJIDOS D… | "LOS DEMAS TEJIDOS DETALLE SUB-… | null | "MERCOSUR" | 8 | 31 | "1,48" | "MTS. TEJIDOS TP 05930 GALLE… | "CIC" | ",0" | ",0" | "128684,0" | ",0" | "2586549,0" | "103462,0" | "2818695,0" |
"24DA000000611468" | "IMPORTACION" | "IC04" | "IMPORTACION A CONSUMO CON DOCU… | "09/12/2024" | "09/12/2024" | 2024 | "DICIEMBRE" | "PAKSA" | "7813,19" | "CAMION" | "V" | 4 | "BRASIL" | "BRASIL" | "NUEVO" | "KILOGRAMO" | "514,8" | "514,8" | "514,8" | "3162,51" | "99,88" | "31,63" | "3294,02" | "25736804,12" | ",0" | ",0" | "5208.29.00.000Q" | "MATERIAS TEXTILES (TEJIDOS)" | "CAPITULO 52 ALGODON" | "TEJIDOS DE ALGODON CON UN CONT… | "CAPITULO 52 ALGODON TEJIDOS D… | "LOS DEMAS TEJIDOS DETALLE SUB-… | null | "MERCOSUR" | 9 | 15 | "1,48" | "MTS. TEJIDOS TP 07020 POINT" | "CIC" | ",0" | ",0" | "128684,0" | ",0" | "2586549,0" | "103462,0" | "2818695,0" |
"24DA000000611468" | "IMPORTACION" | "IC04" | "IMPORTACION A CONSUMO CON DOCU… | "09/12/2024" | "09/12/2024" | 2024 | "DICIEMBRE" | "PAKSA" | "7813,19" | "CAMION" | "V" | 4 | "BRASIL" | "BRASIL" | "NUEVO" | "KILOGRAMO" | "514,8" | "514,8" | "514,8" | "3162,51" | "99,88" | "31,63" | "3294,02" | "25736804,12" | ",0" | ",0" | "5208.29.00.000Q" | "MATERIAS TEXTILES (TEJIDOS)" | "CAPITULO 52 ALGODON" | "TEJIDOS DE ALGODON CON UN CONT… | "CAPITULO 52 ALGODON TEJIDOS D… | "LOS DEMAS TEJIDOS DETALLE SUB-… | null | "MERCOSUR" | 10 | 205 | "1,5" | "MTS. TEJIDOS TP 05571 M 437" | "CIC" | ",0" | ",0" | "128684,0" | ",0" | "2586549,0" | "103462,0" | "2818695,0" |
… | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … | … |
"24DA000000607070" | "EXPORTACION" | "EFC1" | "EXPORTACION COMPLEMENTARIA" | "10/12/2024" | "10/12/2024" | 2024 | "DICIEMBRE" | "ENCARNACION" | "7822,03" | "CAMION" | "V" | 3 | "ALEMANIA" | "ALEMANIA" | "NUEVO" | "UNIDAD" | "4,0" | "24,0" | "24,0" | "741,89" | "7,33" | ",0" | "748,37" | "5853798,21" | ",0" | ",0" | "8708.91.00.000C" | "REPUESTOS (AUTOPARTE)" | "CAPITULO 87 VEHICULOS AUTOMOVI… | "PARTES Y ACCESORIOS PARA VEHIC… | "CAPITULO 87 VEHICULOS AUTOMOVI… | "RADIADORES Y SUS PARTES DETALL… | null | "SIN ACUERDO" | null | 0 | ",0" | null | null | ",0" | ",0" | ",0" | ",0" | ",0" | ",0" | ",0" |
"24DA000000557263" | "EXPORTACION" | "EFC1" | "EXPORTACION COMPLEMENTARIA" | "02/12/2024" | "03/12/2024" | 2024 | "DICIEMBRE" | "CAMPESTRE S.A." | "7798,04" | "CAMION" | "V" | 1 | "PARAGUAY" | "BRASIL" | "NUEVO" | "KILOGRAMO" | "25998,5" | "25998,5" | "27647,11" | "203556,22" | ",0" | ",0" | "203756,96" | "1588904893,14" | ",0" | ",0" | "0201.30.00.000Z" | "CARNES Y DERIVADOS" | "CAPITULO 2CARNE Y DESPOJOS COM… | "CARNE DE ANIMALES DE LA ESPECI… | "CAPITULO 2CARNE Y DESPOJOS COM… | "CARNE BOVINA ENFRIADA DESHUESA… | null | "MERCOSUR" | null | 0 | ",0" | null | null | ",0" | ",0" | ",0" | ",0" | ",0" | ",0" | ",0" |
"24DA000000561671" | "EXPORTACION" | "EFC1" | "EXPORTACION COMPLEMENTARIA" | "29/11/2024" | "03/12/2024" | 2024 | "DICIEMBRE" | "PUERTO SECO BOREAL" | "7805,73" | "CAMION" | "R" | 2 | "PARAGUAY" | "URUGUAY" | "NUEVO" | "METRO CUBICO" | "35,79" | "23800,0" | "23800,0" | "15515,3" | "1523,29" | ",0" | "17038,59" | "132998633,12" | ",0" | ",0" | "4412.33.00.000X" | "MADERA" | "CAPITULO 44 MADERA, CARBON VEG… | "MADERA CONTRACHAPADA, MADERA C… | "CAPITULO 44 MADERA, CARBON VEG… | "MADERA CONTRACHAPADA, MADERA C… | null | "MERCOSUR" | null | 0 | ",0" | null | null | ",0" | ",0" | ",0" | ",0" | ",0" | ",0" | ",0" |
"24DA000000583235" | "EXPORTACION" | "EFC1" | "EXPORTACION COMPLEMENTARIA" | "16/12/2024" | "19/12/2024" | 2024 | "DICIEMBRE" | "CAMPESTRE S.A." | "7817,53" | "CAMION" | "V" | 2 | "PARAGUAY" | "BRASIL" | "NUEVO" | "UNIDAD" | "228480,0" | "4211,52" | "4711,52" | "20627,28" | ",0" | ",0" | "20627,28" | "161254380,22" | ",0" | ",0" | "3923.50.00.000C" | "PLASTICOS Y SUS MANUFACTURAS" | "CAPITULO 39 MATERIAS PLASTICAS… | "ARTICULOS PARA EL TRANSPORTE O… | "CAPITULO 39 MATERIAS PLASTICAS… | "TAPONES,TAPAS, CAPSULAS Y DEMA… | null | "MERCOSUR" | null | 0 | ",0" | null | null | ",0" | ",0" | ",0" | ",0" | ",0" | ",0" | ",0" |
"24DA000000607946" | "EXPORTACION" | "EFC1" | "EXPORTACION COMPLEMENTARIA" | "06/12/2024" | "06/12/2024" | 2024 | "DICIEMBRE" | "ENCARNACION" | "7825,79" | "CAMION" | "V" | 4 | "CHINA" | "URUGUAY" | "NUEVO" | "UNIDAD" | "2045,0" | "533,02" | "726,14" | "20710,11" | "944,02" | ",0" | "21654,13" | "169460674,02" | ",0" | ",0" | "9507.10.00.000E" | "JUGUETES" | "CAPITULO 95JUGUETES, JUEGOS Y … | "CA¿AS DE PESCAR, ANZUELOS Y DE… | "CAPITULO 95JUGUETES, JUEGOS Y … | "DETALLE SUBITEM" | null | "SIN ACUERDO" | null | 0 | ",0" | null | null | ",0" | ",0" | ",0" | ",0" | ",0" | ",0" | ",0" |
## ['DESPACHO CIFRADO', 'OPERACION', 'DESTINACION', 'REGIMEN', 'OFICIALIZACION', 'CANCELACION', 'AÑO', 'MES', 'ADUANA', 'COTIZACION', 'MEDIO TRANSPORTE', 'CANAL', 'ITEM', 'PAIS ORIGEN', 'PAIS PROCEDENCIA/DESTINO', 'USO', 'UNIDAD MEDIDA ESTADISTICA', 'CANTIDAD ESTADISTICA', 'KILO NETO', 'KILO BRUTO', 'FOB DOLAR', 'FLETE DOLAR', 'SEGURO DOLAR', 'IMPONIBLE DOLAR', 'IMPONIBLE GS', 'AJUSTE A INCLUIR', 'AJUSTE A DEDUCIR', 'POSICION ', 'RUBRO', 'DESC CAPITULO', 'DESC PARTIDA', 'DESC POSICION', 'MERCADERIA', 'MARCA ITEM', 'ACUERDO', 'NUMERO SUBITEM', 'CANTIDAD SUBITEM', 'PRECION UNITARIO SUBITEM', 'DESC SUBITEM', 'MARCA SUBITEM', 'DERECHO', 'ISC', 'SERVICIO', 'RENTA', 'IVA', 'OTROS', 'TOTAL']
# 2) Normalizar nombres de columna
mapping = {
col: (
col.strip().lower()
.replace("á","a").replace("é","e")
.replace("í","i").replace("ó","o")
.replace("ú","u").replace("ñ","n")
.replace(" ", "_").replace("/", "_")
)
for col in df.columns
}
df = df.rename(mapping)
# 3) Asegurar que 'ano' sea numérico y filtrar diciembre 2024
df = (
df
.with_columns(pl.col("ano").cast(pl.Int64))
.filter(
(pl.col("ano") == 2024) &
(pl.col("mes").str.to_uppercase() == "DICIEMBRE")
)
)
# 4) Seleccionar y limpiar las dos columnas de interés
df = (
df
.select([
pl.col("kilo_neto").alias("peso_kg"),
pl.col("fob_dolar").alias("valor_usd")
])
# 4a) Reemplazar coma decimal por punto y convertir a Float64
.with_columns([
pl.col("peso_kg")
.str.replace(",", ".")
.cast(pl.Float64)
.alias("peso_kg"),
pl.col("valor_usd")
.str.replace(",", ".")
.cast(pl.Float64)
.alias("valor_usd")
])
.drop_nulls()
)
# 5) Convertir a pandas para scikit-learn
pdf = df.to_pandas()
X = pdf[["peso_kg"]].values.reshape(-1, 1)
y = pdf["valor_usd"].values
# 6) Entrenar regresión lineal
model = LinearRegression().fit(X, y)
y_pred = model.predict(X)
# 7) Mostrar métricas
print(f"Pendiente: {model.coef_[0]:.4f}")
## Pendiente: 0.5182
## Intercepto: 35338.1400
## MSE: 57347486684.16
## R²: 0.0494
# 8) Gráfica de ajuste
plt.figure(figsize=(8,6))
plt.scatter(X, y, alpha=0.6, edgecolor='k', label='Datos')
plt.plot(X, y_pred, color='red', linewidth=2, label='Regresión')
plt.title('FOB vs. Peso Neto (Diciembre 2024)')
plt.xlabel('Peso Neto (kg)')
plt.ylabel('FOB (USD)')
plt.legend()
plt.grid(True)
plt.show()
Interpretación de los coeficientes Pendiente (coeficiente ≈ 0.5182) Indica que, en promedio, cada kilogramo adicional de mercancía se asocia con un incremento de 0.52 USD en el valor FOB.
Intercepto (≈ 35 338 USD) Representa el valor FOB “predicho” cuando el peso es cero. En la práctica no tiene un sentido físico directo, pero compensa el sesgo de la línea.
Calidad del ajuste MSE ≈ 5.73 × 10¹⁰ La media de los errores al cuadrado es alta, lo que refleja grandes discrepancias entre los valores reales y los predichos (especialmente cuando hay embarques muy pesados o de alto valor).
R² ≈ 0.0494 Solo el 4.9 % de la variación en FOB se explica por la variación en peso neto. Esto indica que peso neto por sí solo no es un buen predictor del valor FOB: hay otros factores (tipo de mercancía, país de origen, régimen aduanero, etc.) que influyen mucho más.