Olá, pessoal! Boas-vindas ao curso de Dashboard com R. Meu nome é Gabriel, e eu irei acompanhar vocês durante todo curso. Este curso é para quem quer ou tem interesse em aprender sobre desenvolvimento completo de uma aplicação de análise de dados com R.
Aqui, nós vamos abordar alguns processos de um projeto de análise de dados, ou seja, por exemplo, vamos coletar a base de dados, vamos tratar também essa base de dados utilizando um recurso mais avançado, o pacote Dplyr.
Então temos aqui seleção de colunas, filtragem de registro, vamos filtrar algumas linhas, substituição de registros, correção de algumas coisas, fazer algumas novas filtragens, então vamos aplicar todo o processo de tratamento de dados após fazer as verificações ou substituição de registros repetidos, com mesma informação, vamos deixar os dados mais homogêneos e, por fim, nós vamos salvar os dados dentro de uma nova base, dentro de um novo registro com os dados já limpos, pré-processados.
Após esse procedimento, nós vamos desenvolver alguns gráficos utilizando o pacote ggplot2, porém uns gráficos interativos, temos algumas interações nos gráficos usando o pacote ggplot2 com plotly, podemos adicionar algumas interatividades. Vamos gerar diversos tipos de gráficos dentro do nosso curso.
E, para finalizar, você também vai aprender a desenvolver uma aplicação web totalmente em R, igual a essa aplicação com alguns menus, interação na página etc.
Por exemplo, podemos observar que temos os filtros, alterações nos nossos gráficos, isso totalmente na linguagem de programação web.
Para o bom acompanhamento do que será apresentado, é necessário que você tenha alguns conhecimentos sobre programação com R e gráficos com ggplot2. Fazendo esse curso, você conseguirá desenvolver um projeto completo de análise de dados com R. Temos bastante conteúdo legal para estudar, então, vamos começar o curso.
Vamos trabalhar com o seguinte cenário: uma determinada empresa de advocacia contratou você para fazer um sistema de Dashboards com os dados das reclamações registradas nos PROCONs do Brasil inteiro. A empresa deseja utilizar esse sistema para traçar novas estratégias por parte da equipe comercial, vendas, marketing e equipe técnica para focar melhor os planos de ações.
A empresa deseja obter informações como: quantidade de reclamações por data, quantidade de reclamações por unidade federativa, ou seja, os estados e o Distrito Federal, quantidade de reclamações atendidas, e quantidade de reclamações atendidas por ano. Além disso, a empresa também deseja que esse sistema permita fazer filtros com base nas unidades de federações, por data de abertura da reclamação e a descrição do assunto da reclamação.
A nossa base de dados é composta pelos seguintes campos: anocalendario, DataArquivamento, DataAbertura, região e Unidade Federativa. Você pode observar que os campos região e unidade federativa já possuem alguns valores pré-definidos. Por exemplo, região, nós sabemos que temos no Brasil algumas regiões, por exemplo, nordeste, centro-oeste, norte, entre outras.
Coluna | Tipo | Valores |
---|---|---|
anocalendario | Inteiro | 2009... 2017 |
DataArquivamento | Data | YYYY-MM-DD |
DataAbertura | Data | YYYY-MM-DD |
regiao | Texto | Nordeste... centro-oeste |
UF | Texto | DF... RJ |
Então, os nossos dados da base de dados devem ter esses seguintes valores. A unidade federativa também tem valores pré-definidos, DF, que é o Distrito Federal, Rio de Janeiro, que é RJ, SP, que é São Paulo, dentre outros valores. Então, os nossos registros da nossa base de dados tem que ter esses valores.
Vamos continuar. Temos também o Tipo, o CNAEPrincipal, o DescCNAEPrincipal, Atendida, CodigoAssunto, DescricaoAssunto. Você pode observar que o campo Atendida vai ter dois possíveis valores: S de atendida e N para não atendida. Então, nós temos que, com base nessas informações, nós vamos ter os dados de acordo com elas.
Coluna | Tipo | Valores |
---|---|---|
Tipo | Flag | 0-CPF 1-CNPJ |
CNAEPrincipal | Texto | Código Identificador da Classificação nacional de atividades Econômicas principal do fornecedor |
DescCENAEPrincipal | Texto | Descrição Classificação Nacional de Atividades Econômicas principal do fornecedor |
Atendida | Texto | S-Atendida N-NÃO Atendida |
CodigoAssunto | Número | Identificador Assunto |
DescricaoAssunto | Texto | Descrição Assunto |
E por fim, temos esses outros campos aqui: CodigoProblema, DescricaoProblema, SexoConsumidor, mais uma vez esse campo está em destaque, significa que possivelmente os valores que aparecerão nesse campo: M para masculino, F para feminino e N não se aplica.
Coluna | Tipo | Valores |
---|---|---|
CodigoProblema | Número | Identificador Problema |
DescricaoProblema | Texto | Descrição Problema |
SexoConsumidor | Char | M-Masculono F-Feminino N-Não se aplica |
FaixaEtariaConsumidor | Texto | Faixa de idade consumidor |
CEPConsumidor | Texto | CEP do consumidor |
Então, os nossos dados tem que estar de acordo com essas informações. A FaixaEtariaConsumidor e, por fim, o CEPConsumidor. Então, a nossa futura preparação dos dados serão feitas com base nessa documentação.
Como todo sistema de Analytics, os primeiros passos são coletar e tratar os dados. Vamos utilizar as informações que vimos anteriormente da documentação dos dados com as colunas e possíveis valores para cada uma delas para guiar a nossa análise e tratamento dos dados.
Vamos começar importando as bibliotecas que nós vamos utilizar, que será inicialmente a data.table
, e o dplyr
. Vamos executar, pronto, carregamos as duas bibliotecas que iremos utilizar. Vamos carregar também nossos dados utilizando a função fread
, nossa base ‘reclamacao.csv’ e vamos indicar um encoding
para evitar possíveis problemas de caracteres especiais, dados <- fread('reclamacao.cvs', encoding = 'UTF8')
Pronto, os nossos dados foram importados.
Vamos fazer uma breve exploração da base de dados para verificar as possíveis colunas na nossa base e quais tipos de dados armazenados em cada uma delas. Vamos utilizar a função summary (dados)
, que significa resumo, dos nossos dados, vamos executar nossa linha de comando e olha só.
Essa função nos demonstra um resumo da base de dados com os nomes de cada coluna, temos aqui anocalendario, DataArquivamento, DataAbertura e as demais colunas, e o resumo para cada uma delas. Quando a coluna é numérica, por exemplo, anocalendario, ela vai vir com algumas informações estatística-descritivas como valor mínimo, mediana, média, valor máximo, entre outras.
E quando a coluna é do tipo texto, por exemplo, DataArquivamento, ela vai vir com a quantidade de registros, no caso aqui "66040", e o tipo dos dados, que é caracteres. Então ela só demonstra isso para caso de colunas textuais, ou seja, do tipo descritiva.
Podemos observar que há duas colunas que não estão na documentação dos dados que vimos anteriormente, a x.1 e v1. Essas colunas, então, podem ser excluídas da nossa base de dados. Vamos utilizar o pacote dplyr que é um recurso mais avançado e profissional para fazer o tratamento dos dados.
Então vamos começar excluindo essas duas colunas. Para excluir, vamos chamar aqui a nossa base de dados, utilizar o concatenador do pacote dplyr que é %>%
, dados %>%
e chamar a função select
.
A função select
, por padrão, seleciona as colunas que se deseja. Por exemplo, (x.1, v1)
, mas como nós queremos excluir essas colunas da nossa base de dados basta inserir o sinal de subtração, um hífen(-
), em frente ao nome de cada coluna (-x.1, -v1)
e vamos salvar esse procedimento em uma nova base de dados chamada reclamação. Vamos agora executar reclamação <-dados %>% select (-x.1, -v1)
.
Podemos observar aqui ao lado direito da janela do RStudio, temos o nosso conjunto de dados com 18 colunas, reclamação com 16 colunas, ou seja, excluímos essas duas colunas que não tem nenhuma informação útil para nossas análises. Vamos dar continuidade na exploração da nossa base de dados.
Vamos verificar algumas das colunas na nossa base de dados. Vamos começar pela coluna região. Então vamos utilizar a função unique
, que significa único, vai retornar valores únicos, chamar nossa nova base de dados (reclamacao$regiao)
.
Vamos executar unique(reclamao$regiao)
, e olha só, ela vai retornar os valores únicos da nossa base de dados, e podemos ver que aqui tem as regiões relacionadas ao Brasil: centro-oeste, sudeste, norte, sul, nordeste e N/D, que provavelmente significa que não foi definida, não foi declarada etc. Como ela não foi definida, não declarada, essa informação de certa forma não vai ser valiosa para nós, então, podemos fazer a filtragem desses registros também.
Então, da mesma forma, reclamacao %>%
, utilizar a função filter
, que significa filtro, então, vamos filtrar alguma coisa dentro da nossa base de dados, vou colocar o nome da coluna regiao
e uma condição, no caso aqui, N/D. Essa função filter
vai filtrar tudo que nós queremos ou não queremos dentro da nossa base de dados.
Então, ela sempre vai receber dentro dela, da função filter
alguma condição, como se fosse um if. Então, nós estamos indicando aqui que nós não queremos os registros que tem valores N/D.
Vamos aqui novamente salvar essa execução dentro da base reclamação mesmo, vamos continuar trabalhando com ela. Vamos olhar ao lado direito, dados tem 66040 registros e reclamação agora só tem 65940, então significa que nós conseguimos limpar essas informações.
Se você tiver dúvida, pode vir em unique (reclamacao$regiao)
e executar novamente o comando unique
e retornar valores únicos, vamos executar. Não aparece mais o valor N/D, então indica que nós conseguimos excluir aqueles registros relacionados à região não declarada.
Agora, vamos verificar nossa coluna, com a mesma função unique(reclamacao$
, a coluna Atendida
, lembrando que, de acordo com a documentação, essa coluna indica se a reclamação foi atendida ou não. Vamos executar unique (reclamacao$Atendida)
. Temos uma situação bem peculiar relacionada a essa coluna.
Podemos observar que há uma grande variação de valores para essa coluna, para esse atributo: S, N, vazio, sim, nao, nAoo e Siim. Então, o que precisamos fazer, vamos fazer uma transformação nesses valores para deixá-los homogêneos, ou seja, iguais e, principalmente, de acordo com a documentação que vimos anteriormente.
Se você voltar na documentação vai ver que essa coluna vai armazenar informação de S para atendida, que é sim, e não, N, que representa não atendida. Então, vamos tratar esses registros.
Primeiro, vamos tratar os registros relacionados ao valor "sim". Vamos utilizar a função gsub
, que é padrão do R, já aparece aqui, para substituir os valores “S” e o “Siim” pelo valor “sim”,minúsculo, para deixar padrão. Então vamos lá.
Passamos aqui o padrão pattern
que nós queremos utilizando a expressão regular. Como há mais de uma informação para o valor sim, vamos utilizar a expressão regular que vamos colocar aqui ’S|Siim’
vamos fazer o replacement
pelo novo valor a ser substituído, vamos colocar aqui a palavra sim
, e x = reclamacao$Atendida
que são os nossos dados, e vamos substituir os novos valores no mesmo lugar que a nossa coluna Atendida.
Vamos quebrar a linha para melhorar a visualização replacement = ‘sim’, x=reclamacao$Atendida)
. Aqui está o nosso código.
Vamos entender o que esse código faz. Como eu disse anteriormente, estamos utilizando a expressão regular no pattern
, que é o padrão para identificar os valores que nós queremos substituir, então o "S" maiúsculo, tem esse pipe, que é a barra vertical (|
), que na expressão regular indica a condição or, ou seja, o "ou" em lógica de programação, ou Siim com dois is e maiúsculo. Vamos substituir tudo pelo valor "sim" minúsculo.
Vamos executar. Executou. A execução é bem rápida. Vamos verificar novamente os valores. Está tudo certo, substituiu tudo pelo valor "sim", tudo em minúsculo.
Agora vamos executar o mesmo procedimento para os erros relacionados ao valor "não". Você pode copiar o código reclamacao$Atendida <- gsub(pattern = ‘S|Siim’, replacement = ‘sim’, x=reclamacao$Atendida)
, vai substituir apenas em pattern
, padrão, vamos colocar N|nAoo|nao
, são três valores, vamos corrigir esse "nao" sem acento por "não" com acento. Então, temos três valores: N|nAoo|nao
e vamos substituir tudo pelo não
.
Vamos executar reclamacao$Atendida <- gsub(pattern = ‘N|nAoo|não’, replacement = ‘não’, x=reclamacao$Atendida)
novamente. Você pode ver que a lógica aplicada é exatamente a mesma. Utilizamos a expressão regular para substituir vários valores errados pelo valor correto.
Vamos agora verificar se os valores foram realmente corrigidos, vamos executar novamente a função unique
, vamos executar unique(reclamacao$Atendida)
e pronto. Temos três tipos de valores na coluna Atendida: "sim", minúsculo, "não", minúsculo com til no a, e os valores em branco.
Vamos eliminar as linhas que não há valor nessa coluna, que está em branco, que é justamente a que está aparecendo aqui. Para isso, vamos utilizar a função filter
do pacote dplyr, que nós já utilizamos anteriormente, vamos utilizar novamente, então vamos indicar reclamacao %>% filter
colocando a condição para indicar que não queremos as linhas que estão em branco, então vamos executar aqui (Atendida != ‘ ’)
, Atendida diferente de vazio.
E vamos salvar esse resultado na mesma base reclamacao <- reclamacao %>%
vamos quebrar a linha para melhorar a visualização filter (Atendida != ‘ ‘)
. Vamos executar, foi executado, agora vamos novamente fazer a verificação.
Vamos verificar unique(reclamacao$Atendida)
. Pronto. Eliminamos as linhas em branco e temos na coluna atendida, na base toda apenas valores relacionados ao sim e ao não.
Para finalizarmos, vamos verificar a coluna SexoConsumidor. Vamos utilizar aqui a mesma função unique(reclamacao$SexoConsumidor)
. Vamos executar essa função. Podemos observar que essa coluna também tem alguns problemas. O procedimento para corrigir será semelhante ao anterior, vamos utilizar a expressão regular para corrigir os valores errados.
Por exemplo, aqui nós temos alguns valores errados temos aqui: o M, representando o sexo masculino, o F, representando o sexo feminino, o N não informado, o vazio e o NULL provavelmente indicando o não informado. Então, nós temos aqui dois valores que são relacionados a não informado, que é o N e o NULL.
Quando não é informado? O não informado é quando os reclamantes são pessoas jurídicas, então vamos corrigir esses valores. O procedimento é o mesmo que executamos anteriormente, vamos aqui gsub(pattern = ‘N|NULL’, replacement = ‘N/I’
que é significa não informado, fica mais fácil de entender, e será vindo da nossa coluna SexoConsumidor
e vamos salvar tudo isso lá na mesma coluna, estamos trabalhando SexoConsumidor
.
[06:02]Vamos alinhar para melhorar a visualização, vamos executar reclamacao$SexoConsumidor <- gsub(pattern = ‘N|NULL’, replacement = ‘N/I’, x = reclamacao$SexoConsumidor)
. E vamos executar novamente a função unique(reclamacao$SexoConsumidor).
Podemos observar que todos os registros foram devidamente corrigidos. Agora, vamos salvar essa base de dados devidamente limpa: fizemos diversas alterações, limpezas, normalização e um novo conjunto de dados. Vamos chamar esse conjunto de dados de dados limpos.
Vamos utilizar a função fwrite(reclamacao, ‘dados limpos.csv’
vamos indicar aqui que não queremos salvar os índices do nosso dataframe, row.names = F)
vamos executar, e pronto, finalizamos os procedimentos iniciais, ou seja, a coleta, exploração e tratamento dos dados.
A seguir, vamos elaborar alguns gráficos para atender as solicitações do nosso cliente.
O curso Programação em R: desenvolva dashboards online com Shiny possui 232 minutos de vídeos, em um total de 54 atividades. Gostou? Conheça nossos outros cursos de Data Visualization em Data Science, ou leia nossos artigos de Data Science.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.