Explorar datos de jugadores de FIFA de un archivo csv por medio de librería pandas
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.
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
Va a contener varios elementos:
Cargar librerías
Cargar datos
Explorar datos
Visualizar datos
library(readr)
library(dplyr)
library(lubridate)
library(fdth)
library(ggplot2)
library(fdth)
#library(Hmisc)
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 los primeros registros con función head()
head(datos[,c(3,4,6,8,9,10,12,13,14,15,27,28)], 10)
## Age Nationality Potential Preferred.Foot International.Reputation Weak.Foot
## 1 31 Argentina 94 Left 5 4
## 2 33 Portugal 94 Right 5 4
## 3 26 Brazil 93 Right 5 5
## 4 27 Spain 93 Right 4 3
## 5 27 Belgium 92 Right 4 5
## 6 27 Belgium 91 Right 4 4
## 7 32 Croatia 91 Right 4 4
## 8 31 Uruguay 91 Right 5 4
## 9 32 Spain 91 Right 4 3
## 10 25 Slovenia 93 Right 3 3
## Height Weight Crossing Finishing Reactions Balance
## 1 5'7 159lbs 84 95 95 95
## 2 6'2 183lbs 84 94 96 70
## 3 5'9 150lbs 79 87 94 84
## 4 6'4 168lbs 17 13 90 43
## 5 5'11 154lbs 93 82 91 77
## 6 5'8 163lbs 81 84 90 94
## 7 5'8 146lbs 86 72 90 94
## 8 6'0 190lbs 77 93 92 83
## 9 6'0 181lbs 66 60 85 66
## 10 6'2 192lbs 13 11 86 49
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
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
Se presenta valores estadísticos de los datos del archivo importado
#describe(datos.reduc)
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")
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
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))
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 %
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
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
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.