Introdução à Ciência de Dados

Prof. Washington Santos da Silva

IFMG - Campus Formiga

16 de abril de 2025

Diário de Bordo

O que vimos até hoje?

  • Aula 1 ✅

    • Introdução e Contextualização ✅
    • O que é Ciência de Dados? ✅
    • Papéis Profissionais na Área de Dados ✅
    • Áreas de Aplicações ✅
    • Habilidades Interpessoais e Analíticas ✅
    • Apresentação da Disciplina ✅
  • Aula 2 ✅

    • Metodologia CRISP-DM ✅

    • Tipos de Análise ✅

      • Descritiva ✅
      • Diagnóstica ✅
      • Preditiva ✅
      • Prescritiva ✅
    • Configurações: Git/GitHub ✅

  • Aula 3 ✅

    • Introdução ao RStudio ✅

      • Criação do seu Projeto RStudio da Disciplina ✅
  • Aula 4 ✅

    • Introdução ao Git e GitHub ✅

      • Criação do seu repositório do projeto RStudio da disciplina no GitHub ✅
  • Aula 5 ✅

    • Breve Revisão do IDE RStudio ✅

    • Introdução ao Sistema de Publicação Quarto ✅

    • Sessão Prática Guiada com Relatório 1 ✅

      • Execução dos comandos git essenciais ✅
  • Aula 6 ✅

    • Parte I ✅

      • O Relatório Junglivet e a Metodologia CRISP-DM ✅
      • Primeiro contato com a linguagem R por meio dos códigos do relatório ✅
    • Parte II ✅

      • Para alunos com projetos estruturados ✅
      • Atividade prática ✅
      • Para alunos com dificuldades técnicas ✅
      • Atendimento individualizado para estruturação de projetos ✅

Objetivos da Aula 6

O que esperávamos alcançar?

  1. Todos os alunos com:

    • Projeto RStudio estruturado corretamente
    • Repositório Git/GitHub funcionando
    • Relatório Junglivet renderizado com sucesso
  2. Preparação para:

    • Iniciar o aprendizado formal da linguagem R
    • Importação e manipulação básica de dados

Nesta Aula

Tópicos

  • Introdução ao sistema Quarto (continuação):

    • Gerar relatório no formato pdf
    • Gerar relatório no formato docx
  • Introdução à Linguagem R (continuação):

    • Conceitos: Variáveis e observações
    • Estrutura tabular organizada de dados
    • Tipos e classes de dados principais em R
    • Estruturas de dados: vetores e data frames

Diretrizes para Aulas Mais Produtivas

🔊 Mantenha conversas em volume baixo

⌨️ Código com método:

95% dos erros são evitáveis com:

  • Atenção na digitação
  • Respeitar a sequência lógica de etapas
  • Revisão antes de pedir ajuda

🤝 Inteligência colaborativa:

  • Compartilhe conhecimento
  • Resolva questões técnicas simples com colegas próximos
  • Reserve ao professor as dúvidas conceituais complexas

💪 Capacidade de Resolver Problemas

Cada erro resolvido é uma evolução da sua habilidade analítica

Introdução ao sistema Quarto (cont.)

Relatórios em Diferentes Formatos

Relatórios em pdf e docx

Para finalizar a introdução ao sistema de publicação Quarto vamos:

  1. Gerar um relatório no formato pdf para o relatório contendo o estudo de caso sobre a destilaria Junglivert (01-relatorio-html.qmd).

  2. Gerar um relatório no formato docx para o mesmo relatório da Junglivert.

Relatório no formato pdf

Instruções

  • Abra o Rstudio e o seu projeto RStudio da disciplina.

  • Abra o Windows Explorer

  • Copie o arquivo 01-relatorio-html.qmd para subpasta 02-relatorio da pasta relatorios.

  • Renomeie esse arquivo como 02-relatorio-pdf.qmd

  • No RStudio, abra o arquivo 02-relatorio-pdf.qmd

  • Apague todo o cabeçalho yaml, copie o cabeçalho do próximo slide e cole no local do cabeçalho anterior.

  • Renderize o arquivo 02-relatorio-pdf.qmd clicando em Render.

