¿Qué tal todo?
Mientras pueda, tenga tiempo y sepa cómo hacerlo, compartiré con los suscriptores premium el código R y el código Python, como si una piedra de Rosseta se tratara, la verdad es que ambos lenguajes son muy similares; creo que R es posterior y por eso muchas funciones y maneras de escribir código son mas cortas y eficientes y posee una mayor y mejor capacidad gráfica. Al final todo se puede hacer con todo, pero mientras en uno, son dos palabras, en otro pueden ser 10 lineas.
No se si se percibe, pero a mi me gusta resumir mucho al escribir código y prefiero la eficiencia, quizás porque al ser autodidacta no he aprendido bajo la disciplina de ningún profesor, ni de ningún curso. Es algo que recomiendo.
Yo aprendí a base de imponerme proyectos. Cuando encontraba lo que quería hacer preguntaba y pregunto a todo el mundo, buscaba y busco turoriales por todas partes. Una cosa que quiero agradecer es la facilidad y la buena disposición de verdaderos cracks como Owen Philips , Abdoul Madjid o Dan Oehm y muchos otros que han tenido tanta paciencia conmigo. Lo cierto es que breaba y breo a mucha gente 😂, porque: ya sé que no... pero y si sí.
Codigo R
Cómo siempre las librerias. Tengo que confesar que me he cambiado de portatil y hasta que vuelva a cargar todo tal y como lo tenía en el antiguo pues… Bueno, ponemos las lbrerias, las fuentes y mi tema ( también podeis simplemente poner theme_minimal() en el plot)
library(tidyverse)
library(rvest)
library(janitor)
library(shadowtext)
library(ggtext)
library(extrafont)
library(sysfonts)
library(showtext)
font_add(family = "oswald", regular = "Oswald-VariableFont_wght.ttf")
font_add(family = "oswaldbold", regular = "Oswald-Bold.ttf")
font_add(family = "Font Awesome 6 Brands", regular = "fa-brands-400.ttf")
showtext_auto()
showtext_opts(dpi = 320)
#mi tema
theme_ivo <- function () {
theme_minimal(base_size=9, base_family="oswald") %+replace%
theme(
panel.grid.minor = element_blank(),
plot.background = element_rect(fill = 'white', color = "white")
)
}Si quereis saber cómo se llama y donde teneis alguna fuente en vuestro sistema teclead
font_files() %>% tibble() %>% filter(str_detect(family,"Oswald"))Luego el nombre que hay poner es el que está debajo de la columna family, como vereís en el primer rectangulo, yo he cambiado el nombre para diferenciar el face bold del Regular
Scraping Data
Vamos a usar los datos de la web RealGM
Si quereis los datos de un solo año tecleais esto
df <-"https://basketball.realgm.com/international/league/1/Euroleague/team-stats/2025/Averages/Team_Totals" %>%
read_html() %>%
html_element("table") %>%
html_table() %>%
clean_names() %>%
select(team, fgm, fga, fg_percent, x3pm, x3pa, x3p_percent) %>%
mutate(x2pa = fga- x3pa) %>% #no hay columna de intentos de 2
summarise(x2pa_media = mean(x2pa),
x3pa_media = mean(x3pa))Cómo dije mas arriba me gusta ahorrar y a la vez que descargo los datos los limpio los selecciono y creo las columnas.
Ahora vamos a sacar los datos de los últimos 20 años
Si te gusta lo que lees, pásate a pago y te llevas el resto del análisis + el código R y Python (formato “piedra de Rosetta”,🙈). Con tu apoyo puedo seguir picando piedra y compartir lo que aprendo. 🏀
Continúa leyendo con una prueba gratuita de 7 días
Suscríbete a The Clean Shot para seguir leyendo este post y obtener 7 días de acceso gratis al archivo completo de posts.







