Objetivo

Explorar datos de jugadores de FIFA de un archivo csv por medio de librería pandas

Descripción

Identificar una ruta WEB en donde se encuentra un archivo csv que contenga varias variables con lo cual se podrá importar con la función de read (lectura) que permitirá explorar sus datos.

Marco teórico

La exploración de datos es un primer paso del análisis de datos que se utiliza para explorar y visualizar datos para descubrir conocimientos desde el mismo inicio o identificar áreas o patrones para profundizarlos más. texto del vínculo

Desarrollo

Va a contener varios elementos:

Cargar librerías

library(readr)
library(dplyr)
library(lubridate)
library(fdth)
library(ggplot2)
library(fdth)
#library(Hmisc)

Cargar datos

Los datos se encuentran en la URL: https://raw.githubusercontent.com/rpizarrog/Analisis-Inteligente-de-datos/main/datos/datos.FIFA.limpios.csv

datos <- read.csv("https://raw.githubusercontent.com/rpizarrog/Analisis-Inteligente-de-datos/main/datos/datos.FIFA.limpios.csv", encoding = "UFT-8" )
source("misfunciones.r")
datos <- mutate(datos, Estatura = festatura(Height), Pesokgs = flbskgs(Weight))
datos.reduc <- select(datos, Name, Age, Nationality, Overall, Potential, Club, Preferred.Foot, Height, Aggression, Weight, Estatura, Pesokgs)

head(datos.reduc)
##                Name Age Nationality Overall Potential                Club
## 1          L. Messi  31   Argentina      94        94        FC Barcelona
## 2 Cristiano Ronaldo  33    Portugal      94        94            Juventus
## 3         Neymar Jr  26      Brazil      92        93 Paris Saint-Germain
## 4            De Gea  27       Spain      91        93   Manchester United
## 5      K. De Bruyne  27     Belgium      91        92     Manchester City
## 6         E. Hazard  27     Belgium      91        91             Chelsea
##   Preferred.Foot Height Aggression Weight Estatura Pesokgs
## 1           Left    5'7         48 159lbs     1.70   72.12
## 2          Right    6'2         63 183lbs     1.88   83.01
## 3          Right    5'9         56 150lbs     1.75   68.04
## 4          Right    6'4         38 168lbs     1.93   76.20
## 5          Right   5'11         76 154lbs     1.80   69.85
## 6          Right    5'8         54 163lbs     1.73   73.94

Explorar Datos

tail()

Explorar los últimos registros

tail(datos[,c(3,4,6,8,9,10,12,13,14,15,27,28)], 10)
##       Age         Nationality Potential Preferred.Foot International.Reputation
## 17946  18 Republic of Ireland        61          Right                        1
## 17947  18             England        70          Right                        1
## 17948  18              Canada        69          Right                        1
## 17949  18            Scotland        62           Left                        1
## 17950  18 Republic of Ireland        68           Left                        1
## 17951  19             England        65          Right                        1
## 17952  19              Sweden        63          Right                        1
## 17953  16             England        67          Right                        1
## 17954  17             England        66          Right                        1
## 17955  16             England        66          Right                        1
##       Weak.Foot Height Weight Crossing Finishing Reactions Balance
## 17946         3   5'10 141lbs       44        44        41      62
## 17947         2   5'11 154lbs       14         8        36      47
## 17948         3    5'6 150lbs       31        31        46      55
## 17949         2    5'9 157lbs       28        47        54      80
## 17950         3    6'1 168lbs       22        23        43      48
## 17951         2    5'9 134lbs       34        38        49      76
## 17952         2    6'3 170lbs       23        52        40      52
## 17953         3    5'8 148lbs       25        40        47      58
## 17954         3   5'10 154lbs       44        50        21      71
## 17955         3   5'10 176lbs       41        34        51      63

Tipo de dato

Se identifica el tipo de datos que tiene la variable datos siendo un data.frame y cada variable de datos.