Cabeçalho para Relatório pdf

---
title: "Caso Junglivet Whisky Company"
subtitle: "Introdução à CRISP-DM, RStudio, Sistema Quarto e Linguagem R"
lang: pt-BR
author: "Seu Nome"
date: 2025-04-16
date-format: long
format:
  typst:
    columns: 1
    toc: true
    papersize: a4
    fontsize: 12pt
    number-sections: true
execute:
  echo: true
  warning: false
  message: false
---

Relatório no formato docx

Instruções

  • Abra o Windows Explorer

  • Copie o arquivo 01-relatorio-html.qmd para subpasta 03-relatorio da pasta relatorios.

  • Renomeie esse arquivo como 03-relatorio-docx.qmd

  • No RStudio, abra o arquivo 03-relatorio-docx.qmd

  • Apague todo o cabeçalho yaml, copie o cabeçalho do próximo slide e cole no local do cabeçalho anterior.

  • Renderize o arquivo 03-relatorio-docx.qmd clicando em Render.

Cabeçalho para Relatório docx

---
title: "Caso Junglivet Whisky Company"
subtitle: "Introdução à CRISP-DM, RStudio, Sistema Quarto e Linguagem R"
lang: pt-BR
author: "Seu Nome"
date: 2025-04-16
format: 
  docx:
    number-sections: true
execute:
  message: false
  warning: false
  echo: true
---

Sistema Quarto: Um Diferencial

Vantagens Estratégicas para Administradores

  • Reprodutibilidade como valor profissional

    • Análises que podem ser verificadas, auditadas e atualizadas automaticamente

    • Documentação completa do processo decisório baseado em dados

  • Comunicação eficiente em múltiplos formatos

    • Mesmo código gera relatórios em diferentes formatos (html, pdf, docx) e para públicos diferentes.

    • Transição fluida entre análise técnica e apresentação executiva

Sistema Quarto: Um Diferencial

Vantagens Estratégicas para Administradores

  • Diferencial competitivo no mercado

    • Domínio de ferramentas modernas de análise de dados
    • Capacidade de integrar áreas técnicas e de negócios
  • Economia de tempo e redução de erros

    • Fim do ciclo “copiar e colar” entre análises e relatórios
    • Atualizações instantâneas quando os dados mudam
  • Credibilidade técnica em ambientes corporativos

    • Demonstração tangível de rigor analítico
    • Comunicação profissional com base em evidências

Atualizando os Repositórios

Instruções

  1. No terminal do RStudio, verifique quais arquivos/pastas foram modificados ou criados com:
git status
  1. Você pode adicionar todos os arquivos de uma vez com:
git add .
  1. Execute git status novamente para confirmar que todos os arquivos foram adicionados (aparecerão em verde sob “Changes to be committed”):
git status
  1. Se tudo estiver em verde, faça um commit com uma mensagem descritiva:
git commit -m "atualizacoes aula 7"
  1. Se algum arquivo ou pasta ainda aparecer em vermelho após o segundo git status, adicione as pastas/arquivos um por um:
git add relatorios/02-relatorio/02-relatorio-pdf.qmd
git add relatorios/03-relatorio/03-relatorio-docx.qmd
  1. Execute git status novamente e faça o commit quando todos os arquivos estiverem em verde:
git commit -m "atualizacoes aula 7"
  1. Envie o repositório local atualizado para o GitHub:
git push origin main

Introdução à Linguagem R (cont.)

Conceito Estatístico: Variáveis

Definição

Em Estatística, uma variável é uma característica que pode variar em valor entre os indivíduos de uma amostra ou população.

  • Qualquer característica que podemos medir para os elementos de uma população (ou amostra) é chamada de variável.

  • O termo reflete o fato de que os valores da característica variam entre os elementos de uma população.

Conceito Estatístico: Observações

Definição

Em Estatística, uma observação representa uma unidade amostral individual dentro de um conjunto de dados.

  • Cada observação corresponde a um elemento específico da população ou amostra (por exemplo, uma pessoa, uma empresa, um país)

  • Cada observação contém valores para diversas variáveis, formando um registro completo de características para aquela unidade específica

  • O conjunto de todas as observações constitui o conjunto de dados que analisamos

