Bibliotecário em Ciência de Dados: Introdução à Visualização de Dados com Python
Apenas olhando números nem sempre podemos entender o que eles querem dizer. Por isso criamos visualizações gráficas, que é uma das linhas mais importantes dentro da Ciência de Dados.
Criar gráficos é fácil, mas criar bons gráficos é o grande desafio.
“Desenhar” os dados está muito mais ligado a história que você quer contar (“Storytelling”) do que só o próprio dado. Sobre Storytelling, eu indico esse livro que é excelente para quem se interessa em ciência de dados.
Continuando na “resenha” do livro “Data science do zero”.
Neste capítulo o autor escreveu sobre visualização bem por cima já avisando que a ideia de fato não era se aprofundar no tema, mas sim mostrar como podemos começar a fazer gráficos simples.
Desta forma então irei trazer alguns conceitos introdutórios sobre visualização e também como podemos elaborar gráficos e análises com Python a partir de um conjunto de dados real que irei manipular.
Então bora ao gráficos…
Tipos de Variáveis
Para se criar boas visualizações é importante entendermos os dados que estamos trabalhando. Os conjuntos de dados terão variáveis nos quais podem ser classificadas como categóricas e quantitativas. Dentro delas ainda se tem suas subclassificações:
Categórica (Qualitativa): não representam valores quantitativos numéricos, mas sim as classificações do objeto;
- Nominal: são representações sem uma ordenação natural, como por exemplo: sexo, cores, nomes de cursos de graduação,
- Ordinal: essas são as representações que já possuem uma ordenação, como por exemplo: série escolar, classe social etc.
Quantitativa: elas representam as características numéricas;
- Discreta: são as representações que se acabam por um número apenas, não fazendo parte de uma classe de ordenação, como por exemplo: número de usuários de uma biblioteca, número de livros etc.
- Contínua: são características que estão dentro de uma classe de ordenação, uma escala, como por exemplo: altura, ano (tempo), peso etc.
Tipos de Visualizações de Dados
Agora é a hora de explicar qual mensagem você quer extrair ou demonstrar visualmente a partir desses dados.
Para isso podemos partir desta metodologia criada por A. Abela, no qual gosto bastante:
Tudo começa com a pergunta:
“O que você gostaria de mostrar?”
Se for uma Comparação, que é uma análise das diferenças dos dados a partir de variáveis. Nós podemos encontrar picos, visualizar frequências, comparar através do tempo (que pode ser cíclico ou não) entre outras possibilidades… a partir de gráficos de coluna, barra, linha e radar.
Agora se for uma Composição, que é a apresentação da divisão de partes individuais de um elemento. Podemos visualizar a proporção que cada parte tem ao todo. Podemos utilizar gráficos de barras/colunas/áreas empilhadas, pizza/ rosca e cascata.
Ou se for uma Distribuição, que é o entendimento das diferenças de variáveis através da composição. Podemos entender como eles estão divididos. Os gráficos mais frequentes são histograma, linha/área, dispersão e o boxplot (no qual não está na figura, mas para quem não conhece vale a pena ler este artigo científico).
Mas se você gostaria de mostrar um Relacionamento, que é a relação entre duas ou mais variáveis (no qual calculamos e formamos a famosa correlação). Podemos encontrar tendências, padrões, outliers (não sabe o que é um outlier? Veja esse outro artigo do medium) entre outras formas estatísticas de se relacionar dados. Os gráficos mais comuns são os de dispersão (quando temos apenas duas variáveis) e o de bolhas (quanto temos 3 ou mais variáveis).
*O problema do gráfico de pizza
Farei um acréscimo aqui, pois o gráfico de pizza (ou no inglês Pie Chart) é usado comumente de forma equivocada.
Deveríamos utilizar gráficos de pizza (ou sua variação rosca/donut) quando apenas estivéssemos comparando 2, 3 ou talvez no máximo 4 variáveis, pois precisamos passar uma mensagem bastante clara, rápida e de fácil compreensão para quem irá visualizar.
Alguns pontos importantes sobre os problemas do gráfico de pizza são
- Comparar tamanhos: Calcular a área das “fatias” se torna difícil, pois precisamos considerar angulações. Tente diferenciar qual é o menor segmento no gráfico abaixo:
- Ocupam mais espaço: Sozinhos talvez não façam tanta diferença, mas procure experimentar dentro de um dashboard. Eles provavelmente ocuparão mais espaço do que outros tipos;
- Dependência do uso de cores: Para diferenciar as categorias é necessário o uso de mais cores e se tivermos várias… fica cada vez mais difícil conseguirmos boas visualizações.
- Muitas variáveis: Quanto mais variáveis pior será a visualização em um gráfico de pizza. Se tivermos uma quantidade de segmentos com dados muito pequenos, eles também poderão sumir.
Na maior parte das vezes a pizza será melhor apenas para dividirmos com a galera.
Manipulando os dados com o Pandas
Utilizarei o conjunto de dados da Biblioteca da Universidade Federal do Rio Grande do Norte — UFRN, do 1º semestre de 2019, localizado no Portal Brasileiro de Dados Abertos.
Continuarei também utilizando o Google Colab, no qual já havia falado no meu outro artigo e você pode acessá-lo pronto aqui.
Também utilizarei o Pandas, uma das principais bibliotecas de manipulação e análise de dados do Python. Ele utiliza o Matplotlib indiretamente para realizar as visualizações.
Para isso irei importar o Pandas:
Carreguei o arquivo csv dentro do colab e farei a leitura dele pelo código:
Como não me importa o nome dos usuários nesta análise, irei excluir eles:
Verifiquei que a matrícula está como formato float, bom modificarei para int:
Hum… deu erro.
Preencherei aonde tem NA para 0:
Agora sim:
Gráfico de Barras
Farei o cálculo da frequência de empréstimos por tipo de usuário:
Criarei o gráfico:
Com um gráfico simples podemos observar a quantidade proporcionalmente enorme de alunos de graduação que fazem empréstimos em relação aos demais.
Não há como se aprofundar em certezas aqui, até por que precisaríamos de mais informações, mas vários questionamentos me surgem ao visualizar essas informações. Verificarei o percentual.
Verificando o percentual:
Aproximadamente 90% dos empréstimos são realizados por alunos de graduação (75%) e alunos de pós-graduação (15%). Possivelmente esse número será porque os alunos de graduação ainda necessitavam emprestar livros físicos e alunos de pós já utilizam em maior quantidade bases digitais?
O menor índice para docentes (3,9%) e docentes externos (2,39%), também pode ser explicado pela justificativa acima?
Por que estes alunos de pós e docentes não fazem tantos empréstimos como os demais? O acervo e os demais serviços estão solucionando as necessidades informacionais deles?
Mil e uma questões podem ser feitas a partir destes dados… As respostas precisarão ser analisadas em conjunto com a realidade e objetivos da biblioteca para saber se os números estão “conversando” com o propósito.
Gráfico de linhas
Vamos ver agora essa distribuição ao decorrer dos meses.
Para isso vou relembrar a tabela e fazer um .head()
Vamos verificar como é a Series ‘data_emprestimo’
Hum… é um objeto.
Para manipular ele, o modificarei para datetime:
Pronto!
Agora vou criar uma nova coluna com o número do mês referente a data de empréstimo:
Farei a contagem da frequência:
Reordenarei o dataframe:
Criarei um gráfico de linhas pela quantidade de empréstimos realizados por mês:
Já conseguimos visualizar que o mês de fevereiro foi o que teve maior quantidade de empréstimos (possivelmente pelo início de fato das aulas) e foi decaindo a quantidade durante os próximos 3 meses, até que em junho teve uma maior queda.
Por dedução pessoal imaginava que teríamos um pico em maio/junho, devido a provas de final de semestre, mas não foi isso que aconteceu.
Gráfico Histograma
Agora irei entender como foi essa distribuição por meses de acordo com o tipo de usuário.
Isolarei as duas principais colunas para os dados:
Construirei um dataframe para cada tipo de usuário:
e vamos aos gráficos!
A distribuição para os alunos de graduação foi similar a vista pela distribuição geral.
Os dos alunos de pós já foram diferentes. Com o maior índice no mês 3, praticamente se mantendo nos próximos meses e decaindo de fato no mês 6. Talvez as aulas se iniciem de fato ou se intensifiquem apenas em março, mas é importante destacar que no primeiro mês teve ainda um maior índice em comparação com os alunos de graduação.
Os docentes também permaneceram com o maior índice em fevereiro e uma regularidade nos demais meses. Possivelmente também por conta do início das aulas para consultar as bases referenciais das disciplinas.
Já os docentes externos fugiram do padrão de maior índice em fevereiro e bateram o maior em abril.
Os servidores técnicos-administrativos possuíram também uma regularidade mensal padrão, mas com uma maior demanda em março. O que talvez seja devido a colaboradores que também estão em formação em algum curso, necessitando de maior volume de empréstimos neste período.
Os alunos de ensino médio e técnico seguiram o padrão inicial, igual aos de graduação, provavelmente pelas mesmas razões de necessidade informacionais.
E finalmente os usuários externos que também tiveram seus maiores índices em fevereiro e março, mas decaindo até não haver empréstimos em junho.
Próximos passos…
Eu quis demonstrar um pouco sobre como trabalhar com dados reais para gerar visualizações e possíveis análises, no qual é uma das atividades de um cientista de dados.
Isso foi apenas uma introdução e temos outras bibliotecas como o Ploty, Seaborn e Geoplotlib para se aprofundar.
Quer ver mais sobre o tema?
Confira esse vídeo do Guilherme Silveira e do Filipe Deschamps:
Data Visualization: crie os melhores gráficos para os seus dados
Se você quer estudar mais sobre visualização de dados, a Alura possui cursos específicos sobre o tema:
Você não é aluno na Alura?
Então confira meu cupom de desconto especial para você iniciar sua jornada em tecnologia.
Vimos um básico de visualização de dados mas há um mundo… e novas possibilidades surgirão no futuro. Aliás me diga aí o que você acha sobre o tema e como ele se dará futuramente?
Curtiu o artigo? Dê o claps e se inscreva para me acompanhar.
Ainda há muito a se explorar…