Análisis de datos de F1 con Python: GP de Bahréin 2026 paso a paso

Imagen
¿Qué podemos aprender de los datos de una carrera de Fórmula 1? Una carrera de Fórmula 1 genera una gran cantidad de datos. Pero tener los datos no es suficiente: necesitamos saber qué preguntas queremos responder . En este proyecto vamos a utilizar el GP de Bahréin 2026 como ejemplo para aprender cómo podemos obtener, transformar, analizar y visualizar datos deportivos utilizando Python . La idea es sencilla: los datos ya están ahí; solo necesitamos aprender qué preguntarles. 🏎️ El GP de Bahréin 2026 como proyecto de Data Science Para este análisis utilizamos datos de la carrera de Bahréin 2026 obtenidos mediante una API de Fórmula 1. A partir de esos datos podemos construir nuestras propias preguntas y encontrar patrones interesantes. En lugar de limitarnos a conocer quién ganó la carrera, vamos a analizar tres aspectos: ¿Quiénes abandonaron la carrera? ¿Quiénes recuperaron más posiciones? ¿Quiénes perdieron más posiciones? Este tipo de preguntas son u...

Cómo comenzar a trabajar con WebSocket en Tennis API

 Mientras desarrollaba un ejemplo de integración con JavaScript y WebSocket con Tennis API, descubrí que la información está distribuida en dos sitios distintos. Al principio intenté conectarme únicamente con la guía general de WebSocket y, aunque logré autenticarme correctamente, todavía no era evidente qué eventos o endpoints debía utilizar para recibir información en tiempo real.

El primer recurso que recomiendo leer es la guía Tennis WebSocket API Guide. En este artículo se explica el concepto de la integración mediante WebSocket, las ventajas frente a una API REST y el uso de Socket.IO para recibir actualizaciones en tiempo real sin realizar consultas HTTP constantes.

Conexión Socket.IO Tennis API


Sin embargo, durante mis pruebas descubrí que esa guía está enfocada en explicar el funcionamiento general de la tecnología y no contiene todos los detalles necesarios para comenzar a consumir los eventos disponibles. Para conocer los eventos, endpoints y métodos específicos que utiliza la plataforma es necesario consultar la documentación técnica de Matchstat Live API Documentation.


Conexión Socket.IO Tennis API


Antes de construir un dashboard completo decidí crear una página de prueba de conexión. El objetivo de esta primera versión fue validar paso a paso que todo el proceso funcionara correctamente:

  • Obtener el WebSocket Token mediante la API.
  • Conectarse al servidor Socket.IO.
  • Verificar que la autenticación fuera exitosa.
  • Registrar todos los eventos enviados y recibidos.
  • Probar diferentes métodos de suscripción hasta encontrar los eventos documentados.

Gracias a esta página de diagnóstico fue posible identificar el flujo correcto de conexión y comprobar que el servidor respondía con eventos como event-update, lo que confirmó que la integración estaba funcionando correctamente.

Conexión Socket.IO Tennis API
Les comparto la url de la Demo Tennis API Socket.IO Explorer V2

Mi recomendación es seguir este mismo orden si vas a desarrollar una aplicación con Tennis API:

  1. Leer la guía general de WebSocket para comprender cómo funciona la comunicación en tiempo real.
  2. Revisar la documentación técnica para identificar los endpoints y eventos disponibles.
  3. Crear una página sencilla de prueba que permita validar la autenticación y registrar todos los mensajes del servidor antes de desarrollar un dashboard o una aplicación completa.
Conexión Socket.IO Tennis API

Les comparto la url de la Demo Tennis API Socket.IO Explorer V2

Esta estrategia me permitió entender mucho mejor el funcionamiento de la API y evitó perder tiempo intentando adivinar eventos o canales de suscripción. En las siguientes publicaciones mostraré cómo utilizar esta conexión para construir un dashboard de tenis en tiempo real con JavaScript y Socket.IO, consumiendo los eventos enviados directamente por el servidor.

Otra Nota importante necesitan tener el Plan MEGA para poder utilizar websocket, les comparto un video explicando un poco mas a detalle .



Algunas funciones en Javascript

async function start(){

 const key=w("apikey").value.trim();

 if(!key){alert("Pega tu API Key");return;}


 w("status").innerHTML="Obteniendo token...";

 const tk=await getToken(key);

 log(tk);


 if(!tk.success){

   w("status").innerHTML="<span class='err'>No se obtuvo token</span>";

   return;

 }


 token=tk.token;


 socket=io("https://live.matchstat.com",{

    auth:{token:token},

    transports:["websocket"]

 });


 socket.on("connect",()=>{

   w("status").innerHTML="<span class='ok'>Conectado</span>";

   log({connected:true,socketId:socket.id});

   getLiveEvents(key);

 });


 socket.on("disconnect",r=>log({disconnect:r}));

 socket.on("connect_error",e=>log({connect_error:e.message}));

 socket.on("error",e=>log({error:e}));


 socket.on("live-events-all-update",d=>log({event:"live-events-all-update",data:d}));

 socket.on("event-update",d=>log({event:"event-update",data:d}));

 socket.on("odds-update",d=>log({event:"odds-update",data:d}));


 socket.onAny((e,...a)=>log({incoming:e,data:a}));

}



async function getLiveEvents(key){

 try{

 const r=await fetch("https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/extend/api/events/live",{

 headers:{

 "x-rapidapi-key":key,

 "x-rapidapi-host":"tennis-api-atp-wta-itf.p.rapidapi.com"

 }});

 const j=await r.json();

 w("events").textContent=JSON.stringify(j,null,2);

 log({liveEvents:j});


 let id=null;

 if(Array.isArray(j)&&j.length) id=j[0].eventId||j[0].event_id||j[0].id;

 else if(j.data&&j.data.length) id=j.data[0].eventId||j.data[0].event_id||j.data[0].id;


 if(id){

   w("eventId").value=id;

   log({autoEventId:id});

 }

 }catch(e){

  log({liveEventsError:e.message});

 }

}

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