Relação entre Variáveis e Observações

Descrição

Estrutura dos dados: Organizamos os dados em formato tabular onde:

  • Cada linha representa uma observação individual

  • Cada coluna representa uma variável específica

  • Cada célula contém um valor de uma variável para uma observação específica

  • Esta estrutura é necessária para permitir a análise de dados.

  • Intuição: Se as variáveis são “o que” medimos, as observações são “sobre quem” ou “sobre o que” estamos medindo.

Dados em Formato Tabular

┌─────────────────────────────────────────┐
│                                         │
│          Variáveis (Colunas)            │
│    ┌──────┬──────┬──────┬──────┐        │
│    │ Var1 │ Var2 │ Var3 │ Var4 │        │
│    ├──────┼──────┼──────┼──────┤        │
│    │  •   │  •   │  •   │  •   │  Obs1  │
│    ├──────┼──────┼──────┼──────┤        │
│ O  │  •   │  •   │  •   │  •   │  Obs2  │
│ b  ├──────┼──────┼──────┼──────┤        │
│ s  │  •   │  •   │  •   │  •   │  Obs3  │
│ e  ├──────┼──────┼──────┼──────┤        │
│ r  │  •   │  •   │  •   │  •   │  Obs4  │
│ v  ├──────┼──────┼──────┼──────┤        │
│ a  │  •   │  •   │  •   │  •   │  Obs5  │
│ ç  ├──────┼──────┼──────┼──────┤        │
│ õ  │  •   │  •   │  •   │  •   │  Obs6  │
│ e  ├──────┼──────┼──────┼──────┤        │
│ s  │  •   │  •   │  •   │  •   │  Obs7  │
│    ├──────┼──────┼──────┼──────┤        │
│    │  •   │  •   │  •   │  •   │  Obs8  │
│    └──────┴──────┴──────┴──────┘        │
│                                         │
└─────────────────────────────────────────┘

Exemplo: Dados Desorganizados

| Departamento | Vendas 2023 T1 | Vendas 2023 T2 | Vendas 2023 T3 | Vendas 2023 T4 | Despesas 2023 T1 | Despesas 2023 T2 | Despesas 2023 T3 | Despesas 2023 T4 | Funcionários 2023 T1 | Funcionários 2023 T2 | Funcionários 2023 T3 | Funcionários 2023 T4 |
|--------------|----------------|----------------|----------------|----------------|------------------|------------------|------------------|------------------|----------------------|----------------------|----------------------|----------------------|
| Marketing    | 120.000        | 150.000        | 180.000        | 210.000        | 80.000           | 90.000           | 95.000           | 110.000          | 12                   | 14                   | 14                   | 15                   |
| Vendas       | 350.000        | 420.000        | 380.000        | 520.000        | 150.000          | 160.000          | 155.000          | 175.000          | 25                   | 28                   | 30                   | 32                   |
| Operações    | 90.000         | 95.000         | 100.000        | 110.000        | 70.000           | 75.000           | 80.000           | 85.000           | 18                   | 18                   | 20                   | 22                   |

Por que estes dados estão desorganizados?

  • As colunas contém mais de uma variável: As informações sobre ano e trimestre estão incorporadas nos nomes das colunas ao invés de serem colunas (variável) separadas.

  • Estrutura rígida e difícil de expandir: Adicionar um novo ano ou um novo tipo de métrica exigiria criar várias colunas novas.

  • Análise temporal comprometida: Dificulta a análise de tendências ao longo do tempo, por exemplo, comparar o mesmo trimestre em anos diferentes.

  • Cálculos complexos: Calcular métricas derivadas como lucro (vendas - despesas) se torna uma tarefa complicada.

  • Visualização limitada: Criar gráficos de série temporal ou comparar métricas entre departamentos requer manipulação prévia dos dados.

Exemplo: Dados Organizados

