Capítulo 1 de 14 8 secciones 14 min

Instalar Python y correr lo primero

Las tres formas de ejecutar Python, cuál te conviene hoy, y cómo leer el primer error sin cerrar la laptop.

Para aprender Python aplicado a datos no hace falta instalar nada: Google Colab corre Python en el navegador, gratis, con pandas y matplotlib ya puestos. La instalación local sirve cuando necesitas leer archivos de tu computadora o programar algo que corra solo, y el error que más semanas arruina es olvidar la casilla "Add Python to PATH" en Windows.

Hola! Empecemos por donde de verdad se cae la gente

Te voy a contar algo antes de la primera línea de código.

Yo he visto abandonar Python a gente que habría programado muy bien. Y casi nunca fue por el bucle for, ni por los diccionarios, ni por nada difícil.

Fue por una tarde entera peleando con una instalación que no funcionó. Un mensaje de python no se reconoce como comando que nadie explicó. Y esa sensación fea de "esto no es para mí" 😔

Así que este capítulo va de eso. Vamos a hacer dos cosas, en este orden:

  • 🚀 Escribir tu primera línea de Python hoy, sin instalar nada.
  • 💻 Instalar Python en tu máquina entendiendo qué hace cada paso, para cuando lo necesites de verdad.

Tranqui, que no pasa nada. Vamos juntas.

Ruta de Python para análisis de datos: empezar en Colab, sintaxis, control de flujo, funciones, archivos, pandas y por último NumPy y matplotlib. Instalar en local desde el principio es donde abandona la mayoría.
La única decisión de esta ruta que cambia el resultado es la primera. Empezar instalando Python en tu máquina es donde se pierde la gente, y no por dificultad del lenguaje.

Las tres formas de correr Python, y cuál te toca a ti

Python se ejecuta de tres maneras, y confundirlas es responsable de buena parte del sufrimiento del principio.

FormaQué esCuándo la quieres
Un cuaderno (Colab, Jupyter)Celdas que se ejecutan de a una y muestran el resultado debajoAnalizar datos, explorar, aprender. Es el 90% de lo que vas a hacer
Un archivo .pyUn programa entero que corre de principio a finAlgo que tiene que funcionar solo: un proceso programado, un script que otra persona ejecuta
El intérpreteUna consola donde escribes una línea y te respondeComprobar una duda de dos segundos. Nada más

Para datos, el cuaderno es el formato correcto. No es un atajo para principiantes, ojo, es lo que usamos en proyectos reales.

La razón es simple: analizar datos es un ida y vuelta. Miras, pruebas, corriges, vuelves a mirar. Un archivo .py te obliga a ejecutar todo desde cero cada vez, y cuando cargar el archivo se demora cuarenta segundos, eso te cambia la forma de trabajar para peor.

Empezar hoy mismo: Google Colab

Colab es Python corriendo en una computadora de Google, dentro de tu navegador. Gratis, sin instalar nada en tu máquina, y ya viene con pandas, numpy y matplotlib puestos, que son las tres librerías de este libro 🌸

Cuatro pasos y no hay un quinto:

  1. Entra a colab.research.google.com con tu cuenta de Google.
  2. Archivo, y después Nuevo cuaderno.
  3. Escribe en la celda gris que aparece.
  4. Pulsa Shift + Enter para ejecutarla.

Ese atajo lo vas a usar toda tu vida con datos, así que grabémoslo desde ya: Shift + Enter ejecuta la celda y salta a la siguiente. Si solo pulsas Enter haces un salto de línea dentro de la celda, que también hace falta.

Tu primera celda:

print('Hola, esto ya es Python')
Hola, esto ya es Python

Listo. Eso ya fue programar, para que veas 🎉

print es la instrucción que muestra algo en pantalla, y va a ser tu herramienta de diagnóstico durante todo el libro. Cuando algo no funcione, la respuesta casi siempre empieza por imprimir lo que hay dentro de una variable para ver qué es realmente, en vez de lo que tú creías que era.

Ahora mira esto, porque después confunde a mucha gente:

