Busabase
Busabase는 AI 에이전트를 위한 오픈소스(MIT) 데이터베이스 및 작업 공간입니다
유럽 5대 리그 선수·팀의 인터랙티브 그래프와 자체 xG 모델 제공, 선수 검색 또는 질문으로 시작
Gráficas interactivas de jugadores y equipos de las 5 grandes ligas de Europa y un modelo de xG propio. Busca a un jugador o empieza por una pregunta.
데이터Jupyter Notebook · PythonGitHub @OliverBur온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗FutViz es un proyecto de ciencia de datos deportiva sobre las 5 grandes ligas europeas de fútbol, temporada 2025/2026. Arranca con un EDA (análisis exploratorio) a nivel de equipo y de jugador, con la idea de ir subiendo en complejidad más adelante: desde exploración general hasta análisis más específicos y la inclusión de Machine Learning.
Los datos son públicos y gratuitos (fbref para equipos, Understat para jugadores), así que no traen estadísticas súper avanzadas, pero sí lo suficiente para sacar insights reales con buen tratamiento visual.
data/ No se versiona: los términos de las fuentes no permiten redistribuir los
datos. Los scripts code/fetch_*.py los bajan y code/consolidate_data.py los junta
code/ Notebooks del EDA (laboratorio) + viz_theme.py (identidad visual compartida)
web/
charts/ Configuración de las vistas de "Análisis exploratorio" (jugadores y equipos) y
gráficos de los artículos de ML (Plotly)
build.py Genera el sitio estático completo en web/dist/
site_utils.py Plantillas de página (landing, secciones, gráficos individuales)
react/ Las vistas de "Análisis exploratorio" en React + MUI X (gráficas, filtros, tabla).
Se compila con Vite a react/build/
react_views.py Une Python con el bundle de React (tablas de datos + fragmentos + copia a dist/)
section_views.py Cascarón de la página con las vistas que cargan bajo demanda
dist/ Sitio generado — se commitea tal cual para el deploy
img/ Logo y assets de marca fuente (no versionado — se procesa en cada build)
Notebooks (laboratorio de cada gráfico):
pip install pandas matplotlib plotly numpy pillow
jupyter notebook code/eda_teams.ipynb # o code/eda_players.ipynb
Sitio estático (regenera web/dist/ a partir de web/charts/):
cd web
python build.py
Actualización semanal (temporada en curso): code/actualizar.py baja solo los partidos nuevos
de Understat y refresca las páginas de fbref, comprueba que ninguna fuente retrocedió, consolida,
reconstruye web/dist/ y, con --publicar, hace commit + push de web/dist/ (Vercel despliega
solo). Si algo falla, no publica nada y restaura los datos desde la copia que hizo antes de
descargar. El log de cada corrida queda en logs/.
python code/actualizar.py # baja + consolida + construye, sin tocar git
python code/actualizar.py --publicar # además commit + push (exige árbol limpio y rama master)
Para que corra solo cada lunes a las 23:00 (hora de CDMX), en el Programador de tareas de Windows (la PC tiene que estar encendida y con la sesión iniciada; registrar la tarea no la enciende):
powershell -ExecutionPolicy Bypass -File code\programar_tarea.ps1 # registrar
powershell -ExecutionPolicy Bypass -File code\programar_tarea.ps1 -Despertar # además despierta la PC suspendida
powershell -ExecutionPolicy Bypass -File code\programar_tarea.ps1 -Quitar # borrar
Cada agosto hay que agregar la temporada nueva a SEASONS (en consolidate_data.py y los
fetch_*.py) y su tamaño a EXPECTED_SIZES; mientras no esté, actualizar.py falla con ese aviso.
Vistas en React (solo si se toca web/react/src/; hace falta Node 20+). El bundle compilado
web/react/build/ se versiona, así que python build.py no necesita Node:
cd web/react
npm install # una vez
npm run build # genera build/futviz-react.js
cd .. && python build.py
Los textos de lectura de cada vista ("En lo que estás viendo") se calculan en el navegador con una
copia en JS de code/insights.py. Para comprobar que ambas dan lo mismo (1.328 combinaciones de
temporada, liga, posición, nivel y sub-21):
cd web/react
python test/gen_paridad.py # genera test/fixtures/ con la versión de Python
node test/paridad.mjs # compara contra la de JS