| Departamento | Ano  | Trimestre | Métrica      | Valor    |
|--------------|------|-----------|--------------|----------|
| Marketing    | 2023 | T1        | Vendas       | 120.000  |
| Marketing    | 2023 | T2        | Vendas       | 150.000  |
| Marketing    | 2023 | T3        | Vendas       | 180.000  |
| Marketing    | 2023 | T4        | Vendas       | 210.000  |
| Marketing    | 2023 | T1        | Despesas     | 80.000   |
| Marketing    | 2023 | T2        | Despesas     | 90.000   |
| Marketing    | 2023 | T3        | Despesas     | 95.000   |
| Marketing    | 2023 | T4        | Despesas     | 110.000  |
| Marketing    | 2023 | T1        | Funcionários | 12       |
| Marketing    | 2023 | T2        | Funcionários | 14       |
| Marketing    | 2023 | T3        | Funcionários | 14       |
| Marketing    | 2023 | T4        | Funcionários | 15       |
| Vendas       | 2023 | T1        | Vendas       | 350.000  |
| Vendas       | 2023 | T2        | Vendas       | 420.000  |
| ...          | ...  | ...       | ...          | ...      |

Conceito Estatístico: Tipos de Variáveis

Variáveis Quantitativas/Numéricas

Definição

  • Uma variável é chamada de quantitativa quando a escala de medição possui valores numéricos que representam diferentes magnitudes da variável.

  • Variáveis quantitativas são frequentemente chamadas de numéricas.

  • Uma variável quantitativa é discreta se puder assumir um conjunto de valores distintos, como os inteiros não negativos \((0, 1, 2, 3, \ldots)\).

  • Uma variável quantitativa é contínua se puder assumir um continuum infinito de possíveis valores de números reais, pelo menos teoricamete.

  • Na prática, arredondamos variáveis contínuas ao medi-las, de modo que a medida real é discreta. Ainda assim, estas variáveis são tratadas como variáveis contínuas.

  • Os métodos de análise estatística dependem da escala de medição (tipo) de uma variável de interesse.

Variáveis Qualitativas/Categóricas

Definição

Uma variável é chamada de categórica quando a escala de medição é um conjunto de categorias.

  • Variáveis categóricas cque possuem apenas duas categorias, como empregado (sim ou não), são também chamadas de binárias.

  • Variáveis categóricas são frequentemente chamadas de qualitativas.

  • Variáveis categóricas possuem dois tipos de escalas de medição: nominal e ordinal.

  • Escala Nominal: Quando as categorias nõa possuem uma hierarquia. Exemplos: cor, sexo, racá, etc.

  • Escala Ordinal: Quando as categorias possuem uma hierarquia natural. Exemplos: Nível de Escolaridade (Fundamental, Médio e Superior). Score de Crédito (risco pequeno, risco moderado, alto risco), etc.

  • Os métodos de análise estatística dependem da escala de medição (tipo) de uma variável de interesse.

Tipos e Classes de Dados

A Importância de Conhecer Tipos e Classes de Dados

  • Se os métodos de análise estatística dependem da escala de medição (tipo) de uma variável de interesse, compreender os tipos e classes de dados da linguagem R (ou de qualquer outra) é fundamental.

  • Cada tipo de análise ou de gráfico exige que as variáveis sejam de um tipo ou classe específicos e estejam organizadas em uma estrutura de dados específica.

  • Na prática da ciência ou análise de dados, estima-se que analistas e cientistas dedicam entre 60% a 80% do tempo de um projeto à importação, limpeza e preparação dos dados antes de iniciar as análises.

Tipos/Classes Principais

Tipo Classe Descrição
double numeric armazena valores reais (números com casas decimais)
integer numeric armazena valores inteiros (números sem casas decimais)
character character armazena valores de texto (caracteres)
logical logical armazena valores lógicos (TRUE/FALSE)
NA Not Available: representa valores faltantes
NaN Not a Number: exemplo: 0/0
Inf Infinity: exemplo: 1/0

Dicas

  • O tipo atômico se refere a como R armazena o objeto internamente.
  • A classe se refere a como R trata um objeto em operações e funções.

Tipos Atômicos Principais

  • Após importarmos um arquivo de dados e verificarmos como R entendeu cada coluna/variável importada, precisamos converter os tipos definidos para classes adequadas para análises posteriores.