2 + 2
4

Salió 4 sin haber escrito print. Eso es una cortesía del cuaderno: te muestra el valor de la última línea de la celda.

En un archivo .py esa misma línea no muestra nada, porque calcula 4 y lo bota. Por eso pasa que un script que funcionaba lindo en el cuaderno de repente "no imprime nada": faltaban los print, y el cuaderno los estaba poniendo por ti.

Instalar Python en tu máquina

Colab tiene dos límites reales. No lee los archivos de tu computadora sin que los subas a mano, y la sesión se apaga sola tras un rato sin usarla, así que no sirve para nada que tenga que correr solo.

Cuando choques con alguno de los dos, toca instalar. Hay dos caminos, y la elección importa menos de lo que dicen las peleas de internet.

  • 🐍 python.org. Python y nada más. Las librerías las instalas tú, una por una. Es lo que te recomiendo si este es tu primer lenguaje: hay menos piezas, o sea menos cosas que puedan romperse sin que sepas por qué.
  • 📦 Anaconda. Python con doscientas librerías científicas ya instaladas y su propio gestor de entornos. Te ahorra instalar cada librería y a cambio ocupa varios gigas y agrega un sistema paralelo al de Python, que es justo lo que después produce el clásico "tengo dos Python y no sé cuál está usando mi editor".

Windows: la casilla que arruina la semana

Descarga el instalador de python.org/downloads y, en la primera pantalla, antes de tocar nada:

Marca la casilla que dice "Add python.exe to PATH". Está abajo, es chiquita, y viene desmarcada.

Si no la marcas, Python queda instalado y funcionando perfecto, pero la terminal no sabe dónde está. Entonces cada comando te va a responder 'python' no se reconoce como un comando interno o externo.

Es el error más común del primer día y el que más gente convence de que "no me funciona la instalación", cuando la instalación está impecable y lo único que falta es una casilla 🙃

Si ya te pasó: vuelve a abrir el instalador, elige Modify, y ahí la puedes marcar sin desinstalar nada.

Mac y Linux: ya tienes uno, y no es el tuyo

Tu sistema ya trae un Python que usa para sus propias cosas. No lo toques: si lo actualizas o le instalas librerías encima puedes romper utilidades del sistema. Instala el tuyo aparte, desde python.org o con Homebrew (brew install python).

El detalle que confunde en Mac es que python a secas puede apuntar al viejo del sistema. Usa python3 y pip3 siempre y te ahorras la pregunta.

Comprobar que quedó bien

Abre una terminal nueva (importa que sea nueva: las que ya estaban abiertas no se enteran del PATH) y escribe:

# En Windows
python --version

# En Mac y Linux
python3 --version

Te tiene que responder algo como Python 3.12.1. Si responde eso, ya está: tienes Python 💜

Si responde que no reconoce el comando, es la casilla del PATH y no otra cosa.

Sobre las versiones, para que no te preocupes: cualquier 3.9 o superior te sirve para todo este libro. Lo único que no sirve es Python 2, que se dejó de mantener en 2020 y que todavía aparece en tutoriales viejos. Se reconoce de un vistazo, porque ahí print se escribía sin paréntesis.

Instalar librerías

Una librería es código que escribió otra persona y que tú puedes usar. Se instalan con pip, desde la terminal y no desde dentro de Python:

# Las tres de este libro, de un tiron
pip install pandas matplotlib openpyxl

numpy no está en la lista porque pandas lo instala solo: depende de él. Y openpyxl es el que permite leer archivos de Excel, que en un trabajo real es la mitad de lo que te van a mandar 📊

En Colab, si alguna vez falta algo, se instala en una celda poniendo un signo de admiración delante. Eso le dice al cuaderno "esto no es Python, es un comando de terminal":

!pip install openpyxl

Cómo leer un error, que es la habilidad que más te va a rendir

Vas a ver muchos errores. Muchos. Y no significa que lo estés haciendo mal: es la forma normal de programar.

La diferencia entre quien avanza y quien se frustra es solo que una aprendió a leerlos. Así que vamos a provocar uno a propósito.