is(datos)
## [1] "data.frame" "list"       "oldClass"   "vector"
str(datos.reduc)
## 'data.frame':    17955 obs. of  12 variables:
##  $ Name          : chr  "L. Messi" "Cristiano Ronaldo" "Neymar Jr" "De Gea" ...
##  $ Age           : int  31 33 26 27 27 27 32 31 32 25 ...
##  $ Nationality   : chr  "Argentina" "Portugal" "Brazil" "Spain" ...
##  $ Overall       : int  94 94 92 91 91 91 91 91 91 90 ...
##  $ Potential     : int  94 94 93 93 92 91 91 91 91 93 ...
##  $ Club          : chr  "FC Barcelona" "Juventus" "Paris Saint-Germain" "Manchester United" ...
##  $ Preferred.Foot: chr  "Left" "Right" "Right" "Right" ...
##  $ Height        : chr  "5'7" "6'2" "5'9" "6'4" ...
##  $ Aggression    : int  48 63 56 38 76 54 62 87 88 34 ...
##  $ Weight        : chr  "159lbs" "183lbs" "150lbs" "168lbs" ...
##  $ Estatura      : num  1.7 1.88 1.75 1.93 1.8 1.73 1.73 1.83 1.83 1.88 ...
##  $ Pesokgs       : num  72.1 83 68 76.2 69.8 ...

Podemos ver cuantos datos existen en el “data.frame” nos indica que hay 17955 filas(observaciones) y 50 columnas(variables).

dim(datos)
## [1] 17955    51

Decripción de los datos

Se presenta valores estadísticos de los datos del archivo importado

#describe(datos.reduc)

Estadísticos de variable de interés

Nacionalidad

nacionalidad = dim(datos)
nacion <- datos.reduc %>%
  group_by (Nationality) %>%
  summarise(n = n()) 
nacion <- arrange(nacion, desc(n))
head(nacion, 30)
## # A tibble: 30 x 2
##    Nationality     n
##    <chr>       <int>
##  1 England      1660
##  2 Germany      1198
##  3 Spain        1072
##  4 Argentina     936
##  5 France        913
##  6 Brazil        826
##  7 Italy         702
##  8 Colombia      617
##  9 Japan         475
## 10 Netherlands   453
## # ... with 20 more rows
tail(nacion, 10)
## # A tibble: 10 x 2
##    Nationality              n
##    <chr>                <int>
##  1 New Caledonia            1
##  2 Oman                     1
##  3 Palestine                1
##  4 Puerto Rico              1
##  5 Qatar                    1
##  6 Rwanda                   1
##  7 São Tomé & Príncipe      1
##  8 South Sudan              1
##  9 St Lucia                 1
## 10 United Arab Emirates     1
ggplot(data = head(nacion, 10), aes(x = Nationality, y = n, col = (Nationality)))+
  geom_bar(stat = "identity")

Pié preferido

pie.preferido <- datos.reduc %>%
  group_by (Preferred.Foot) %>%
  summarise(n = n())
pie.preferido <- arrange(pie.preferido, desc(n))
head(pie.preferido, 3)
## # A tibble: 3 x 2
##   Preferred.Foot     n
##   <chr>          <int>
## 1 "Right"        13748
## 2 "Left"          4159
## 3 ""                48

Datos de pie preferido limpios

Existen un total de jugadores que juegan con pierna derecha con un total de “13748” y con pierna Izquierda con un total de “4159”

head(pie.preferido, 2)
## # A tibble: 2 x 2
##   Preferred.Foot     n
##   <chr>          <int>
## 1 Right          13748
## 2 Left            4159
pie.preferido <- datos.reduc %>%
  group_by (Preferred.Foot) %>%
  summarise(n = n())
ggplot(data = head(pie.preferido, 3), aes(x = Preferred.Foot, y = n)) +
  geom_bar(stat = "identity", col = rainbow(3))

¿Qué jugadores hay más zurdos o derechos?

  • Agrupar por el tipo de pie utilizando el conjunto de datos original datos.FIFA
datos.pie.preferido <- datos %>%
  group_by(Preferred.Foot) %>%
  summarise(cuantos = n(), porc = paste(round(n() / nrow(datos) * 100,2),"%"))
datos.pie.preferido
## # A tibble: 3 x 3
##   Preferred.Foot cuantos porc   
##   <chr>            <int> <chr>  
## 1 ""                  48 0.27 % 
## 2 "Left"            4159 23.16 %
## 3 "Right"          13748 76.57 %

Edad de jugadores

