Alura > Cursos de Data Science > Cursos de Data Visualization > Conteúdos de Data Visualization > Primeiras aulas do curso Programação em R: desenvolva dashboards online com Shiny

Programação em R: desenvolva dashboards online com Shiny

Preparando os dados - Apresentação

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.

Preparando os dados - Selecionando registros e atributos

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.

ColunaTipoValores
anocalendarioInteiro2009... 2017
DataArquivamentoDataYYYY-MM-DD
DataAberturaDataYYYY-MM-DD
regiaoTextoNordeste... centro-oeste
UFTextoDF... 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.

ColunaTipoValores
TipoFlag0-CPF 1-CNPJ
CNAEPrincipalTextoCódigo Identificador da Classificação nacional de atividades Econômicas principal do fornecedor
DescCENAEPrincipalTextoDescrição Classificação Nacional de Atividades Econômicas principal do fornecedor
AtendidaTextoS-Atendida N-NÃO Atendida
CodigoAssuntoNúmeroIdentificador Assunto
DescricaoAssuntoTextoDescriçã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.

ColunaTipoValores
CodigoProblemaNúmeroIdentificador Problema
DescricaoProblemaTextoDescrição Problema
SexoConsumidorCharM-Masculono F-Feminino N-Não se aplica
FaixaEtariaConsumidorTextoFaixa de idade consumidor
CEPConsumidorTextoCEP 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.

Preparando os dados - Tratamento dos dados

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.

Sobre o curso Programação em R: desenvolva dashboards online com Shiny

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:

Aprenda Data Visualization acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas