GAA1104 · Big Data e Inteligencia de Negocios · Clase 00

Colab, en 40 minutos y sin instalar nada

Sabes qué es una celda, en qué orden se corren, dónde viven los archivos, cómo se sube uno, cómo se baja el resultado y qué hacer cuando algo se rompe. Y ya consultaste 6.000 líneas de facturas —sintéticas, construidas para el curso— sin haber instalado nada.

El notebook de esta clase: https://gaa1104.vercel.app/notebooks/clase-00.ipynb

Ing. en Administración · mención Finanzas · Prof. Tomás Fernández

Clase 00 · el gráfico de hoy

Ninguno todavía

Hoy se lee una tabla. El primer gráfico llega en la clase 3, y hay una razón: un gráfico que no sabes de dónde salió es una decoración.

La forma la decide el trabajo que hace el dato —magnitud, identidad, polaridad, cambio en el tiempo, distribución—, no el gusto. Regla del curso: un solo eje.

Clase 00 · lo que vamos a hacer, en orden
  1. Qué es esto que estás mirando
  2. La regla que causa el 90 % de los problemas
  3. Dejar el curso listo
  4. Qué hay cargado
  5. Tu primera consulta
  6. Los archivos: dónde viven y cómo entran y salen
  7. Datos del mundo real, en vivo
  8. Cuando algo se rompe
  9. Cómo se entrega
  10. 🎫 Lo que te llevas · tu ticket de salida
Paso 1 · Qué es esto que estás mirando

Un notebook es una hoja de trabajo que mezcla dos cosas:

Tipo de celdaQué haceCómo la reconoces
TextoExplica. No se ejecutaEs lo que estás leyendo
CódigoSe ejecuta y muestra un resultado debajoTiene un ▶ a la izquierda
Paso 1 · Qué es esto que estás mirando

El código no corre en tu computador: corre en un computador de Google que te prestan gratis mientras lo usas. Por eso da lo mismo si tu notebook es viejo, si tienes Mac o si el laboratorio de Duoc no te deja instalar nada.

Para correr una celda: haz clic en ella y aprieta Shift + Enter.

Ése es el 90 % de lo que hay que saber. Prueba con la de abajo.

# Tu primera celda. Shift + Enter.
2 + 2
Paso 1 · Qué es esto que estás mirando

Salió un 4 debajo, y a la izquierda apareció [1]. Ese número es el orden en que corriste las celdas, y va a ser importante en un minuto.

Paso 2 · La regla que causa el 90 % de los problemas

Las celdas comparten memoria. Lo que defines en una, existe en las siguientes. Por eso el orden importa, y el orden no es el que ves en pantalla: es el orden en que las corriste.

🔨 Actividad — Rompe el orden y arréglalo

Entregas: nada, pero no sigas hasta que te haya pasado. 3 minutos.

Paso 2 · La regla que causa el 90 % de los problemas
  1. Corre primero la segunda celda, sin haber corrido la primera. Python te va a decir name 'margen_bruto' is not defined. Ése es el error que más te va a pasar este semestre, y ahora ya sabes cómo se ve.
  2. Ahora corre la primera y después la segunda. Fíjate en el número [n] de la izquierda: ése es el orden real.
  3. Y arréglalo como se arregla siempre: Entorno de ejecución → Reiniciar y ejecutar todo.
Paso 2 · La regla que causa el 90 % de los problemas
margen_bruto = 0.2459     # 24,59 %  ← el margen real de nuestro caso
costo_capital = 0.12      # 12 % anual
# Esta celda usa lo que definió la anterior. Si la corres sin haber corrido
# la de arriba, Python dice "name 'margen_bruto' is not defined".
print(f"Margen bruto: {margen_bruto:.2%}")
print(f"Costo de capital: {costo_capital:.2%}")
print(f"Diferencia: {margen_bruto - costo_capital:.2%}")
Paso 2 · La regla que causa el 90 % de los problemas
Cuando te pierdas —y te vas a perder, a todos nos pasa— el arreglo es
siempre el mismo: Entorno de ejecución → Reiniciar y ejecutar todo. Eso
borra la memoria y corre el notebook completo de arriba abajo, que es como
tiene que quedar antes de entregarlo.

Esto no es un detalle de forma: es criterio de corrección. Un notebook que
sólo funciona en tu pantalla, con celdas corridas en desorden, no funciona. El
que corrige lo abre limpio.
Paso 3 · Dejar el curso listo

Ahora la celda de verdad. Es la misma en todos los notebooks del semestre y va siempre primero. Hace tres cosas:

  1. Instala DuckDB, el motor de base de datos del curso (unos 15 segundos).
  2. Baja gaa1104.py, que es el arranque que preparó el profesor.
  3. Deja ocho tablas cargadas con los datos del ramo.

Córrela. La primera vez demora; después es instantánea.

Paso 3 · Dejar el curso listo
%pip -q install duckdb
%matplotlib inline
import os, urllib.request
if not os.path.exists("gaa1104.py"):          # si ya está, no se vuelve a bajar
    urllib.request.urlretrieve(
        "https://gaa1104.vercel.app/notebooks/gaa1104.py", "gaa1104.py")

import gaa1104 as g
bd = g.arrancar()
D = str(bd.carpeta)   # la carpeta donde quedaron los datos
Paso 3 · Dejar el curso listo

Si dice «8 tablas cargadas, todas con el número de filas esperado», ya está.

Si dice «OJO — algo no calza», avísale al profesor antes de seguir: el arranque comprueba que cada tabla traiga las filas que corresponde, justamente para que te enteres ahora y no en medio de una evaluación.

Paso 4 · Qué hay cargado

Antes de consultar nada, mira qué tienes. Esto es oficio, no trámite: nadie consulta una base que no sabe qué contiene.

bd.tablas()

Ocho tablas. La que vas a usar casi todo el semestre es ventas: el libro de ventas de Austral Distribución SpA, 6.000 líneas de factura.

Cuando no te acuerdes de cómo se llama una columna —te va a pasar siempre— no adivines:

Paso 4 · Qué hay cargado
bd.columnas("ventas")
bd.ejemplo("ventas", 5)
Paso 5 · Tu primera consulta

Ahora sí. Esto es SQL, y es el idioma del curso desde la clase 2.

👀 Se mira — la consulta viene escrita. Córrela y quédate con el par de números que devuelve: los vas a necesitar en el ticket.

La pregunta: ¿cuántas líneas hay, y en cuántas facturas?

Paso 5 · Tu primera consulta
bd.sql("""
SELECT COUNT(*)                       AS lineas,
       COUNT(DISTINCT numero_factura) AS facturas
FROM ventas
""")

6.000 líneas en 2.951 facturas. Divide: 2,03 líneas por factura.

Paso 5 · Tu primera consulta

Guárdate ese número, porque explica la mitad de los errores del semestre. Una factura de tres productos ocupa tres líneas, y el descuento de esa factura está escrito en las tres. Sumar la columna de descuento cuenta cada descuento más de dos veces.

Ésa es la trampa insignia del curso y se abre completa en la clase 9. Hoy sólo
hay que saber que está ahí.
Paso 6 · Los archivos: dónde viven y cómo entran y salen

A la izquierda hay un icono de carpeta. Ábrelo: eso es el disco de la máquina que Google te prestó.

Lo que tienes que saber, en tres líneas:

Paso 6 · Los archivos: dónde viven y cómo entran y salen
Paso 6 · Los archivos: dónde viven y cómo entran y salen

Cuando escribas un resultado, va a salidas/, nunca junto al dato original. Ésa es la primera regla de higiene del curso: el dato de origen no se toca jamás.

🔨 Actividad — Baja tu primer resultado

Entregas: el archivo mi_primera_salida.csv bajado a tu computador. 3 minutos.

Paso 6 · Los archivos: dónde viven y cómo entran y salen

Corre la celda de abajo. Después abre el panel de archivos (el icono de carpeta, a la izquierda), busca la carpeta salidas/ que acaba de aparecer, y baja el CSV con los tres puntos → Descargar. Ese ida y vuelta —el dato entra, el resultado sale— es todo lo que necesitas saber de archivos en Colab.

Paso 6 · Los archivos: dónde viven y cómo entran y salen
# 🔨 ACTIVIDAD · córrela, y después baja el CSV desde el panel de archivos.
ruta = bd.guardar("""
SELECT segmento,
       COUNT(DISTINCT numero_factura)      AS facturas,
       ROUND(SUM(cantidad * precio_unitario)) AS venta_bruta
FROM ventas
GROUP BY segmento
ORDER BY venta_bruta DESC
""", "mi_primera_salida")

# Y para leerlo de vuelta:
import pandas as pd
pd.read_csv(ruta).head(10)
Paso 6 · Los archivos: dónde viven y cómo entran y salen

Mira el panel de archivos: apareció la carpeta salidas/ con tu CSV adentro. Para bajarlo a tu computador: los tres puntos al lado del archivo → Descargar.

Ojo con lo que acabas de ver. La consulta dice GROUP BY segmento y
devolvió más filas de las que esperarías para una empresa con pocos
segmentos. No es un error de la consulta. Es el archivo, que escribe el mismo
segmento de varias formas. Eso se ataca en la clase 3.
Paso 6 · Los archivos: dónde viven y cómo entran y salen

🔨 Actividad — Sube un archivo tú

Bajar ya lo hiciste. Falta el camino de vuelta, que vas a necesitar en la clase 12: ahí el archivo oficial de la asignatura lo bajas de klearning y lo subes acá a mano. Practícalo hoy, con algo que no importa si sale mal.

Paso 6 · Los archivos: dónde viven y cómo entran y salen
  1. Abre <https://gaa1104.vercel.app/descargas/> y baja ventas_extracto.csv a tu computador.
  2. Vuelve acá. En el panel de archivos (el icono de carpeta, a la izquierda), el botón de subir es la hoja con la flecha hacia arriba, arriba del todo.
  3. Elige el archivo. Cuando termine, tiene que aparecer en la lista como ventas_extracto.csv.
  4. Corre la celda de abajo para comprobar que llegó entero.
Paso 6 · Los archivos: dónde viven y cómo entran y salen
Se borra al desconectarse. Lo que subes vive en la sesión, no en tu cuenta.
Si el entorno se reinicia, hay que subirlo de nuevo. Por eso el curso baja casi
todo por código: subir a mano es para lo que no tiene URL pública, como el
archivo de la institución.
Paso 6 · Los archivos: dónde viven y cómo entran y salen
# 🔨 ACTIVIDAD · corre esto DESPUÉS de subir el archivo.
import os
if os.path.exists("ventas_extracto.csv"):
    subido = pd.read_csv("ventas_extracto.csv")
    print(f"llegó: {len(subido):,} filas × {len(subido.columns)} columnas".replace(",", "."))
    print("columnas:", ", ".join(subido.columns))
else:
    print("todavía no está. Súbelo con el panel de archivos y vuelve a correr esta celda.")
Paso 7 · Datos del mundo real, en vivo

👀 Se mira — todo este bloque viene resuelto: es una demostración de que el dato público entra al notebook sin que tú tengas que bajar nada a mano.

El curso no trabaja sólo con el caso de la empresa. También usa datos públicos de verdad, y hay dos maneras de traerlos.

La primera: una API. Le pides el dato a un servidor y te contesta al instante. El Banco Mundial no cobra ni pide llave.

Paso 7 · Datos del mundo real, en vivo
# PIB per cápita en dólares constantes, Chile y sus vecinos
pib = bd.mundial("NY.GDP.PCAP.KD", "CHL;PER;COL;MEX", desde=2015)
pib.pivot(index="year", columns="pais", values="valor").round(0)

La segunda: un archivo publicado. No todo tiene API. A veces la fuente publica una planilla y hay que bajarla, mirarla y entenderla antes de usarla.

El curso usa dos paneles académicos, ya filtrados por el profesor:

Paso 7 · Datos del mundo real, en vivo
TablaQué esPara qué sirve
macroGlobal Macro Data — 239 países, 1960–2030, 31 variablesInflación, tasas, deuda, crisis
paisesPenn World Table 10.0 — comparables por paridad de poder de compraProductividad, horas trabajadas, capital humano
Paso 7 · Datos del mundo real, en vivo

Cita las dos por su nombre cada vez que uses una. De dónde salió el dato es parte del dato.

Paso 7 · Datos del mundo real, en vivo
bd.macro()

bd.sql("""
SELECT year,
       ROUND(infl, 1)        AS inflacion_pct,
       ROUND(cbrate, 2)      AS tasa_politica_monetaria,
       ROUND(govdebt_GDP, 1) AS deuda_pct_pib
FROM macro
WHERE ISO3 = 'CHL' AND year BETWEEN 2019 AND 2024
ORDER BY year
""")
Paso 7 · Datos del mundo real, en vivo

Léelo despacio, porque es el ramo entero en una tabla:

Paso 7 · Datos del mundo real, en vivo

Si tu empresa tomó un crédito a tasa variable en 2020, en 2022 estaba pagando veinte veces la tasa. Eso no es macroeconomía de libro: es la línea de gastos financieros del estado de resultados que vas a mirar en la clase 19.

Esto es lo que hace el curso: el dato de la empresa y el dato del país en
la misma pantalla, porque las decisiones se toman con los dos.
Paso 8 · Cuando algo se rompe
Lo que vesQué pasóQué haces
name 'bd' is not definedNo corriste la celda de arranqueAnda arriba y córrela
Table with name X does not existLa tabla no está cargadabd.tablas(). Si es ven o fac, son archivos de Duoc: bd.oficial(...)
Binder Error … columnEscribiste mal una columnabd.columnas("ventas") te da los nombres exactos
syntax errorError de escritura, no un número maloUna coma de más antes del FROM, o un paréntesis sin cerrar
Todo raro después de probar muchoMemoria suciaReiniciar y ejecutar todo
No baja los datosTu red bloquea el dominioBaja los CSV de /descargas/ y súbelos con el panel
Paso 8 · Cuando algo se rompe

Si Colab se cae el día de la clase, el curso sigue. Existe consola-sql.py, que corre en cualquier computador, sin instalar nada y sin internet. El profesor la reparte. Nunca vas a quedarte sin poder trabajar porque una plataforma de otro se cayó.

Paso 9 · Cómo se entrega
  1. Archivo → Descargar → Descargar .ipynb
  2. Se sube a klearning con el nombre que pida el enunciado.
  3. Antes de entregar: Entorno de ejecución → Reiniciar y ejecutar todo, y revisa que corra de principio a fin sin un solo error.
  4. Los anexos obligatorios —declaración de uso de IA y coevaluación— van dentro del mismo notebook, en celdas de texto al final.
🎫 Lo que te llevas · tu ticket de salida

Responde en la celda de abajo, y después haz los cuatro pasos de arriba. Esta clase no tiene nota, pero el hábito sí: así se entrega todo el semestre.

a) ¿Cuál es la diferencia entre una celda de texto y una de código? b) ¿Por qué importa el orden en que corres las celdas? c) La tabla ventas tiene 6.000 líneas en 2.951 facturas. ¿Por qué eso hace peligroso sumar la columna de descuento? d) Del 1 al 5, ¿cuán seguro estás de poder abrir un notebook y dejarlo corriendo, solo?

🎫 Lo que te llevas · tu ticket de salida
respuesta_a = ""   # texto vs. código
respuesta_b = ""   # por qué importa el orden
respuesta_c = ""   # por qué sumar la columna de descuento es peligroso
seguridad_d = 0    # del 1 al 5

print("Listo. Archivo → Descargar → .ipynb, y súbelo a klearning.")
Clase 00 · cierre

Ticket de salida

Tres minutos. No suma nota. Sirve para armar la apertura de la próxima clase.

El notebook de esta clase:
https://gaa1104.vercel.app/notebooks/clase-00.ipynb

← → avanzar · P proyector · F pantalla completa
GAA1104 · C00 · Colab, en 40 minutos y sin instalar nada 20:30 1 / 1