age.nacion <- datos.reduc %>%
  group_by (Nationality) %>%
  summarise(n = n(), media = round(mean(Age),2), mediana = round(median(Age),2)) 
age.nacion <- arrange(age.nacion, media)
head(age.nacion, 10)
## # A tibble: 10 x 4
##    Nationality            n media mediana
##    <chr>              <int> <dbl>   <dbl>
##  1 Indonesia              1  17      17  
##  2 Botswana               1  20      20  
##  3 Rwanda                 1  21      21  
##  4 Tanzania               3  22      22  
##  5 Zambia                 9  22.2    21  
##  6 Afghanistan            4  22.5    22  
##  7 Chad                   2  22.5    22.5
##  8 Antigua & Barbuda      4  22.8    22  
##  9 Dominican Republic     2  23      23  
## 10 Jordan                 1  23      23
tail(age.nacion, 10)
## # A tibble: 10 x 4
##    Nationality             n media mediana
##    <chr>               <int> <dbl>   <dbl>
##  1 Uzbekistan              2  29.5    29.5
##  2 Fiji                    1  30      30  
##  3 Guam                    1  30      30  
##  4 New Caledonia           1  30      30  
##  5 Kuwait                  1  31      31  
##  6 Palestine               1  31      31  
##  7 São Tomé & Príncipe     1  31      31  
##  8 Ethiopia                1  32      32  
##  9 Puerto Rico             1  34      34  
## 10 Oman                    1  36      36
  • Con respecto a lo que muestra la media de la edad de los jugadores por país, hay países con un sólo jugador, de tal forma que no es representativo.

  • Se suele tomar un criterio, por ejemplo, los que países que tengan el número de jugadores IGUAL O por ENCIMA del valor de la media o de la mediana con respecto a la varriable edad ‘Age’.

  • Se toma la mean = media como medida de comparación

la.media<- round(mean(age.nacion$n),0)
la.media
## [1] 110

Agresión

datos.agression <- datos %>%
  group_by(Aggression) %>%
  summarise(cuantos = n(), porc = paste(mean(n() / nrow(datos) * 100,2),"%"))
datos.agression
## # A tibble: 86 x 3
##    Aggression cuantos porc                
##         <int>   <int> <chr>               
##  1         11       5 0.0278473962684489 %
##  2         12      12 0.0668337510442774 %
##  3         13      17 0.0946811473127263 %
##  4         14      11 0.0612642717905876 %
##  5         15      25 0.139236981342244 % 
##  6         16      61 0.339738234475077 % 
##  7         17      83 0.462266778056252 % 
##  8         18      87 0.484544695071011 % 
##  9         19     106 0.590364800891117 % 
## 10         20     111 0.618212197159566 % 
## # ... with 76 more rows

Interpretación

El conjunto de datos tiene 17955 observaciones y 50 variables.

El analisis de datos que hicimos fue con el conjunto de datos de FIFA. Los datos se encuentran en la direccion https://raw.githubusercontent.com/rpizarrog/Analisis-Inteligente-de-datos/main/datos/datos.FIFA.limpios.csv y contiene 17955 observaciones y 50 variables. En este analisis de datos fue necesario una limpieza de datos un tanto batallosa ya que algunos datos que vienen no son tan factibles para usar como lo son el ejemplo del peso y la estatura ya que se manejaba en pies y libras. Tambien tuvimos que agregar pais de donde es el club y agregar region para saber a cual pertenecen. Ya cuando se haga la limpieza se genero un conjunto de datos mas manipuble solo con los atributos que utilizariamos. En este analisis pudimos observar por ejemplo que el pais que tiene mas jugadores es Inglaterra con 1662 y el que menos tiene es Nueva Caledonia. Tambien observamos que el pais que tiene el rango de edad mas joven es Indonesia con 17 años y el que tiene el mayor rango es Fiji con 30 años aunque en ocasiones no es significativo ya que el pais solo tiene 1 jugador en algunos casos. Sacamos que el pais que tiene mas equipos en este conjunto de datos es Inglaterra con 48 equipos. Obtuvimos que el continente con mayor valor de mercado es Europa con 5360557 y el menor es Oceania con 747600. Gracias al analisis de estos datos pudimos comprender la importancia de la limpieza de los datos.