Tipo Converter para Função para Conversão
double numeric as.numeric()
integer numeric (ou integer) as.numeric (ou as.integer)
character factor as.factor

Classe factor

Descrição

  • A classe factor da linguagem R é apropriada para representar variáveis categóricas nominais ou ordinais.
# Vetor de texto com dados brutos
estado_civil <- c(
  "Casado", "Solteiro", "Divorciado", "Solteiro",
  "Casado", "Viúvo", "Solteiro", "Divorciado"
)

# Convertendo para fator (variável categórica nominal)
estado_civil_fator <- factor(estado_civil)

# Vizualizando o objetoa
estado_civil_fator
[1] Casado     Solteiro   Divorciado Solteiro   Casado     Viúvo      Solteiro  
[8] Divorciado
Levels: Casado Divorciado Solteiro Viúvo
# verificando a classe
class(estado_civil_fator)
[1] "factor"

Classe factor

# Vetor de texto com dados brutos
escolaridade <- c(
  "Médio", "Fundamental", "Superior", "Superior",
  "Médio", "Pós-graduação", "Fundamental", "Médio"
)

# Convertendo para fator ordenado com níveis explícitos
escolaridade_fator <- factor(escolaridade,
  levels = c("Fundamental", "Médio", "Superior", "Pós-graduação"),
  ordered = TRUE # indica que é um fator ordenado
)

# Visualizando o fator e sua estrutura
escolaridade_fator
[1] Médio         Fundamental   Superior      Superior      Médio        
[6] Pós-graduação Fundamental   Médio        
Levels: Fundamental < Médio < Superior < Pós-graduação
# verificando a classe
class(escolaridade_fator)
[1] "ordered" "factor" 

Exemplo: Relatório JungLivert

Verificando a estrutura dos dados

  • Após importar os dados, analisamos o tipo de cada variável (coluna) importada.
# Importa o arquivo de dados

## Define o caminho relativo do arquivo no projeto RStudio
caminho <- here::here("dados/brutos/productionlog_sample.csv")

## Importa o arquivo com a funçào read_csv
dados_destilaria <- readr::read_csv(caminho)

# Verificar a estrutura dos dados
dplyr::glimpse(dados_destilaria)
Rows: 21
Columns: 8
$ DAY          <dbl> 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, NA, 6, 6, 7, 7, 8, 8, 9, 9,…
$ MONTH        <dbl> 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, NA, 4, 4, 4, 4, 4, 4, 4, 4,…
$ MANUFACTURER <chr> "Leonard", "Carlson", "Leonard", "Carlson", "Leonard", "C…
$ PRODUCT      <chr> "Junglivet", "Junglivet Premium", "Junglivet", "Junglivet…
$ SHIFT        <chr> "Morning", "Evening", "Morning", "Evening", "Morning", "E…
$ COLOR        <dbl> 0.27, 0.27, 0.28, 0.32, 0.32, 0.28, 0.29, 0.29, 0.33, 0.2…
$ MALTING      <chr> "Inhouse", "Burns Best Ltd.", "Inhouse", "Inhouse", "Matr…
$ TASTING      <dbl> 895, 879, 938, 900, 917, 900, 934, 951, 852, 850, NA, 991…

Exemplo: Relatório JungLivert

dados_destilaria_limpos <- dados_destilaria %>%
  select(-MONTH) %>%
  rename(
    dia = DAY,
    mestre_responsavel = MANUFACTURER,
    tipo_produto = PRODUCT,
    turno = SHIFT,
    cor = COLOR,
    fornecedor_malte = MALTING,
    indicador_qualidade = TASTING,
  ) %>%
  # Em seguidda, convertemos cada variável para classes adequadas
  mutate(
    dia = as.numeric(dia),
    mestre_responsavel = as.factor(mestre_responsavel),
    tipo_produto = as.factor(tipo_produto),
    turno = as.factor(turno),
    cor = as.numeric(cor),
    fornecedor_malte = as.factor(fornecedor_malte),
    indicador_qualidade = as.numeric(indicador_qualidade)
  ) %>%
  drop_na()

