Estudo sobre os stats do EA FC 24
Introdução
Por que analisar esses dados? A análise detalhada dos atributos estatísticos dos jogadores do EA FC 24 revela-se fundamental para identificar e compreender a performance de cada atleta no jogo. Esses stats são indicadores-chave que refletem as habilidades e características individuais de cada jogador, influenciando diretamente seu desempenho em campo.
Ao explorar os dados provenientes do conjunto fornecido pelo Kaggle, é possível extrair insights valiosos sobre quem são os melhores jogadores, quais características específicas contribuem para seu destaque e como esses atributos variam entre diferentes atletas. Desde habilidades técnicas, como dribles e chutes precisos, até atributos físicos, como velocidade e resistência, cada stat desempenha um papel crucial no desempenho global do jogador.
Esta análise oferece uma visão aprofundada das nuances do desempenho dos jogadores, permitindo aos entusiastas e pro players do jogo tomar decisões informadas ao montar equipes ou desenvolver estratégias de jogo. Ao compreender a variação nos stats, os jogadores podem ajustar suas táticas de acordo com as necessidades específicas de cada partida, maximizando suas chances de sucesso.
Em resumo, a análise dos stats dos jogadores do EA FC 24 não apenas destaca os melhores atletas, mas também proporciona uma compreensão abrangente das características individuais que definem o sucesso em campo. Essa abordagem analítica é essencial para jogadores, treinadores e entusiastas que buscam elevar seu desempenho no jogo e explorar as complexidades que tornam cada partida única.
Apesar da mesma nota, não são o mesmo jogador
Pode parecer intuitivo calcular uma média dos números abaixo do nome do jogador para determinar sua nota, certo? Na realidade, jogadores com a mesma nota, como Marcus Rashford e Jack Grealish (ambos com nota 85), podem ter características bastante distintas. Existem atributos que formam esses números (nesse estudo chamaremos de “stats”).
Diferença nos Stats: Ambos possuem a mesma nota, mas uma análise detalhada revela diferenças significativas em atributos específicos que influenciam seu desempenho em campo.
Em casos como Vini Jr. e Neymar Jr., mesmo com stats de finalização semelhantes, é crucial considerar que certos stats, como Cobrança de Falta e Pênaltis, podem impactar a pontuação geral de maneiras distintas.
Etapas de desenvolvimento
O que eu preciso para executar e o que posso extrair desse estudo?
Obtenção dos dados
Onde foram obtidos? O que eu preciso para analisar esses dados?
Dados originais
Os dados a seguir foram obtidos através deste link do kaggle
Pacotes utilizados
| Pacote | Utilização |
|---|---|
| library(rmdformats) | fornece o formato de R Markdown utilizado nesse relatório |
| library(knitr) | para geração de tabelas |
| library(DT) | para criação das tabelas interativas |
| library(dplyr) | para manipulação avançada dos DataFrames |
| library(readr) | para melhor leitura do arquivo .csv de dados |
| library(stringr) | para manipulação avançada de strings |
| library(ggplot2) | para a visualização avançada de gráficos |
| library(tidyr) | para manipulação e limpeza de dados |
Os pacotes podem ser instalados através dos seguintes códigos:
Preparação dos dados
Manipulações necessárias no data set original, para que o estudo pudesse ser realizado de maneira mais precisa.
Correção de acentos no arquivo original
Nomes dos jogadores: Por existirem diversos jogadores de diversas nacionalidades, existem muitos acentos dos diferentes alfabetos, foi necessário corrigir padrão por padrão, para manter o nome dos jogadores certos.
dados_fifa <- read_csv("C:/Users/lsvfi/Documents/R/Scripts/player_stats.csv", quote = "\"", locale = locale(encoding = "latin1"))
# Correção dos acentos jogadores
dados_fifa$player <- str_replace_all(dados_fifa$player, "á", "á")
dados_fifa$player <- str_replace_all(dados_fifa$player, "é", "é")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ã", "í")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ó", "ó")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ú", "ú")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ä", "ä")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ë", "ë")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ï", "ï")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ö", "ö")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ü", "ü")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ä", "ğ")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ã", "ã")
dados_fifa$player <- str_replace_all(dados_fifa$player, "æ", "æ")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ä
", "ą")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ø", "ø")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ã", "Á")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ä", "ć")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Å ", "Š")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Å¡", "š")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ã¥", "å")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ã", "Ö")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ñ", "ñ")
dados_fifa$player <- str_replace_all(dados_fifa$player, "È", "Ș")
dados_fifa$player <- str_replace_all(dados_fifa$player, "â", "â")
dados_fifa$player <- str_replace_all(dados_fifa$player, "È", "ț")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ã", "Ó")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ä", "ă")
dados_fifa$player <- str_replace_all(dados_fifa$player, "È", "ș")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ã", "Ç")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ı", "ı")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ç", "ç")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ð", "ð")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ã", "ß")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ž", "ž")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Å", "ş")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ä", "č")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ã", "É")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ô", "ô")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Å", "ł")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ä", "ę")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ã", "Ø")
dados_fifa$player <- str_replace_all(dados_fifa$player, "î", "î")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Å", "ń")
dados_fifa$player <- str_replace_all(dados_fifa$player, "İ", "İ")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ä", "Ć")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Å", "ř")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ä", "Č")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ã", "à")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ä", "ě")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Å", "Ł")
dados_fifa$player <- str_replace_all(dados_fifa$player, "à²", "ò")
dados_fifa$player <- str_replace_all(dados_fifa$player, "ź", "ź")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Å", "ś")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Ž", "Ž")
dados_fifa$player <- str_replace_all(dados_fifa$player, "à", "À")
dados_fifa$player <- str_replace_all(dados_fifa$player, "à¨", "è")
dados_fifa$player <- str_replace_all(dados_fifa$player, "Å", "Ş")
dados_fifa$player <- str_replace_all(dados_fifa$player, "à½", "ý")
dados_fifa$player <- str_replace_all(dados_fifa$player, "È", "Ț")Nomes dos times: O mesmo foi necessário com o nome dos clubes, para evitar erros.
# Correção dos acentos times
dados_fifa$club <- str_replace_all(dados_fifa$club, "á", "á")
dados_fifa$club <- str_replace_all(dados_fifa$club, "é", "é")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ã", "í")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ó", "ó")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ú", "ú")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ä", "ä")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ë", "ë")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ï", "ï")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ö", "ö")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ü", "ü")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ä", "ğ")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ã", "ã")
dados_fifa$club <- str_replace_all(dados_fifa$club, "æ", "æ")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ä
", "ą")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ø", "ø")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ã", "Á")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ä", "ć")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Å ", "Š")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Å¡", "š")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ã¥", "å")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ã", "Ö")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ñ", "ñ")
dados_fifa$club <- str_replace_all(dados_fifa$club, "È", "Ș")
dados_fifa$club <- str_replace_all(dados_fifa$club, "â", "â")
dados_fifa$club <- str_replace_all(dados_fifa$club, "È", "ț")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ã", "Ó")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ä", "ă")
dados_fifa$club <- str_replace_all(dados_fifa$club, "È", "ș")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ã", "Ç")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ı", "ı")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ç", "ç")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ð", "ð")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ã", "ß")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ž", "ž")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Å", "ş")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ä", "č")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ã", "É")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ô", "ô")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Å", "ł")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ä", "ę")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ã", "Ø")
dados_fifa$club <- str_replace_all(dados_fifa$club, "î", "î")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Å", "ń")
dados_fifa$club <- str_replace_all(dados_fifa$club, "İ", "İ")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ä", "Ć")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Å", "ř")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ä", "Č")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ã", "à")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ä", "ě")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Å", "Ł")
dados_fifa$club <- str_replace_all(dados_fifa$club, "à²", "ò")
dados_fifa$club <- str_replace_all(dados_fifa$club, "ź", "ź")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Å", "ś")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Ž", "Ž")
dados_fifa$club <- str_replace_all(dados_fifa$club, "à", "À")
dados_fifa$club <- str_replace_all(dados_fifa$club, "à¨", "è")
dados_fifa$club <- str_replace_all(dados_fifa$club, "Å", "Ş")
dados_fifa$club <- str_replace_all(dados_fifa$club, "à½", "ý")
dados_fifa$club <- str_replace_all(dados_fifa$club, "È", "Ț")Alturas e pesos no formato brasileiro
Passando as alturas e pesos pro formato brasileiro: Foi necessário formatar as alturas (anteriormente em cm) e os pesos (sem representação de kg), para o padrão brasileiro, facilitando o estudo.
# Formatacao das alturas para metros e com ponto
# Converter altura para metros e centímetros
dados_fifa$altura_m <- dados_fifa$height / 100
# Formatar altura como "1.92m"
dados_fifa$altura_m <- sprintf("%.2f m", dados_fifa$altura_m)
# Formatar peso como "87 kg"
dados_fifa$peso_kg <- sprintf("%.0f kg", dados_fifa$weight)Removendo jogadores duplicados
Jogadores aparecendo 2 vezes na tabela: Alguns jogadores estavam com seus stats replicados, foi necessário remover essas ocorrências.
Criação de novas colunas e tabelas
Juntar os stats para escolher os melhores jogadores ou goleiros, com a junção de vários stats, tiramos uma média para jogadores em 5 novas colunas: Ofensivo, Habilidade, Movimentação, Força e Mentalidade.
Com esses stats, poderemos posteriormente filtrar para criar qualquer tabela com jogadores…
# Calcular as médias para cada categoria e arredondar para inteiros
dados_fifa$ofensivo <- round(rowMeans(dados_fifa[, c("crossing", "finishing", "heading", "short_pass", "volleys")]))
dados_fifa$habilidade <- round(rowMeans(dados_fifa[, c("dribbling", "curve", "fk_acc", "long_pass", "ball_control")]))
dados_fifa$movimentacao <- round(rowMeans(dados_fifa[, c("acceleration", "sprint_speed", "agility", "reactions", "balance")]))
dados_fifa$forca <- round(rowMeans(dados_fifa[, c("shot_power", "jumping", "stamina", "strength", "long_shots")]))
dados_fifa$mentalidade <- round(rowMeans(dados_fifa[, c("aggression", "interceptions", "att_position", "vision", "penalties", "composure")]))Já para os goleiros, o ideal foi criar uma nova tabela apenas com os goleiros, para definir os melhores, os stats definidos foram Elasticidade, Manejo, Chute, Posicionamento e Reflexos:
# Filtrar jogadores com atributos de goleiro, para encontrar os goleiros
goleiros <- dados_fifa %>%
filter(gk_diving >= 50, gk_handling >= 50, gk_positioning >= 50, gk_kicking >= 50, gk_reflexes >= 50)
# Criar colunas com os tats de goleiro e arredondar para inteiros
goleiros$elasticidade_gl <- round(rowMeans(goleiros[, c("gk_diving")]))
goleiros$manejo_gl <- round(rowMeans(goleiros[, c("gk_handling")]))
goleiros$chute_gl <- round(rowMeans(goleiros[, c("gk_kicking")]))
goleiros$posicionamento_gl <- round(rowMeans(goleiros[, c("gk_positioning")]))
goleiros$reflexos_gl <- round(rowMeans(goleiros[, c("gk_reflexes")]))Estudo nos jogadores (Resultados)
Agora com todos os dados formatados, podemos pegar os jogadores que desejamos analisar.
Como gerar as tabelas
Com o código abaixo, podemos filtrar os jogadores com base em stats, para definirmos uma régua:
# Selecionar apenas as colunas desejadas
colunas_desejadas <- c("player", "country", "club", "age","altura_m", "peso_kg","ofensivo", "habilidade", "movimentacao", "forca", "mentalidade", "value")
# Filtrar jogadores com médias para os jogadores que desejamos
jogadores_desejados <- dados_fifa %>%
filter(
ofensivo > 50, # Alterar com base no tipo de jogador desejado
habilidade > 50, # Alterar com base no tipo de jogador desejado
movimentacao > 50, # Alterar com base no tipo de jogador desejado
forca > 50, # Alterar com base no tipo de jogador desejado
mentalidade > 50 # Alterar com base no tipo de jogador desejado
) %>%
arrange(desc(value))
# Criar a tabela estática usando kable
kable(jogadores_desejados[colunas_desejadas])Melhores goleiros
Os melhores goleiros do EA FC 24: com os stats de goleiro, foram filtrados os melhores com base em algumas médias e assim podemos ter em ordem decrescente, os melhores goleiros do jogo.
Alguns usuários podem preferir goleiros mais altos, ou que tenham melhores reflexos, e é possível fazer essa análise a partir de uma tabela como esta:
| player | country | club | age | altura_m | peso_kg | elasticidade_gl | manejo_gl | chute_gl | posicionamento_gl | reflexos_gl | value |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Keylor Navas | Costa Rica | Nott’m Forest | 36 | 1.85 m | 80 kg | 87 | 84 | 75 | 87 | 87 | $9.000.000 |
| Gianluigi Donnarumma | Italy | Paris SG | 24 | 1.96 m | 90 kg | 90 | 83 | 79 | 85 | 89 | $78.000.000 |
| Kasper Schmeichel | Denmark | OGC Nice | 36 | 1.89 m | 89 kg | 79 | 78 | 79 | 81 | 83 | $3.400.000 |
| Yassine Bounou | Morocco | Sevilla FC | 32 | 1.95 m | 78 kg | 83 | 83 | 78 | 84 | 85 | $28.500.000 |
| Koen Casteels | Belgium | VfL Wolfsburg | 31 | 1.97 m | 86 kg | 84 | 82 | 79 | 84 | 86 | $28.000.000 |
| Lucas Mantela | Brazil | Brazil | 23 | 1.83 m | 77 kg | 79 | 87 | 85 | 77 | 81 | $27.000.000 |
| Alejandro Remiro Gargallo | Spain | Real Sociedad | 28 | 1.92 m | 79 kg | 83 | 76 | 79 | 85 | 84 | $23.500.000 |
| Gerónimo Rulli | Argentina | Ajax | 31 | 1.89 m | 84 kg | 82 | 79 | 80 | 81 | 83 | $20.500.000 |
| Dominik Livaković | Croatia | Dinamo Zagreb | 28 | 1.87 m | 79 kg | 80 | 76 | 71 | 79 | 87 | $20.000.000 |
| Anthony Lopes | Portugal | OL | 32 | 1.84 m | 81 kg | 84 | 78 | 71 | 80 | 86 | $16.000.000 |
| Rui Silva | Portugal | Real Betis | 29 | 1.91 m | 91 kg | 80 | 77 | 77 | 81 | 83 | $15.000.000 |
| Walter Benítez | Argentina | PSV | 30 | 1.91 m | 93 kg | 80 | 79 | 72 | 80 | 83 | $14.500.000 |
| José Sá | Portugal | Wolves | 30 | 1.92 m | 84 kg | 81 | 78 | 73 | 78 | 82 | $14.500.000 |
| Uğurcan Çakır | Turkey | Trabzonspor | 27 | 1.91 m | 82 kg | 80 | 76 | 74 | 81 | 79 | $14.000.000 |
| Bernd Leno | Germany | Fulham | 31 | 1.90 m | 83 kg | 81 | 78 | 74 | 79 | 83 | $14.000.000 |
| Neto | Brazil | AFC Bournemouth | 34 | 1.90 m | 84 kg | 80 | 78 | 77 | 78 | 79 | $10.500.000 |
| Ivan Provedel | Italy | Latium | 29 | 1.92 m | 84 kg | 81 | 76 | 76 | 76 | 81 | $10.000.000 |
| Alessio Cragno | Italy | Monza | 29 | 1.84 m | 78 kg | 79 | 78 | 72 | 76 | 79 | $10.000.000 |
Conseguimos obter esses jogadores através do seguinte filtro:
Melhores atacantes
Os melhores atacantes do EA FC 24: com os stats geral para jogadores, a partir de algumas médias, foi possível filtrar os melhores atacantes do game, com base em seus atributos.
Existem diversos estilo de jogo, jogadores mais rápidos como: Messi, Mbappé, Rashford e Ben Yedder agradam usuários que optam por esse estilo.
Porém alguns usuários preferem jogadores mais altos e fortes, como: Gakpo, Cristiano Ronaldo e Haaland, tabelas como a abaixo, podem trazer os jogadores que mais se encaixam em seu estilo de jogo:
| player | country | club | age | altura_m | peso_kg | ofensivo | habilidade | movimentacao | forca | mentalidade | value |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Mohamed Salah | Egypt | Liverpool | 31 | 1.75 m | 71 kg | 80 | 81 | 90 | 80 | 78 | $99.500.000 |
| Neymar Jr | Brazil | Paris SG | 31 | 1.75 m | 68 kg | 80 | 89 | 87 | 71 | 77 | $99.500.000 |
| Lautaro Martínez | Argentina | Inter | 26 | 1.74 m | 72 kg | 79 | 75 | 86 | 82 | 77 | $79.500.000 |
| Lionel Messi | Argentina | Paris SG | 36 | 1.69 m | 67 kg | 85 | 93 | 88 | 77 | 74 | $54.000.000 |
| Leroy Sané | Germany | FC Bayern München | 27 | 1.83 m | 80 kg | 80 | 82 | 86 | 73 | 69 | $46.000.000 |
| Antoine Griezmann | France | Atlético de Madrid | 32 | 1.76 m | 73 kg | 84 | 85 | 83 | 82 | 79 | $45.500.000 |
| Domenico Berardi | Italy | Sassuolo | 29 | 1.83 m | 72 kg | 77 | 81 | 85 | 73 | 72 | $45.000.000 |
| João Félix | Portugal | Chelsea | 23 | 1.81 m | 72 kg | 78 | 80 | 83 | 75 | 72 | $43.500.000 |
| Cody Gakpo | Netherlands | Liverpool | 24 | 1.89 m | 76 kg | 76 | 78 | 81 | 79 | 68 | $42.000.000 |
| Marcus Rashford | England | Manchester Utd | 25 | 1.86 m | 70 kg | 76 | 80 | 83 | 79 | 72 | $42.000.000 |
| Ángel Correa | Argentina | Atlético de Madrid | 28 | 1.71 m | 70 kg | 78 | 78 | 87 | 75 | 74 | $39.500.000 |
| Ferran Torres | Spain | FC Barcelona | 23 | 1.84 m | 77 kg | 78 | 76 | 82 | 74 | 69 | $36.000.000 |
| Wissam Ben Yedder | France | AS Monaco | 33 | 1.70 m | 68 kg | 81 | 80 | 86 | 75 | 74 | $35.500.000 |
| Ronaldo Cabrais | Brazil | Brazil | 31 | 1.77 m | 75 kg | 76 | 83 | 84 | 77 | 71 | $35.000.000 |
| Eden Hazard | Belgium | Real Madrid | 32 | 1.75 m | 74 kg | 76 | 83 | 82 | 70 | 72 | $30.000.000 |
| Iago Aspas | Spain | RC Celta | 36 | 1.76 m | 67 kg | 82 | 82 | 81 | 71 | 73 | $26.000.000 |
| Luis Muriel | Colombia | Bergamo Calcio | 32 | 1.79 m | 79 kg | 76 | 77 | 86 | 74 | 66 | $25.500.000 |
| Henrikh Mkhitaryan | Armenia | Inter | 34 | 1.77 m | 75 kg | 76 | 77 | 83 | 75 | 75 | $16.000.000 |
| Kylian Mbappé | France | Paris SG | 24 | 1.82 m | 73 kg | 82 | 81 | 92 | 82 | 75 | $153.500.000 |
| Sadio Mané | Senegal | FC Bayern München | 31 | 1.74 m | 69 kg | 81 | 77 | 90 | 81 | 74 | $101.000.000 |
Conseguimos obter esses jogadores através do seguinte filtro:
Atacantes Brasileiros
Os melhores atacantes brasileiros do EA FC 24: Filtrando apenas os jogadores que possuem stats bons para atacantes.
Com isso, temos os melhores atacantes brasileiros do jogo, certo? Não! O Renan Lodi aparece em 9º nesta análise, apesar de ser Lateral Esquerdo (LE), ou seja, os stats não descrevem diretamente o que EXATAMENTE um jogador poderá realizar dentro do jogo, por isso as características são tão importantes!
Tabela gerada:
| player | country | club | age | altura_m | peso_kg | ofensivo | habilidade | movimentacao | forca | mentalidade | value |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Neymar Jr | Brazil | Paris SG | 31 | 1.75 m | 68 kg | 80 | 89 | 87 | 71 | 77 | $99.500.000 |
| Antony | Brazil | Manchester Utd | 23 | 1.72 m | 63 kg | 68 | 79 | 85 | 70 | 72 | $36.000.000 |
| Ronaldo Cabrais | Brazil | Brazil | 31 | 1.77 m | 75 kg | 76 | 83 | 84 | 77 | 71 | $35.000.000 |
| Rodrygo | Brazil | Real Madrid | 22 | 1.74 m | 64 kg | 72 | 77 | 85 | 71 | 65 | $30.500.000 |
| Gabriel Martinelli | Brazil | Arsenal | 22 | 1.78 m | 75 kg | 74 | 72 | 84 | 68 | 68 | $25.000.000 |
| Adryan Zonta | Brazil | Brazil | 31 | 1.72 m | 68 kg | 70 | 71 | 85 | 77 | 69 | $22.000.000 |
| Luimo Boas Santos | Brazil | Brazil | 23 | 1.76 m | 73 kg | 70 | 72 | 81 | 77 | 61 | $21.000.000 |
| Fred | Brazil | Manchester Utd | 30 | 1.69 m | 62 kg | 67 | 78 | 83 | 75 | 76 | $20.500.000 |
| Renan Lodi | Brazil | Nott’m Forest | 25 | 1.73 m | 68 kg | 70 | 73 | 81 | 74 | 71 | $18.500.000 |
| Romarinho | Brazil | Al Ittihad | 32 | 1.74 m | 69 kg | 71 | 73 | 85 | 74 | 63 | $12.000.000 |
Conseguimos obter esses jogadores através do seguinte filtro:
# Colocar apenas jogadores brasileiros
atacantes_br <- dados_fifa %>% filter(country == "Brazil")
# Filtrar jogadores com médias para BONS atacantes
jogadores_desejados <- atacantes_br %>%
filter(
ofensivo > 65,
habilidade > 70,
movimentacao > 78,
forca > 65,
mentalidade > 60
) %>%
arrange(desc(value))Melhores do mundo
Distribuição em cada categoria: para analisar a quantidade de jogadores extremamente bons, foi gerado um gráfico das porcentagens de jogadores em cada categoria de stats acima de 70:
Com essa análise, podemos observar que existem vários jogadores com bons números de movimentação, mas os atributos ofensivo, mentalidade e habilidade são uma parcela baixa de jogadores, o que os encaixa na pouca quantidade de jogadores que são considerados os melhores do mundo, os que podem ser encaixados nas 3 categorias acima de 70.
O gráfico foi gerado com o seguinte filtro:
# Calcular as porcentagens de jogadores com stats acima de 70 para diferentes atributos
porcentagens <- dados_fifa %>%
summarise(
ofensivo = mean(ofensivo > 70),
habilidade = mean(habilidade > 70),
movimentacao = mean(movimentacao > 70),
forca = mean(forca > 70),
mentalidade = mean(mentalidade > 70)
) %>%
gather(key = "atributo", value = "porcentagem")Defensores por altura
Divisão por faixa de altura: podemos extrair os melhores defensores baseado em stats, pegando apenas os jogadores com: força maior ou igual a 70, mentalidade maior ou igual a 65, movimentação maior ou igual a 75 e separá-los por altura:
Com essa análise, podemos observar que existem pouquíssimos jogadores com bons números de força, mentalidade, movimentação maiores que 1,85m, que seriam ótimos zagueiros. Por se aproveitarem da altura e ainda assim conseguiriam ser rápidos para defender diversos setores do campo.
O gráfico foi gerado com o seguinte filtro:
# Filtrar os dados
jogadores_filtrados <- dados_fifa %>%
filter(forca >= 70, mentalidade >= 65, movimentacao >= 75,
height >= 150 & height < 176 |
height >= 176 & height < 186 |
height >= 186)
# Definir faixas de altura em metros
faixas_altura <- c("1.50 - 1.75 m", "1.76 - 1.85 m", "Maior que 1.85 m")
# Contar o número de jogadores em cada categoria de altura
contagem_altura <- jogadores_filtrados %>%
mutate(categoria_altura = cut(height, breaks = c(150, 176, 186, Inf),
labels = faixas_altura)) %>%
group_by(categoria_altura) %>%
summarise(total_jogadores = n())Elasticidade dos goleiros
Podemos relacionar a elasticidade dos goleiros: com essas informações podemos análisar a relação que demonstra que jogadores mais velhos possuem normalmente menos elasticidade já em jogadores mais novos essa amostra de jogadores com boa elasticidade é bem maior.
O gráfico foi gerado com o seguinte filtro:
# Filtrar os goleiros com elasticidade_gl > 60
goleiros_elasticos <- goleiros %>%
filter(elasticidade_gl > 60)
# Criar o gráfico de dispersão
ggplot(goleiros_elasticos, aes(x = age, y = elasticidade_gl)) +
geom_point(color = "blue") +
labs(title = "Elasticidade dos Goleiros em Relacao a Idade",
x = "Idade",
y = "Elasticidade Goalkeeper") +
scale_x_continuous(breaks = seq(min(goleiros_elasticos$age), max(goleiros_elasticos$age), by = 1))Jogadores por país
Podemos exibir a porcentagem de jogadores nascidos no mesmo país: com essas informações podemos análisar a nacionalidade dos jogadores podendo assim melhorar o entrosamento dos times montados, tendo abaixo o top 10 de países com mais jogadores.
O gráfico foi gerado com o seguinte filtro:
# Contar o número de jogadores por país
contagem_pais <- dados_fifa %>%
count(country) %>%
arrange(desc(n)) %>%
top_n(10)
# Calcular as porcentagens
contagem_pais <- contagem_pais %>%
mutate(percent = n / sum(n) * 100)
# Definir um vetor de cores com 10 para os países
cores <- c("lightblue2", "green2", "lightgray", "blue2", "red4", "red1", "orange1", "pink", "yellow", "purple3")
# Criar o gráfico de pizza com porcentagens e cores alteradas
ggplot(contagem_pais, aes(x = "", y = n, fill = country)) +
geom_bar(stat = "identity") +
coord_polar("y", start = 0) +
labs(title = "Distribuicao dos Jogadores por Pais",
fill = "Pais") +
theme_void() +
geom_text(aes(label = paste0(round(percent), "%")), position = position_stack(vjust = 0.5)) +
scale_fill_manual(values = cores) # Define as cores usando o vetor coresConclusão
Conclusão do estudo
Após os exemplos apresentados, fica evidente que é viável extrair informações relevantes sobre os jogadores e exibi-las em tabelas e gráficos, embora ainda existam exceções e detalhes que requerem testes dentro do jogo para entender como cada estatística influencia sua performance.
A determinação dos melhores jogadores não pode ser baseada exclusivamente em estatísticas, pois cada usuário possui um estilo de jogo único e suas preferências individuais influenciam na escolha dos jogadores, seja por sua velocidade, força, altura ou outras características.
Quais usuários devem se interessar por esse estudo?
Principalmente proplayers de EA FC 24 podem analisar os jogadores para escolher os que se encaixam melhor no seu estilo e como podem melhorar seu desempenho dentro do jogo. Usuários casuais podem analisar para suas carreiras e times competitivos, escolhendo também opções para se adaptar ao seu estilo.
Como os usuários podem utilizar esse estudo?
Com os filtros disponíveis, os usuários podem selecionar jogadores com características que se alinham ao seu estilo de jogo e montar times mais eficientes. No entanto, é importante ressaltar que testes práticos dentro do jogo são necessários para validar a performance dos jogadores selecionados.
Esta abordagem permite aos usuários tomar decisões mais informadas ao montar suas equipes, considerando não apenas estatísticas, mas também suas próprias preferências e experiências pessoais no jogo.