¿Qué podemos analizar con los datos de una carrera de F1? Ejemplo con el GP de Baku 2026 y Python

Imagen
¿Qué podemos analizar con los datos de una carrera de F1? Ejemplo con el GP de Baku 2026 y Python Cuando pensamos en analizar una carrera de Fórmula 1, normalmente pensamos en preguntas como: ¿Quién ganó? ¿Quién quedó segundo? ¿Quién hizo la vuelta más rápida? Pero cuando tenemos los datos de la carrera , podemos hacer muchas más preguntas. Y ahí es donde comienza realmente el análisis de datos. En este proyecto utilicé datos del Gran Premio de Azerbaiyán 2026 y Python para demostrar una idea muy sencilla: No siempre necesitamos más datos. Muchas veces necesitamos aprender a mirar los datos que ya tenemos de otra manera. 🏎️ De una tabla de resultados a un análisis de datos Los datos obtenidos de la API contienen información como: Piloto Equipo Posición final Posición de salida Vueltas completadas Estado de la carrera Información del piloto y del equipo A primera vista parece simplemente una tabla de resultados. Pero podemos comenzar a hacer pre...

21 personajes del Spirit World encontrados con una API de Avatar y Python

21 personajes del Spirit World encontrados con una API de Avatar y Python

¿Cuántos personajes relacionados con el Spirit World podemos encontrar en el universo de Avatar: The Last Airbender?

En este proyecto combinamos una API REST, Python y Pandas para explorar un conjunto de datos de personajes de Avatar y encontrar aquellos cuya afiliación está relacionada con el Spirit World.

El resultado fue bastante interesante: después de consultar todos los registros, encontramos 21 personajes asociados con el Spirit World en los datos proporcionados por la API.



🌌 ¿Qué API utilizamos?

Para este análisis utilizamos la Last Airbender API, una API REST que proporciona información sobre personajes del universo de Avatar.

El endpoint utilizado para obtener los personajes es:

https://last-airbender-api.fly.dev/api/v1/characters
  

La respuesta está formada por registros JSON que contienen información como:

  • Nombre del personaje
  • Aliados
  • Enemigos
  • Fotografía
  • Afiliación
  • ID del personaje

🐍 Conectándonos desde Python

Primero utilizamos la biblioteca Requests para realizar una petición HTTP a la API.

import requests

url = "https://last-airbender-api.fly.dev/api/v1/characters"

response = requests.get(url)

print("Status:", response.status_code)

La respuesta fue:

Status: 200
  

Un código HTTP 200 indica que la solicitud fue procesada correctamente.

📄 La API devuelve los personajes de 20 en 20

Al consultar el endpoint descubrimos que la API devuelve 20 personajes por página.

Para obtener la siguiente página utilizamos el parámetro page:

response = requests.get(
    url,
    params={"page": 2}
)

Repetimos este proceso hasta llegar a la última página disponible. La página 25 contenía 17 personajes y la página 26 ya no devolvía registros.

En total obtuvimos:

497
personajes obtenidos desde la API

🔄 Descargando todas las páginas automáticamente

En lugar de descargar cada página manualmente, utilizamos un ciclo while para continuar solicitando páginas hasta que la API devolviera una lista vacía.

all_characters = []

page = 1

while True:

    response = requests.get(
        url,
        params={"page": page}
    )

    data_page = response.json()

    print(
        f"Página {page}: "
        f"{len(data_page)} personajes"
    )

    if not data_page:
        break

    all_characters.extend(data_page)

    page += 1

print("Total de personajes:", len(all_characters))

De esta manera obtuvimos los 497 registros sin tener que escribir manualmente cada número de página.

🐼 Convertimos los datos en un DataFrame

Una vez descargados todos los personajes, utilizamos Pandas para trabajar con ellos.

import pandas as pd

df = pd.DataFrame(all_characters)

print("Filas:", len(df))
print("Columnas:", df.columns.tolist())

Nuestro DataFrame contiene 497 filas y las siguientes columnas:

  • _id
  • allies
  • enemies
  • photoUrl
  • name
  • affiliation

🔎 ¿Cómo encontramos a los personajes del Spirit World?

La clave fue la columna affiliation. Utilizamos str.contains() para buscar los registros que contienen el texto Spirit World.

spirit_world = df[
    df["affiliation"].fillna("").str.contains(
        "Spirit World",
        case=False,
        na=False
    )
][["name", "photoUrl", "affiliation"]]

Aquí utilizamos tres elementos importantes de Pandas:

  • fillna("") para reemplazar los valores nulos por una cadena vacía.
  • str.contains() para buscar el texto Spirit World.
  • case=False para que la búsqueda no dependa de mayúsculas o minúsculas.

🌌 El resultado: 21 personajes

Después de aplicar el filtro encontramos 21 personajes relacionados con el Spirit World dentro de los datos obtenidos de la API.

Para visualizar el resultado generamos una cuadrícula de 7 filas por 3 columnas, mostrando la imagen y el nombre de cada personaje.

21 personajes del Spirit World encontrados con una API de Avatar y Python


📊 ¿Qué aprendimos con este proyecto?

El objetivo principal del proyecto fue practicar un flujo de trabajo muy común en análisis de datos:

  1. Consumir una API REST.
  2. Trabajar con respuestas JSON.
  3. Utilizar paginación.
  4. Descargar registros automáticamente.
  5. Convertir JSON en un DataFrame de Pandas.
  6. Filtrar información utilizando condiciones de texto.
  7. Trabajar con valores nulos.
  8. Visualizar los resultados.

Y lo interesante es que el mismo procedimiento puede utilizarse con muchas otras APIs y conjuntos de datos.

🐍 Del universo de Avatar al análisis de datos

Este proyecto es un ejemplo de cómo podemos utilizar un tema que nos gusta para aprender programación y análisis de datos.

En este caso comenzamos con una pregunta:

¿Quiénes están relacionados con el Spirit World?

Y terminamos utilizando una API, Python y Pandas para responderla utilizando datos.

¿Qué otro análisis podríamos descubrir dentro de estos 497 personajes?


Programación Para Todos

programacionparatodos.com

Comentarios

🚀 Mantener este blog funcionando requiere tiempo y café. ¡Puedes contribuir con uno aquí!

Entradas más populares de este blog

Guía Práctica: Ejemplo Completo de ASPX para Desarrolladores Web

👉 Cómo obtener el tipo de cambio en Excel con API de Banxico (paso a paso)

Cómo crear un Predictor de Partidos de Fútbol con JavaScript y API-Football