Estruturas de Dados Principais

Vetor

  • Estrutura fundamental em R: todos os tipos básicos são armazenados como vetores

  • Definição: Coleção de elementos do mesmo tipo de dados

  • Criação com a função c() (concatenate/combine):

Vetores - exemplos

# cria um vetor numérico manualmente
idades <- c(22, 25, 19, 30, 27)
idades
[1] 22 25 19 30 27
# cria um vetor de caracteres
nomes <- c("Ana", "Bruno", "Carla", "Daniel", "Eduarda")
nomes
[1] "Ana"     "Bruno"   "Carla"   "Daniel"  "Eduarda"
# cria um vetor lógico
aprovados <- c(TRUE, FALSE, TRUE, TRUE, FALSE)
aprovados
[1]  TRUE FALSE  TRUE  TRUE FALSE

Estruturas de Dados Principais

Data Frames e Tibbles

  • Data frame: Estrutura tabular (similar a uma planilha Excel)

    • Coleção de vetores de mesmo comprimento mas que podem ser de tipos diferentes

    • Cada coluna = um vetor = uma variável

    • Cada linha = uma observação

  • Tibble: Versão moderna de data frame do pacote tibble (parte do tidyverse)

    • Mais consistente e previsível que as data frames

    • Inclui o tipo de cada coluna ao imprimir

    • Não converte strings em fatores automaticamente

Data Frames e Tibbles

Representação Visual

Exemplo de data frame/tibble

# cria vetores manualmente
idades <- c(22, 25, 19, 30, 27)
nomes <- c("Ana", "Bruno", "Carla", "Daniel", "Eduarda")
aprovados <- c(TRUE, FALSE, TRUE, TRUE, FALSE)

# a funcao data.frame cria uma data frame usando os vetores
dados <- data.frame(idades, nomes, aprovados)

# exibe a data frame criada
dados
  idades   nomes aprovados
1     22     Ana      TRUE
2     25   Bruno     FALSE
3     19   Carla      TRUE
4     30  Daniel      TRUE
5     27 Eduarda     FALSE

Exemplo de data frame/tibble

# head exibe as 6 primeiras linhas de um objeto
head(dados_destilaria_limpos)
# A tibble: 6 × 7
    dia mestre_responsavel tipo_produto      turno     cor fornecedor_malte
  <dbl> <fct>              <fct>             <fct>   <dbl> <fct>           
1     1 Leonard            Junglivet         Morning  0.27 Inhouse         
2     1 Carlson            Junglivet Premium Evening  0.27 Burns Best Ltd. 
3     2 Leonard            Junglivet         Morning  0.28 Inhouse         
4     2 Carlson            Junglivet         Evening  0.32 Inhouse         
5     3 Leonard            Junglivet         Morning  0.32 Matro Ltd.      
6     3 Carlson            Junglivet         Evening  0.28 Inhouse         
# ℹ 1 more variable: indicador_qualidade <dbl>

Acessando uma Coluna/Variável

# acesse com $
dados_destilaria_limpos$indicador_qualidade
 [1] 895 879 938 900 917 900 934 951 852 850 991 950 863 936 996 978 989 999 831
[20] 822

Acessando uma Coluna/Variável

# acesse com $
dados_destilaria_limpos$fornecedor_malte
 [1] Inhouse         Burns Best Ltd. Inhouse         Inhouse        
 [5] Matro Ltd.      Inhouse         Inhouse         Matro Ltd.     
 [9] Matro Ltd.      Inhouse         Inhouse         Inhouse        
[13] Burns Best Ltd. Burns Best Ltd. Burns Best Ltd. Matro Ltd.     
[17] Inhouse         Inhouse         Burns Best Ltd. Matro Ltd.     
Levels: Burns Best Ltd. Inhouse Matro Ltd.

data frame e tibble

# exibe a estrutura dos dados
class(dados_destilaria_limpos)
[1] "tbl_df"     "tbl"        "data.frame"

Data Frames e Tibbles

  • Ao importar dados, todo objeto lido por R como uma data frame, também será uma tibble.

Recursos Adicionais