numeros = [10, 20, 30]
print(numeros[7])
IndexError: list index out of range

En una consola de verdad ese error viene precedido de varias líneas que empiezan con Traceback (most recent call last) y que la primera vez asustan un poco. Se leen con tres reglas:

  1. De abajo hacia arriba. La última línea es qué pasó. Todo lo de arriba es el camino que se recorrió para llegar ahí.
  2. La última línea tiene dos partes: el tipo de error (IndexError) y la explicación (list index out of range). El tipo es lo que buscas en internet; la explicación suele bastar.
  3. Busca tu archivo en el camino. Si el traceback pasa por archivos de pandas o de numpy, ignóralos. La línea que te importa es la última que menciona tu código, porque el error casi siempre está ahí.

Ese IndexError dice que pediste la posición 7 de una lista que tiene tres elementos. Y trae escondida una lección que vas a necesitar en el capítulo 3: las posiciones empiezan en 0, así que una lista de tres tiene las posiciones 0, 1 y 2, y la 3 ya no existe.

Los cuatro errores del primer día

Estos cuatro son casi todos los que vas a ver en tu primera semana. Te los dejo con el mensaje exacto para que los reconozcas de un vistazo y sigas adelante.

1. Te faltó cerrar algo.

print('hola)
SyntaxError: unterminated string literal (detected at line 1)

Falta la comilla de cierre. SyntaxError siempre significa que Python no pudo ni entender lo que escribiste, así que ni lo intentó.

Mira la línea que señala y también la anterior: un paréntesis sin cerrar en la línea 8 se denuncia en la 9.

2. Escribiste mal un nombre.

ciudad = 'Arequipa'
print(Ciudad)
NameError: name 'Ciudad' is not defined

Python distingue mayúsculas de minúsculas: ciudad y Ciudad son dos cosas distintas. Este error también aparece cuando usas una variable que definiste en otra celda que todavía no ejecutaste, que es la trampa clásica del cuaderno.

3. La sangría.

for n in [1, 2, 3]:
print(n)
IndentationError: expected an indented block after 'for' statement on line 1

En Python los espacios de la izquierda no son estética, son sintaxis: son lo que dice qué está dentro del for y qué está fuera. Cuatro espacios, siempre cuatro, y nunca mezclados con tabulaciones. Lo vemos con calma en el capítulo 4.

4. La librería no está instalada.

import pandas
ModuleNotFoundError: No module named 'pandas'

Falta instalarla (pip install pandas) o la instalaste en un Python distinto del que estás usando, que es justo el problema que resuelven los entornos virtuales del capítulo 7.

Comentarios: notas para ti dentro de tres meses

Todo lo que va después de # lo ignora Python. Sirve para explicar por qué hiciste algo, no qué hiciste:

# El descuento va aparte porque el sistema lo registra despues
# de cerrar el pedido, asi que no siempre viene.
descuento = 0.15
precio = 100

print(precio * (1 - descuento))
85.0

Un comentario que dice "multiplico el precio por uno menos el descuento" no aporta nada, porque eso ya lo dice el código.

El que sirve es el que explica lo que el código no puede decir: de dónde salió ese 0,15, por qué está fijo, quién lo decidió. Créeme que en tres meses te vas a agradecer 💜

Ejercicios

Intenta cada uno antes de abrir la solución. Equivocarse aquí es gratis y es justo donde se aprende.

1. Tu ficha

Imprime en tres líneas tu nombre, tu ciudad y el año en que empezaste a trabajar con datos. Usa tres print.

print('Gera Flores')
print('Lima')
print(2019)
Gera Flores
Lima
2019

Fíjate en que el año va sin comillas. Con comillas sería el texto "2019" y no podrías restarlo de otro año. Eso lo vemos en el capítulo 2.

2. Una sola línea con todo

Lo mismo de arriba pero en un solo print, con los tres datos separados por comas.

print('Gera Flores', 'Lima', 2019)
Gera Flores Lima 2019

print acepta varias cosas separadas por comas y las une con un espacio. Es la forma más rápida de ver qué tienen dentro varias variables a la vez.

3. Provoca un SyntaxError a propósito

Escribe un print al que le falte el paréntesis de cierre y mira el mensaje. Después arréglalo. El objetivo no es el resultado, es que el mensaje te deje de dar miedo.

print('me falta el cierre, pollito'
SyntaxError: '(' was never closed

Python es bastante bueno diciendo qué falta cuando el problema son paréntesis o comillas. Cuando el mensaje sea confuso, la regla que casi siempre acierta es mirar la línea de arriba de la que señala.

4. Provoca un NameError

Define una variable ventas con el valor 1200 e imprímela escribiendo mal el nombre. Después arréglalo.

ventas = 1200
print(vetnas)
NameError: name 'vetnas' is not defined

Cuando veas este error, lee el nombre que aparece entre comillas en el mensaje, letra por letra. Nueve de cada diez veces es una errata, y la décima es una celda que no ejecutaste.

5. Lo que el cuaderno hace por ti

Calcula en una sola celda dos totales: 12 unidades a S/34,90 y 12 a S/39,90. Antes de ejecutar, piensa cuántos números van a salir.

12 * 34.90
12 * 39.90
478.79999999999995

Sale uno solo, el del segundo cálculo. El cuaderno muestra el valor de la última línea y nada más; el primero se calculó y se botó.

Y de paso mira ese 478.79999999999995: 12 por 39,90 son 478,80 exactos, no eso. Ahí está el asunto de los decimales que vemos en el capítulo 2 🙂

Por eso, en cuanto quieras ver dos cosas, hacen falta los print. Este detalle es el que después explica por qué un script se ve mudo al sacarlo del cuaderno.

6. Comprobar tu versión desde dentro

Sin salir del cuaderno, averigua qué versión de Python está corriendo. Pista: hay un módulo llamado sys.

import sys

print(sys.version_info.major, sys.version_info.minor)
3 11

Sirve más de lo que parece. Cuando algo funciona en tu máquina y no en la de otra persona, la versión es lo primero que hay que comparar, y esta línea lo responde sin depender de la terminal.

7. Un comentario que sirva

Escribe dos líneas de código con un comentario cada una: uno inútil y uno útil. Compáralos.

# Inutil: repite lo que el codigo ya dice
iva = 0.18

# Util: dice lo que el codigo no puede decir
meta_mensual = 45000   # la fijo comercial en enero, se revisa en julio

print(meta_mensual * iva)
8100.0

El segundo contesta las dos preguntas que alguien va a tener dentro de seis meses mirando ese número: quién lo puso y hasta cuándo vale.

8. El error que más vas a ver

Crea una lista con tres ciudades y pide la posición 3. Explica por qué falla si la lista tiene tres elementos.

ciudades = ['Lima', 'Arequipa', 'Cusco']
print(ciudades[3])
IndexError: list index out of range

Porque se cuenta desde 0: las posiciones válidas son 0, 1 y 2. La última de una lista siempre es "el largo menos uno", y por eso existe el atajo ciudades[-1], que vemos en el capítulo 3 y que te evita la cuenta.

Lo que te llevas

Ya tienes dónde escribir Python y sabes qué hacer cuando la pantalla se ponga roja. Que eran las dos cosas que hacían falta antes de empezar en serio 🌟

De todo el capítulo, esto es lo que conviene que te lleves:

  • 📓 El cuaderno muestra la última línea; en un archivo hay que imprimir.
  • 🔍 Un error se lee de abajo hacia arriba, y el tipo de error es lo que se busca.
  • ⚠️ SyntaxError significa que Python no llegó ni a intentarlo, así que el problema es de escritura y suele estar una línea antes.

El capítulo 2 empieza con lo que hay dentro de una variable. Y con el error de tipos que se lleva la primera semana de todo el mundo: sumar dos cosas que parecían números y descubrir que una era texto.

Nos vemos allá. Que tengas un hermoso día! 🌸

¿Tienes alguna duda o consulta?