Projeto de análise de dados de jogadores do EA Sport's FC 26 para a disciplina de Tópicos Especiais em Programação.
Este projeto realiza análises exploratórias e visualizações de dados sobre jogadores de futebol do FC 26, utilizando Python com paradigma de Orientação a Objetos (OOP), Pandas para ETL e Matplotlib para visualizações.
- Aplicar conceitos de Programação Orientada a Objetos
- Realizar processos de ETL (Extract, Transform, Load)
- Criar visualizações significativas de dados
- Implementar operações de agregação (group by)
- Desenvolver análises estatísticas sobre jogadores de futebol
fc26_analysis/
├── README.md # Este arquivo
├── dataset.txt # Referências do dataset
├── .gitignore # Arquivos ignorados pelo Git
│
├── src/ # Código fonte (módulos Python)
│ ├── __init__.py # Inicializador do pacote
│ ├── data_loader.py # Classe para carregamento de dados
│ ├── data_transformer.py # Classe para transformações
│ └── visualizer.py # Classe para visualizações
│
├── notebooks/ # Notebooks Jupyter
│ ├── 01_ratings_por_posicao.ipynb # Análise por posição
│ ├── 02_top_clubes.ipynb # Top clubes
│ ├── 03_evolucao_idade.ipynb # Evolução por idade
│ ├── 04_analise_ligas.ipynb # Análise de ligas
│ └── 05_distribuicao_ratings.ipynb # Distribuição de ratings
│
└── data/ # Dados (não incluído no Git)
└── fc26_players.csv # Dataset principal
- Python 3.8+
- Pandas - Manipulação e análise de dados
- Matplotlib - Visualização de dados
- NumPy - Operações numéricas
- Jupyter Notebook - Ambiente de desenvolvimento
- Objetivo: Analisar a média de ratings por posição dos jogadores
- Group By: Posição
- Gráfico: Barras
- Insights: Identificar posições com melhores avaliações
- Objetivo: Identificar os melhores clubes por rating médio
- Group By: Clube
- Gráfico: Pizza
- Insights: Distribuição de qualidade entre clubes de elite
- Objetivo: Comparar overall vs potential por faixa etária
- Group By: Faixa etária
- Gráfico: Linha (2 séries)
- Insights: Curva de desenvolvimento dos jogadores
- Objetivo: Comparar métricas ofensivas e defensivas por liga
- Group By: Liga
- Gráfico: Barras agrupadas (2 séries)
- Insights: Características táticas de cada liga
- Objetivo: Analisar distribuição geral de ratings
- Gráfico: Histograma
- Insights: Padrão de distribuição da qualidade dos jogadores
# Instalar dependências
pip install -r requirements.txt-
Clone ou baixe o projeto
cd fc26_analysis -
Baixe o dataset do Kaggle
- Acesse: [FC 26 Player Data no Kaggle]
- Coloque o arquivo CSV na pasta
data/
-
Execute os notebooks
jupyter notebook
-
Abra os notebooks na pasta
notebooks/
-
DataLoader (Singleton Pattern)
- Responsabilidade única: Carregar dados
- Garante uma única instância
- Métodos:
load_data(),get_data(),get_info()
-
DataTransformer
- Responsabilidade única: Transformar dados
- Method chaining para operações sequenciais
- Métodos:
group_by_aggregate(),clean_data(),filter_data()
-
DataVisualizer
- Responsabilidade única: Criar visualizações
- Encapsula lógica de plotagem
- Métodos:
plot_bar_chart(),plot_line_chart(),plot_pie_chart(),plot_histogram()
- ✅ Single Responsibility: Cada classe tem uma responsabilidade
- ✅ Open/Closed: Classes abertas para extensão, fechadas para modificação
- ✅ Encapsulation: Dados e métodos encapsulados
- Agrupamento por posição
- Agrupamento por clube
- Agrupamento por faixa etária
- Agrupamento por liga
- Gráfico de barras
- Gráfico de linhas
- Gráfico de pizza
- Overall vs Potential
- Métricas ofensivas vs defensivas
- Distribuição de ratings
- ✅ 5 notebooks desenvolvidos
- ✅ 4 notebooks com group by
- ✅ 3 tipos de gráficos (linha, barra, pizza)
- ✅ 2 notebooks com 2 séries em Y
- ✅ 1 notebook com histograma
- ✅ Extração, Transformação e Carga (ETL)
- ✅ Visualizações com Matplotlib
- ✅ Explicações em Markdown
- ✅ Arquivo dataset.txt com referências
- ✅ .gitignore configurado
- ✅ Uso de Orientação a Objetos
[Lucas Galvão Freitas]
Disciplina: Tópicos Especiais em Programação - ECOX14
Data: Outubro 2025
Este projeto é para fins educacionais e de pesquisa.
- Dataset: [FC 26 Player Data - Kaggle]
- Fonte original: sofifa.com
- Pandas Documentation: https://pandas.pydata.org/
- Matplotlib Documentation: https://matplotlib.org/
Nota: Os dados são excluídos do repositório Git conforme especificado no .gitignore.