0% acharam este documento útil (0 voto)
24 visualizações67 páginas

Análise de Dados de Python Com Pandas

Enviado por

mssantonio589
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
24 visualizações67 páginas

Análise de Dados de Python Com Pandas

Enviado por

mssantonio589
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 67

Análise de dados de Python com Pandas

Prof. Fernando Cardoso Durier da Silva, Prof. Sérgio Assunção Monteiro

Descrição

Análise e preparação de dados, incluindo pré-processamento e


alimentação do processo, e apresentação visual de resultados usando
bibliotecas da linguagem Python.

Propósito

Compreender a análise de dados em Python é fundamental para o


cientista de dados, por ser uma das linguagens mais utilizadas para
esse tipo de tarefa, não só pela automatização, mas também pela
robustez de suas bibliotecas de apoio.

Preparação

Para a compreensão e reprodução dos exemplos, é imprescindível ter


instalado, em sua máquina de estudos, o Python na versão 3.8 ou
superior, as bibliotecas Pandas, Numpy e Plotly. Será necessária
também uma ferramenta para execução de notebooks, como Jupyter,
que pode ser instalado como uma biblioteca do Python. Nesse contexto,
notebooks são arquivos com extensão IPYNB que contêm documentos
gerados pelo ambiente de desenvolvimento interativo, usados por
cientistas de dados que trabalham com a linguagem Python.
Objetivos

Módulo 1

Componentes e sintaxe do Python para


análise de dados

Reconhecer os componentes e a sintaxe do Python para análise de


dados.

Módulo 2

Preparação de dados para análise no Python

Descrever a preparação de dados para análise no Python.

Módulo 3

Manipulação de dados no Python

Descrever a manipulação de dados no Python.

Módulo 4

Visualização de dados no Python

Aplicar a visualização de dados no Python.


Introdução
A análise de dados é fundamental para a inicialização de qualquer
projeto de sistemas de informação, uma vez que nos trará insights
de como melhor desenhar o processo, além do que nos foi
entregue no levantamento de requisitos.

Atualmente, com os avanços da tecnologia, a automatização da


análise de dados se dá de forma menos flexível com sistemas de
análise dedicados, principalmente graças a linguagens de
programação que nos possibilitam escrever desde simples scripts
até sistemas inteiros de modelos exploratórios de dados.

Uma das linguagens mais utilizadas para tal é o Python, linguagem


plena de recursos graças às suas bibliotecas de ciência de dados,
processamento de dados, análise de séries temporais etc.

Vamos aprender os principais componentes do Python, sua sintaxe


para análise de dados e uma série de recursos e técnicas que serão
instrumentais para o sucesso de nossas análises. Também
entenderemos os tipos de dados e quais cuidados devemos tomar
com eles para extrair o melhor dos conjuntos de dados a serem
analisados, bem como saber onde procurá-los.

Por fim, aprenderemos como visualizar os dados para concretizar


nossas análises e obter insights imediatos.
1 - Componentes e sintaxe do Python para análise de dados
Ao final deste módulo, você será capaz de reconhecer os componentes e a sintaxe do Python
para análise de dados.

Ligando os pontos
Você sabe como identificar os componentes e a sintaxe do Python para
análise de dados? É muito provável que você já tenha escutado sobre a
importância gigantesca do Python para fazer análise de dados, mas
quais são os passos para iniciar esse processo? Para respondermos a
essas perguntas, vamos fazer uma breve análise.

Atualmente, existem muitas linguagens de programação disponíveis.


Algumas são excelentes para desenvolver aplicações web, outras são
adequadas para trabalhar com banco de dados, e existem aquelas
apropriadas para obter desempenho de aplicações que manipulam
grandes volumes de dados, por exemplo. Não há dúvidas de que a
linguagem de programação Python é a escolha mais relevante para
aplicações de Ciência de Dados e machine learning.

O Python tem uma sintaxe simples e dispõe de recursos eficientes para


desenvolver aplicações que explicam sua grande popularização. Além
disso, possui muitos pacotes disponíveis que incluem algoritmos com
diversas finalidades. Outra importante característica é a facilidade de
coletar dados e integrá-los às aplicações. A comunidade de
programadores do Python é muita engajada e continuamente publica
soluções em fóruns que podem ser encontrados facilmente na Internet,
como o Stackoverflow, por exemplo.

O primeiro passo de alguém que está começando a trabalhar com o


Python é escolher o ambiente de desenvolvimento (IDE). Duas IDEs
muito populares são o PyCharm e o Spyder. Além disso, é possível
trabalhar com o Python on-line utilizando o ambiente Google Colab.

De modo geral, logo depois de escolher uma IDE, o desenvolvedor vai


precisar instalar alguns pacotes. Normalmente, isso é simples. Basta
utilizar o gerenciador de dependências “pip” para instalar um pacote.

Uma preocupação que também deve fazer parte do processo de


construção de aplicações com Python é criar um ambiente virtual com o
comando “venv”, pois isso restringe a instalação das bibliotecas apenas
para um ambiente específico.

Nesse processo de aprendizado, é muito importante visitar o site oficial


do Python, consultar os exemplos e se familiarizar com os comandos,
pacotes e demais notícias que vão ser muito úteis para consolidar
conceitos e direcionar os estudos.

Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos


ligar esses pontos?

Questão 1

Como você viu, com Python, podemos desenvolver aplicações de


banco de dados e até para a web. É adequado focar todo o
aprendizado de desenvolvimento de linguagem de programação
apenas no Python? Por quê?

Não, pois o Python precisa de muitas dependências


A
para funcionar corretamente.
B Não, pois cada linguagem tem seus pontos fortes.

Sim, pois o Python oferece recursos para


C
desenvolver qualquer tipo de aplicação.

Sim, pois o Python é um software livre com uma


D
comunidade muito engajada.

Não, pois o Python não possui suporte, uma vez que


E
não tem licença comercial.

Parabéns! A alternativa B está correta.

Sem dúvida, a linguagem de programação Python é muito útil para


desenvolver aplicações que vão além das de ciência de dados e
machine learning. A tentação de concentrar o aprendizado nela é
muito alto, mas é apenas uma tecnologia. Especialmente no
período de aprendizado, é importante aprender outras linguagens
de programação e entender em quais contextos são mais bem
empregadas.

Questão 2

Você já sabe que a linguagem de programação Python é bastante


popular para desenvolver aplicações de ciência de dados e de
machine learning. Como você justificaria essa popularidade?

A Trata-se de um software livre.

B Tem grande divulgação nas redes sociais.

C Possui uma sintaxe muito simples.

D
É capaz de integrar soluções de ciência de dados
com aplicações web.

Tem à disposição muitos recursos que facilitam o


E
desenvolvimento de aplicações.

Parabéns! A alternativa E está correta.

A popularização do Python para desenvolver aplicações de ciência


de dados e de machine learning está relacionada à grande
quantidade de recursos que ele oferece para implementar soluções
por meio de pacotes que possuem métodos prontos para serem
usados.

Questão 3

Considere o seguinte cenário: você conhece outras linguagens de


programação, como C++, Java, Java Script e C#. Recentemente, você
percebeu que existe uma demanda muito forte por profissionais de
ciência de dados e de machine learning. Além disso, você chegou à
conclusão de que a linguagem Python é a mais usada para aplicações
dessas áreas. Nesse contexto, qual seria sua estratégia para iniciar seu
aprendizado de Python?

Digite sua resposta aqui

Chave de respostaexpand_more

O conhecimento de outras linguagens de programação facilita


bastante o aprendizado de uma nova linguagem. Apesar de se
falar bastante sobre a facilidade de desenvolver aplicações de
ciência de dados e de machine learning com o Python, o fato é que
se trata apenas de mais uma linguagem com regras sintáticas e
um grande acervo de funcionalidades. Portanto, a melhor forma de
aprender é aplicar exatamente o mesmo processo de aprendizado
de outras linguagens: estudar os conceitos, montar um ambiente
de trabalho e praticar bastante.

Introdução aos componentes e à


sintaxe de Python
A linguagem Python é chamada de linguagem de alto nível por causa da
sua abstração com relação ao hardware e aos registros, diferente de
Assembly por exemplo.

Linguagens de programação de alto nível têm mais


distância do código de máquina e mais proximidade com a
linguagem humana.

Esse é um dos principais objetivos do Python, que foi idealizado para ser
parecido com o inglês de modo que, quando qualquer pessoa fosse ler
os códigos fontes, poderia entender facilmente, independentemente de
ser especialista.

Ícone da linguagem de programação Python.

Curiosidade
Por mais que o símbolo da linguagem seja o da serpente constritora não
venenosa Python (Píton), a origem do nome da linguagem, na realidade,
refere-se ao grupo humorístico britânico Monty Python, criadores da
série cômica o Circo Voador de Monty Python (Monty Python's Flying
Circus). Em contrapartida, os comediantes resolveram homenagear Lord
Montgomery (Monty), oficial do exército britânico, e queriam uma
palavra evasiva como Python, aqui sim se referindo à serpente.

Grupo Monty Python.

Atenção
Diferentemente de linguagens de médio nível como C e Java, Python não
precisa declarar o tipo de suas variáveis, o que se alinha também com o
objetivo de imitar o idioma inglês, mas, ainda assim, seus tipos são
fortes, ou seja, não sofrem coerções.

Falando em sintaxe, a primeira regra que devemos observar é a de


indentação, que serve para separar blocos lógicos, de loop, classes e
funções.

A indentação é feita por recuo com espaços em branco após o bloco


lógico em questão; para o interpretador da linguagem, isso se traduz em
ler primeiro a linha de função e, dentro da indentação, a sua
parametrização.

A declaração de dados não precisa do preâmbulo de tipos para dizer


que a variável é do tipo inteiro ou string, mas os tipos de dados são
associados às variáveis em Python, mesmo não sendo declarados
explicitamente. Entre eles, temos:
Quadro: Tipos de dados e variáveis em Python.
Elaborado por: Fernando Durier.

Temos também as construções clássicas de controle de execução de


comandos, como na maioria das linguagens de programação, por
exemplo:

Quadro: Tipos de comandos em Python.


Elaborado por: Fernando Durier.

Para definirmos um módulo, um bloco de código para ser reaproveitado


em outras partes do projeto, basta criarmos uma pasta com o nome do
módulo em questão, dentro dela criarmos um arquivo __init__.py e
depois criarmos o arquivo do código fonte module.py.

Podemos importar o bloco lógico em outra parte do projeto da seguinte


forma:

Python
content_copy
Ou

Python
content_copy

Ou

Python
content_copy

Respectivamente, essas importações se referem a caminhos:

Absoluto.

Relativo na mesma pasta onde é chamada a parte.

Relativo nas duas pastas da chamada original.

Você deve estar se perguntando: por que __init__?

O __init__ é o equivalente ao construtor de classe das linguagens


orientadas a objetos; é a partir do método construtor que podemos
instanciar objetos, seguindo os parâmetros declarados na função
__init__.

Agora você deve estar ainda mais intrigado sobre a razão de um arquivo
__init__.py vazio! Sabe o por quê?
Resposta
Quando importamos um módulo, é como se importássemos uma classe
para outra parte do projeto, e o __init__.py é executado pelo motor do
Python para atrelar os objetos pelo módulo declarado ao namespace
(“domínio”) do módulo. Em outras palavras, podemos entender como o
construtor do pacote/módulo ali declarado.

Estrutura de projetos e boas práticas


Assim como em outras linguagens, podemos importar bibliotecas
criadas por outras pessoas, o que nos facilita muito. Essa é uma das
grandes vantagens da computação nos tempos atuais, pois a
comunidade de desenvolvedores é grande, diversa e muito colaborativa.
Por mais que estejamos importando módulos externos, teremos acesso
a documentação e trilhas de discussões em plataformas como o
StackOverflow e o Github.

Mas como fazemos isso?


Resposta
É simples, por meio do gerenciador de pacotes do Python, o pip.

Na maioria das vezes, o que basta é digitarmos no terminal ou prompt


de comando, o comando “pip install < nome do módulo >” e pronto,
assim importamos no nosso código como “import < nome da biblioteca
>” e teremos acesso aos seus módulos e métodos.

Biblioteca referenciando a imensidão de módulos presentes no Python.

Atenção
É importante registrar a lista de bibliotecas para que outras pessoas que
tiverem acesso ao projeto possam rodá-lo em suas máquinas. E isso
pode ser feito por meio do arquivo requirements.txt, um arquivo de texto
que contém as dependências do projeto.
Para isso, basta digitar o comando:

Terminal
content_copy

Para que outra pessoa possa importar as mesmas bibliotecas, ou para


que você mesmo possa importar de novo em outro computador, basta
digitar:

Terminal
content_copy

Existem formas mais avançadas de construirmos o projeto e suas


dependências por meio dos ambientes virtuais, que são espaços de
trabalho do projeto, como se fossem máquinas virtuais leves para rodar
os programas. Se os comandos pip forem rodados enquanto o ambiente
estiver de pé, então as bibliotecas não serão instaladas globalmente,
mas sim restritas ao ambiente virtual (virtualenv).

Para levantar o ambiente, criando o ambiente virtual para a pasta


corrente, basta digitar o comando:

Terminal
content_copy
Para sair, basta digitar:

Terminal
content_copy

Existem alternativas como o Pyenv e o pipenv que, além de criar o


ambiente virtual, podem gerenciar versões diferentes de Python no
mesmo computador, mas diferentemente do virtualenv (venv), o Pyenv e
o pipenv não vêm instalados junto ao Python.

Por fim, falaremos do Jupyter Notebook, um ambiente de scripts


Python, muito útil para análise exploratória, que pode ser instalado no
nível global mesmo, fora de virtualenv, pois queremos que toda a
máquina tenha acesso a ele.

Para instalá-lo, basta digitar o comando:

Terminal
content_copy

Comentário
Para abrir um servidor local de Jupyter Notebook, basta digitarmos no
terminal “jupyter notebook” na pasta do projeto em questão e pronto, o
servidor será levantado e automaticamente o browser abrirá na IDE do
Jupyter Notebook. Então, você poderá criar notebooks, que são scripts
em células de Python, muito utilizados para prototipação e análises
exploratórias.
Ativos de dados
Falaremos agora dos dados. Afinal, qualquer sistema de informação tem
como entrada dados que serão processados pelos seus programas até
saírem como informação relevante. No caso de projetos em Python, os
dados podem vir externamente por meio de captação (scraping) ou de
artefatos de dados que nada mais são do que planilhas, textos, entre
outros arquivos que são usados localmente mesmo.

Ativos de dados.

A fim de lidarmos com os dados de forma elegante, deve ser criada uma
pasta no nível da raiz do projeto, para armazenamento dos arquivos; por
convenção, podemos chamá-la de assets (ativos). Tal pasta pode ainda
ser subdividida por categorização preestabelecida dos ativos de dados.
Essa subdivisão é muito comum em projetos de FrontEnd (projetos de
interface gráfica, principalmente de websites), em que os
desenvolvedores guardam ícones e outros dados estáticos.

Comentário
Os ativos de dados podem ser usados para servir de base de dados
temporária ou de testes/experimentação de certos sistemas, ou
também como recursos que alimentam bibliotecas importadas, por
exemplo, licenças de software.

Biblioteca Pandas
A manipulação de dados em Python, em sua esmagadora maioria, é
feita com DataFrames, uma vez que são estruturas muito mais cômodas
e robustas de se trabalhar do que matrizes. Antes de falarmos dos
DataFrames em profundidade, precisamos explicar o Pandas.

Pandas é uma biblioteca em Python, criada para


manipulação e análise de dados, oferecendo estruturas
e operações para manipular tabelas numéricas e séries
temporais.

O nome Pandas, ao contrário do que possa parecer, não vem do urso


fofo monocromático da China, mas sim do conceito panel data, ou dado
em painel, no plural, panel data sets, e daí o nome Pandas.

O conceito em si é um termo estatístico que se refere a conjuntos que


incluem diferentes unidades amostrais acompanhadas ao longo do
tempo, o que faz muito sentido, pois cada coluna de um DataFrame,
principal estrutura do Pandas, é um dado do tipo Series, ou série
temporal.

Exemplo de Pandas DataFrame disponível no site geeksforgeeks.org no artigo Python Pandas


Dataframe.sample() de Kartikaybhutanios.

Comentário
Os DataFrames são justamente esses painéis de dados, mas podemos
encará-los como tabelas para fins de abstração. São muito utilizados
em projetos de análise de dados como criação de dashboards, scripts
de análise de dados e aplicações de aprendizado de máquina.

video_library
Introdução aos componentes e à
sintaxe de Python
No vídeo a seguir, abordamos os principais componentes e a sintaxe
básica da linguagem Python para a análise de dados.
Falta pouco para atingir seus objetivos.

Vamos praticar alguns conceitos?

Questão 1

Quais os comandos para levantar e sair de um ambiente virtual


Python (virtualenv)?

A start; quit.

B startvenv; !venv.

C venv; ~venv.

D venv; deactivate.

E activate; deactivate.

Parabéns! A alternativa D está correta.

O comando venv levanta o ambiente virtual em Python, e quando


não se deseja mais trabalhar ali dentro, basta digitar deactivate para
sair. As demais alternativas possuem comandos não suportados
pela linguagem Python.
Questão 2

O constructo with da linguagem Python se refere a que tipo de


estrutura de controle?

A Comparação

B Atribuição

C Laço

D Condicional

E Escopo

Parabéns! A alternativa E está correta.

O constructo with delimita o escopo das funções e variáveis abaixo


dele, como na leitura de um arquivo, por exemplo. As demais
alternativas referem-se a estruturas da linguagem, porém os
constructos correspondentes são diferentes do with.
2 - Preparação de dados para análise no Python
Ao final deste módulo, você será capaz de descrever a preparação de dados para análise no
Python.

Ligando os pontos
Você sabe preparar dados para análise no Python? Que estratégia você
adotaria diante da necessidade de preparar os dados para serem
utilizados por outras aplicações de análise? Vamos entender melhor as
questões que envolvem esse processo.

Uma expressão bastante comum hoje em dia é que “os dados são o
novo petróleo”. O objetivo é destacar a importância dos dados para dar
suporte à tomada de decisão. Mas esse processo não é apenas de
carregar os dados de uma fonte, como um arquivo ou tabela de banco
de dados, e começar a utilizá-los. É preciso investigar se os dados estão
em um formato adequado, se não há algum tipo de perda e se eles são
coerentes entre si.

Além disso, é bastante comum trabalharmos com aplicações em que os


dados numéricos estão em escalas diferentes de ordem de grandeza e
são de tipos diferentes, como no caso de dados numéricos e
categóricos, por exemplo.

Todas essas questões precisam ser tratadas antes de aplicar alguma


técnica de análise, pois não há como esperar um bom resultado de um
algoritmo se não fornecermos dados confiáveis. O Python facilita
bastante esse processo de investigação e tratamento dos dados, em
especial, por causa da estrutura de dados Dataframe que faz parte do
pacote Pandas.

Logo que carregamos os dados em uma estrutura do Python, podemos


iniciar o processo de investigação e tratamento. Por exemplo, vamos
supor que carregamos os dados em um Dataframe chamado de “df”.
Então, podemos substituir dados vazios da estrutura a partir de
comandos como “df.dropna()” e “df.fillna(valor)” por um valor específico.
Também podemos aplicar filtros e agregação de dados que nos ajudam
a detectar problemas.

Quando trabalhamos com dados numéricos em escalas diferentes, é


importante aplicar um processo conhecido como normalização.
Basicamente, os dados ficarão entre 0 e 1 e, assim, podemos compará-
los de forma coerente.

Uma boa prática de investigação é chamar o método “df.info()” logo


depois de carregar os dados, pois ele exibe um resumo sobre os dados
que nos ajudam a ter uma melhor compreensão e, assim, traçar a
melhor estratégia para tratá-los.

Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos


ligar esses pontos?

Questão 1

Suponha que você precise realizar um estudo de diversos dados


que estão armazenados em arquivos de formato csv. A linguagem
de programação que você deve usar é o Python. É muito importante
que os dados que serão analisados estejam coerentes. Nesse
contexto, para fornecer dados coerentes de análise, você deve:

A
Utilizar um programa utilitário para investigar os
dados.

Retornar os dados para o cliente e apontar a


B necessidade de corrigi-los, para que o trabalho de
análise possa ser iniciado.

Utilizar um método de um dos pacotes do Python


C que investigue a possível incoerência dos dados e
aponte soluções.

Utilizar as funções do Dataframe para investigar e


D
corrigir possíveis incoerências.

Modificar os dados de entrada, de modo que fiquem


E
coerentes.

Parabéns! A alternativa D está correta.

O processo de investigação demanda muita atenção. Além disso,


depende muito da capacidade do analista para perceber
incoerências. Portanto, é essencial dispor de ferramentas que
facilitem esse processo. Nesse sentido, o Python oferece a
estrutura de dados Dataframe, com diversas funcionalidades que
apoiam o trabalho investigativo.

Questão 2

Como você já sabe, o Python possui a estrutura de dados


Dataframe: a principal forma de representação de dados, que faz
parte do pacote Pandas. A estrutura Dataframe é importante,
porque

permite representar dados heterogêneos e já possui


A
diversas funcionalidades para tratá-los.
já realiza automaticamente todo o processo de
B
carga e transformação dos dados.

com ela, o desenvolvedor pode migrar seus dados


C para aplicações mais sofisticadas, que poderão
tratá-los.

D é muito simples de ser utilizada na prática.

é a representação oficial de dados heterogêneos do


E
Python.

Parabéns! A alternativa A está correta.

É bastante comum trabalhar com conjuntos de dados de diferentes


tipos. Por exemplo, podemos ter registros que combinam largura e
altura medidas em centímetros e campos que informem as cores
de um item. O Dataframe permite que armazenemos todos esses
dados em um registro e possui funções que nos ajudam a aplicar
transformações. Mas tudo isso serve apenas para apoiar o
desenvolvedor. É essencial que este conheça os conceitos
necessários para aplicar corretamente as técnicas. A ferramenta
não substitui o profissional, apenas oferece meios para otimizar os
resultados do trabalho dele.

Questão 3

Considere o seguinte cenário: você precisa treinar pessoas para fazer a


coleta e o tratamento de dados. É essencial que esse trabalho seja bem-
feito, pois o resultado dele é a entrada para o processo de análise. Como
sempre, o tempo é um recurso escasso, e você precisa realizar escolhas
que otimizem o aprendizado. Que estratégia você adotaria para obter
esse objetivo? Dica: use o Python.
Digite sua resposta aqui

Chave de respostaexpand_more

Atividades como a coleta e tratamento dos dados é fundamental


no processo de análise. Isso ocorre porque, se esses dados
tiverem problemas de qualidade, a análise não terá como produzir
um resultado aceitável. O Python oferece excelentes recursos para
realizar esse tipo de trabalho e é uma ótima escolha para capacitar
profissionais. Muito rapidamente, eles estarão aptos a realizar
testes com baixa demanda de infraestrutura, além de poder contar
com muito material disponível na Internet para realizar consultas.

Obtenção do conjunto de dados


A coleta de dados é o processo de captura e medição de informações e
variáveis de interesse, de forma sistemática que permita responder a
perguntas de pesquisa, bem como testar hipóteses e avaliar resultados.

Coleta de dados.

Existe uma diferença entre os conjuntos de dados qualitativos e


quantitativos. Vamos ver qual é?

Dados qualitativos Dados quantitativos

São dados não São os dados


numéricos, em sua numéricos, que podem
maioria, normalmente ser matematicamente
descritivos ou nominais. computados. Essa
Apresentam-se, em categoria de dado mede
geral, em formato de diferentes escalas que
textos, sentenças ou podem ser nominais,
rótulos. As perguntas ordinais, intervalares e
que geram essa proporcionais. Na
categoria de dados são maioria dos casos,
abertas e os métodos esses dados resultam
envolvidos para seu da medição de algum
tratamento são grupos aspecto ou fenômeno.
de foco, de discussão e Normalmente, existe
entrevistas. São um uma abordagem
bom jeito de mapear o
close sistemática muito bem
funcionamento de um definida e mais barata
sistema ou a razão de de se implementar do
um fenômeno. Em que a coleta de dados
contrapartida, são qualitativa, uma vez que
abordagens custosas é possível construir
que consomem muito processos automáticos
tempo, e os resultados ou simplesmente
são restritos aos grupos consumir relatórios
de foco envolvidos. gerados. Entre os
métodos dessa
categoria, temos os
surveys, as queries, o
consumo de relatórios e
os escavadores
(scrapers).

É importante ressaltar que essas categorias de dados não são


mutuamente exclusivas, pois é muito comum encontrar relatórios ou
fazer entrevistas cujo resultado contenha tanto dados quantitativos
(renda, número de familiares, despesas etc.) como dados qualitativos
(endereço, sobrenome, instituição de ensino, grau de instrução etc.).

Existe ainda uma diferença no que tange à obtenção dos dados em si,
classificados como dados primários e secundários. Vejamos a seguir.

Dados primários

O que são:
São aqueles coletados de primeira mão, ou seja, dados que ainda
não foram publicados, autênticos ou inéditos.

Como é um dado recém-coletado, não tem interferência humana


e, por isso, é considerado mais puro do que os dados
secundários.
Entre as fontes de dados primários, temos surveys, experimentos,
questionários e entrevistas.

Vantagens:
São dados puros, coletados para a resolução de um problema
específico e, se necessário, podem ser coletados novamente a
qualquer momento para aumentar a quantidade.

Dados secundários

O que são:
São aqueles dados que já foram publicados de alguma forma, ou
seja, sofreram alguma interferência humana. Por exemplo, ao
fazermos a revisão de literatura em qualquer estudo, estamos
revisando dados secundários.

Entre as fontes de dados secundários, temos: livros, registros,


biografias, jornais, censos, arquivos de dados etc. Os dados
secundários são muito úteis quando não conseguimos fazer
coleta em primeira mão; por exemplo, ao reproduzirmos um
estudo de um trabalho da literatura, temos que utilizar os dados
providos pelos autores.

Vantagens:
Economia de tempo em não ter que desenvolver um sistema de
coleta, menor custo e delegação de responsabilidade (em relação
aos dados) do profissional para o dono dos dados originais.

Tratamento de dados nulos ou


corrompidos
Um problema muito comum na atividade de pré-processamento de
dados é a qualidade dos dados. Os dados podem vir certinhos,
consistentes, talvez muito variados, mas, pelo menos, completos.
Entretanto, é possível que os dados venham com atributos faltantes,
registros nulos, registros mal escritos (desformatados) etc. Para esses
casos, existem diversas formas de resolver o problema, dependendo do
tamanho da base, do tipo de processo de extração e da importância do
atributo prejudicado.

Comentário
Dados faltantes ou nulos em bases grandes (por volta da ordem de
grandeza de 10.000 registros ou mais) podem ser resolvidos ignorando
o registro todo, ou seja, removendo-o da base, se a proporção de nulos
não for expressiva (não passar de 10% da quantidade de registros). Essa
estratégia é comum para bases grandes, pois a remoção desses
registros nulos não será tão danosa ao processo de treinamento.

Outra estratégia para esse caso específico, de base de dados grande, é


utilizar técnicas de regressão para dados numéricos ou de classificação
para dados categóricos, para o preenchimento automático desses
dados. O fato de a base ser grande ajuda o algoritmo de preenchimento
automático, sendo claro que dados com variância alta podem prejudicar
esse processo.

Para dados faltantes ou nulos em bases de dados muito restritas ou


pequenas (por volta da ordem de grandeza de 1.000 ou menos), temos
duas alternativas: ou tentamos preencher de forma automática como
vimos anteriormente, ou voltamos ao processo de coleta e tentamos
melhorá-lo a fim de consertar o problema que causou a nulidade ou a
falta.

E, finalmente, para dados faltantes ou nulos em bases de dados


precárias em que a exclusão do registro ou a interpolação é inviável, o
correto é retomar diretamente ao processo de coleta, pois claramente
os dados são insuficientes para o projeto.

Para dados repetidos, normalmente a solução é simples, pois basta


eliminá-los, a não ser que a repetição seja apenas para um subconjunto
de atributos. Se for o caso, provavelmente a repetição é uma
decomposição de uma agregação ou é uma repetição de um evento em
diferentes períodos de tempo.

Atenção
Para resolver o problema de dados repetidos, é sempre útil estudar os
metadados do conjunto de dados, se estiverem disponíveis, ou estudar a
origem deles.

Regularização de dados
Os dados coletados, além de poderem ter sido corrompidos ou
simplesmente estar faltando, podem estar com ruídos, ou pelo menos
com pontos fora da curva, os chamados outliers. Por exemplo, na série
[1,1,2,3,4,5,6,100,7,8,9,50], podemos dizer que 50 e 100 são outliers, uma
vez que são muito distantes do restante. Tal perturbação pode causar
problemas nos processamentos do sistema sobre esse conjunto,
levando-o a demonstrar comportamentos indesejados.

Ponto fora da curva. Podemos ver que o ponto se distancia demais da média e das variâncias
esperadas do boxplot.

Existem várias formas de contornar tal situação. Podemos remover os


dados destoantes do conjunto, assim limpando o sistema. Entretanto, se
quisermos levá-los em consideração mesmo assim, o que pode ser
feito? Para isso, podemos usar a regularização.

Regularizar um dado significa colocar seus atributos em


escala; assim, o conjunto não sofrerá tanto com um ponto
fora da curva, bem como se adaptará a novos valores que
venham a ser incorporados.

Dentre as opções de regularização, temos o método min max, que


consiste em colocar os dados em escala com o mínimo valor do
atributo no conjunto contra o máximo valor.

A fórmula é:

d_observado
(d_max − d_min)

A fórmula do método min max coloca o dado observado em uma régua


que começa no mínimo valor possível e vai até o máximo,
transformando assim o d_observado em um valor entre 0 e 1.

Demonstração com Python e Pandas


Existem várias formas de incorporarmos os dados nos nossos scripts
Python. Podemos fazer a coleta dos dados a partir de bibliotecas, que
fazem varreduras em sites, ou em dados semiestruturados como
notícias e tweets por meio do BeautifulSoup e Scrapy.

Para fins de estudo e demonstração, vamos tratar como se nossos


dados recuperados fossem arquivos, como os separados por vírgula,
CSV. Com o Pandas, basta utilizarmos o seguinte comando de
importação da biblioteca inicialmente:

Python
content_copy

Atenção

Os delimitadores de strings nos comandos Python são aspas simples (')


no início e no final.

Como esperado, o Pandas lê o arquivo separado por vírgulas


convertendo-o em estrutura tabelar e, por padrão, a primeira linha do
arquivo é considerada o cabeçalho da tabela. Também por padrão, para
esse tipo de operação, o leitor de arquivo do Pandas considera a vírgula
como separador de colunas e o parágrafo como separador de registros
ou linhas.

Esse padrão pode ser alterado passando o marcador


desejado para o parâmetro sep.

Existe o leitor de Excel (read_excel), que funciona exatamente da


mesma forma, com o cabeçalho também na primeira linha por padrão,
mas o separador padrão é o tab (espaço tabular), o que também pode
ser alterado. A maior diferença é que no Excel, diferentemente do CSV,
pode haver abas (sheets); por padrão, considera-se a primeira aba na
leitura.

A função de leitura do Pandas é tão poderosa que pode ler arquivos não
convencionais como lista de dicionários, bastando utilizar o método
read_json, por exemplo, que tem um atributo específico chamado orient,
que vem de orientação, uma vez que a lista de dicionários pode ser
passada como record, ou seja, por vetor de registros, ou, ao contrário,
split, que é vetor de valores de coluna variável.

Python
content_copy

A conversão de dados mais comum é transformar listas de dicionários


em DataFrames, dentro do próprio código, ou seja, por atribuição de
variável, o que é mais simples ainda e pode ser feito da seguinte forma:

Python
content_copy

Vale ressaltar que nem todos os arquivos JSON já vêm no formato de


lista de dicionários, mas sim como strings convertidas. Logo, é
considerada uma boa prática tentar fazer a decodificação caso haja a
dúvida:

Python
content_copy
Assim como é possível ler os arquivos, também é possível persistirmos
com eles; o método usado para isso é to_csv, to_excel, to_json etc.
Deve-se dar especial atenção à persistência, pois em casos como a
exportação dos dados no formato de lista de dicionários, ou JSON
Array, o padrão de orientação é importantíssimo porque interfere na
retrocompatibilidade com outros sistemas que compartilhem os dados.

Python
content_copy

Existem formas ainda mais extravagantes de se ler dados com o Pandas


como o read_sql, que lê os dados a partir de conexões ODBC ou JDBC
com bancos de dados compatíveis, sendo que cada tipo de banco tem
suas especificidades.

Comentário

Ainda há a possibilidade de leitura por URL, em que, no lugar de


passarmos o caminho de diretórios local da máquina, passamos o
caminho do arquivo no sistema on-line, que será transferido para o
projeto Python seguindo um protocolo FTP.

video_library
Preparação de dados para análise no
Python
As técnicas de preparação de dados para análise no Python são
abordadas no vídeo a seguir.
Falta pouco para atingir seus objetivos.

Vamos praticar alguns conceitos?

Questão 1

Na fase de pré-processamento, o objetivo da regularização de


dados é

A deletar os dados.

B embaralhar os dados.

remover pontos fora da curva e colocar os dados


C
em escala.

D atualizar os dados.

remover pontos fora da curva e tirar os dados de


E
escala.

Parabéns! A alternativa C está correta.

O objetivo da regularização dos dados, como já diz o nome, é fazer


com que eles fiquem na mesma escala, evitando ruídos de
diferença de tamanho, e também suavizar e até mesmo remover
pontos fora da curva.

Questão 2

Dados nulos e corrompidos são um problema para a análise de


dados. Qual das técnicas abaixo é viável para lidar com esse tipo de
problema?
Remoção do registro com dados faltantes ou nulos
A
do conjunto.

Embaralhamento do registro com dados faltantes


B
ou nulos.

C Fusão dos dados nulos ou faltantes.

D Transformação linear dos dados nulos ou faltantes.

E Rotação dos dados nulos ou faltantes.

Parabéns! A alternativa A está correta.

Dentre as alternativas, a remoção dos dados faltantes é a única


viável a solucionar o problema. Existem outros métodos para
tratamento de dados nulos, como a interpolação do valor pela
média da coluna ou algo do gênero, que não estão entre as opções
de respostas.

3 - Manipulação de dados no Python


Ao final deste módulo, você será capaz de descrever a manipulação de dados no Python.
Ligando os pontos
Você sabe como manipular os dados no Python? Conseguiria
implementar soluções capazes de realizar transformações dos dados,
de tal modo que eles pudessem ser utilizados por métodos sofisticados
de análise? Para entender esse conceito na prática, vamos analisar uma
situação hipotética.

Vivemos na era dos dados, da informação e do conhecimento. Depois


de devidamente tratados e submetidos a processos de análises, os
dados nos ajudam a tomar decisões baseadas nas relações relevantes
entre eles. Essas relações produzem informações e, na sequência,
conhecimento.

Vamos pensar em um exemplo.

Um empreendedor, dono de uma loja virtual, deseja compreender melhor


o comportamento de seus consumidores para direcionar os
investimentos em marketing e contratos com fornecedores.

Quais devem ser os primeiros passos que esse empreendedor deve dar
para alcançar esse objetivo?

Certamente, o primeiro passo é estudar o mercado e conseguir coletar e


armazenar dados com qualidade. Sem eles, tudo é especulação. Em
seguida, é preciso dispor de pessoas competentes que dominem
métodos de análise. O Python auxilia muito nesse processo, em
especial, por ser um ambiente dinâmico com muitos pacotes que
permitem extrair informação.

A principal estrutura de dados do Python é o Dataframe, que faz parte


do pacote Pandas. Com ele, além de poder representar os dados de um
modo fácil para manipulá-los, você poderá fazer filtros por linhas ou
colunas, ou ambos. Também poderá aplicar consultas que lembram a
facilidade do SQL com métodos do tipo “query”.

Além do pacote Pandas, é natural que você utilize as funcionalidades do


pacote Numpy. Com ele, você pode aplicar importantes métodos que
vão auxiliar na descoberta por informações, como, por exemplo, média,
mediana, desvio-padrão, quartis, mínimo e máximo.

As possibilidades que o Python oferece para manipular dados são um


grande incentivo para estudar mais a linguagem e buscar exemplos
disponíveis nos sites oficiais dos pacotes e nas redes sociais.

Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos


ligar esses pontos?

Questão 1

Imagine que você fez a leitura de um arquivo csv. Quando foi


analisar os dados, decidiu criar um subconjunto dos dados
originais. Nesse contexto, qual é a escolha adequada para tratar
esses campos?

Aplicar uma projeção ou uma seleção, utilizando


A
métodos do Dataframe.

B Remover os registros indesejados.

Preencher os campos não desejados com as


C
médias da categoria a que se referem.

Deixar que os métodos do Dataframe façam a


D
melhor escolha.

E Aplicar comandos SQL.

Parabéns! A alternativa A está correta.

Uma projeção ou uma seleção permite criarmos um subconjunto


dos dados originais. Tal operação é realizada na linguagem SQL
pelo comando SELECT. Para os DataFrames, podemos fazer o
mesmo com os métodos específicos.

Questão 2

A linguagem de programação Python oferece recursos para estudar


indicadores de medidas estatísticas dos dados. O principal pacote
com esse objetivo é o Numpy. Em sua visão, por que esse estudo
estatístico é feito na etapa de tratamento dos dados presentes nas
operações de agregações em Dataframes?

Para aprofundar o conhecimento nas técnicas de


A
ciência de dados e de machine learning.

Para explorar os recursos do Python, em especial,


B do pacote Numpy, a fim de otimizar os resultados
das análises.

Para investigar padrões relevantes que permitam


C
extrair informações e detectar anomalias.

Para apresentar uma visualização agradável ao


D
usuário dos padrões detectados nos dados.

E Para extrair conhecimento diretamente dos dados.

Parabéns! A alternativa C está correta.

A manipulação de dados exige um processo investigativo que


possibilite a detecção de padrões e de anomalias. Conseguimos
atingir esse objetivo com o Python a partir da aplicação de
operações de agregação que exibam informações estatísticas, tais
como média, mediana, mínimo, máximo e desvio-padrão.

Questão 3
Você já conhece a importância da manipulação dos dados. Que
sequência você faria para coletar dados de arquivos csv e manipulá-los
com o Python? Descreva essa sequência de forma suscinta.

Digite sua resposta aqui

Chave de respostaexpand_more

A coleta é a etapa mais simples. O Python possui a estrutura de


dados DataFrame que possui métodos associados para fazer a
importação dos dados, que, inclusive, podem ser heterogêneos.
Em seguida, vem a etapa investigativa, onde passamos a analisar
os dados. Isso envolve aplicar métodos para obter resumos
estatísticos deles e buscar dados faltantes. Após detectar dados
anômalos, precisamos aplicar uma estratégia bem definida de
como tratá-los. Em alguns casos, devemos descartá-los e, em
outras situações, podemos substituí-los por aproximações de seus
vizinhos. Finalmente, podemos manipular os dados com
operações, tais como seleção, projeção, agregação etc., o que
permite a análise de dados sob diferentes perspectivas.

DataFrames e tabelas
Uma característica interessante na estrutura de dados de DataFrame ou
dados em painel é o fato de poderem ser criados a partir de
praticamente qualquer outra estrutura. Podemos criar Pandas
DataFrames a partir de arquivos CSV, Excel, listas de dicionários,
matrizes, junções de listas etc.

Comentário
As tabelas, por mais que tenham essa característica de DataFrames, são
muito similares às estruturas que conhecemos nos bancos de dados,
como colunas, por exemplo, sendo que cada coluna tem um tipo próprio,
por exemplo object, que é o padrão de tipo de dados para strings, ou o
equivalente a varchar. A outra semelhança é o index, que serve para
marcar cada linha do DataFrame e ordenar os dados, assim como a
estrutura de mesmo nome nas tabelas dos bancos de dados SQL.

Para descrever o conteúdo de um DataFrame no Pandas, podemos fazer


de duas formas:

Python
content_copy

O DataFrame descrito pelo info() resulta na descrição de cada coluna e


seu tipo, com a contagem de valores não nulos, como mostrado a
seguir:

Terminal
content_copy

A alternativa é o describe, que é menos detalhista do que o info(),


executado pelo comando:

Python
content_copy
O describe resulta na descrição de estatísticas bem básicas, por
exemplo, a contagem de cada coluna (count), quantos valores únicos de
cada variável (unique) e quantas categorias, bem como o primeiro
registro (top) e a frequência (freq.).

Terminal
content_copy

Tente executar, como exercício, o exemplo anterior da lista de


dicionários, com o df.info() e com o df.describe().

Python
content_copy

Essas informações são básicas e nos dão uma previsão de como


lidarmos com o DataFrame. Existem outras funções que são mais
parecidas com as que estamos acostumados nas tabelas de SQL, e as
veremos a seguir.

Manipulação de dados em
DataFrames
Como mencionamos, os DataFrames são similares a tabelas, como as
dos bancos de dados convencionais PostgreSQL, MySQL, DB2 etc. Tais
estruturas contam com operações muito parecidas com as de projeção,
seleção, deleção e junção.

Comentário
Quando fazemos uma projeção ou uma seleção, o que queremos é criar
um subconjunto dos dados originais. Tal operação é realizada na
linguagem SQL pelo comando SELECT, enquanto para os DataFrames
podemos fazer o mesmo com os métodos loc, iloc e query.

O loc é o método que projeta as colunas do DataFrame pelos rótulos e


funciona da seguinte forma:

Python
content_copy

Nesse exemplo, criamos um DataFrame artificial e fizemos duas


projeções:

‘viper’
A primeira com apenas uma coluna.

‘viper’, ‘sidewinder’
A segunda com duas colunas.

Além do tamanho da projeção, podemos reparar que, ao selecionarmos


apenas uma coluna, teremos de volta uma série (Pandas series) e, caso
escolhamos mais de uma coluna, além de termos que passar o conjunto
como uma lista dentro dos colchetes do loc, o retorno será um
DataFrame, uma vez que é o coletivo de duas ou mais séries.

Exemplo com iloc:

No caso do iloc, a projeção depende dos indexes numéricos das linhas e


colunas de um DataFrame.
Veja o detalhamento a seguir.

description Print 1

O primeiro print nos trará a primeira coluna do


conjunto.

description Print 2

O segundo print nos trará a primeira linha do


DataFrame.

description Print 3

O terceiro print nos trará a primeira e segunda


linhas do DataFrame.

description Print 4

O quarto print nos trará as três primeiras linhas do


DataFrame.

description Print 5

O i i á j ã di ã
O quinto print nos trará a projeção com a condição
de que o valor das células seja par.

description Outros prints

Os dois últimos prints nos projetam uma submatriz


(ou filtro) do DataFrame original, o primeiro sendo
feito de forma direta e o segundo por fatiamento.

Exemplo com query:

Python
content_copy

Por fim, temos o jeito de fazer seleções e projeções por queries. Assim
como nos bancos de dados SQL, isso é bastante intuitivo. No primeiro
print, temos uma query que retorna dados cujo valor da dimensão A é
maior do que o da dimensão de B. Já a segunda query é uma igualdade,
em que desejamos os dados cujo valor da dimensão B seja igual ao da
dimensão 'C C' (repare que, dentro da query, o que for textual, seja valor
ou dimensão, tem de ser declarado com o acento crase (`) ). E, por fim,
um último jeito de filtrar é passando a referência da coluna no colchete
do DataFrame.

É possível fazermos deleções também, e para isso utilizamos o drop


para remover colunas, por exemplo, mediante o comando:
Python
content_copy

Ou

Python
content_copy

Também podemos deletar a célula e para isso basta associar o valor


None à célula localizada com a ajuda do iloc, ou qualquer outra forma de
projeção. Já para deletarmos linhas, basta passarmos os indexes:

Python
content_copy

Nesse caso, deletamos as duas primeiras linhas do DataFrame.

Como você pôde observar, utilizamos muito os indexes para nossas


manipulações. Para que possamos regularizar a indexação depois de
um drop, ou seja, reindexar, basta fazer:

Python
content_copy
Ou

Python
content_copy

O index, assim como nos bancos de dados, tem os papéis de enumerar


o conjunto e facilitar a manipulação dos dados em questão. Ao resetar o
DataFrame, é como se estivéssemos desfragmentando a memória do
DataFrame.

Assim como nos bancos de dados, temos também as operações de


junção, feitas pelo concat, merge e join.

Exemplo com concat:

Python
content_copy

Esse exemplo realiza a junção entre as séries pelos seus indexes. Basta
definir o axis=1, pois normalmente o concat, quando não declarada a
axis ou usando axis=0, fará uma união entre os dados. Após um concat,
pode ser feito um reset_index também, mas podemos encurtar esse
passo declarando dentro do pd.concat() o parâmetro ignore_index=True.

Exemplo com merge:


Python
content_copy

Nesse exemplo, podemos ver o jeito bem tradicional de junção, em que


declaramos as chaves estrangeiras que serão a base da junção e
declaramos os sufixos em caso de repetição de nome de colunas, que é
o caso da coluna value, na qual teremos values da esquerda e da direita.

Exemplo com join:

Python
content_copy

Comentário

O join é feito a partir de um dos DataFrames, assim como o merge, mas


ele depende do index, e a junção é feita no index padrão.

É possível reindexar ou alterar o index de um DataFrame para ser uma


das outras colunas. Basta fazer o df.set_index(“nome da coluna”).

Groupby e apply
Agora veremos como fazer agregações em DataFrames, que são as
operações mais utilizadas para a análise dos dados, bem como para a
extração de estatísticas básicas, possibilitando uma compreensão
holística do conjunto de dados. Ao agregar dados, estamos reduzindo o
conjunto e resumindo-o a métricas, estatísticas e agrupamentos.

Para agruparmos, é simples. Basta chamarmos o método groupby a


partir do DataFrame a ser analisado. Fazemos isso da seguinte forma:

Python
content_copy

Aqui, podemos perceber como ocorre a agregação dos dados. O método


groupby aceita uma lista de colunas, que serão os agrupadores, mas só
chamar o método de groupby não fará as agregações desejadas. O que
precisamos para fazer a agregações é chamar o método direto, como no
exemplo mean(), que calcula a média de todas as colunas numéricas
agrupadas pelo tipo de animal.

Podemos fazer mais de uma agregação ao mesmo


tempo, bastando passar o método agg(['mean']), que
recebe uma lista de agregações cobertas na
documentação do método no Pandas.

Uma coisa interessante, que não acontece nos bancos de dados


tradicionais, é que o index das agregações passa a ser o agrupamento.
Para que isso não ocorra, basta usar o reset_index() no resultado da
agregação, com drop=False ou não declarado, para que os indexes não
sejam deletados e você perca colunas no DataFrame da agregação.

Comentário

A operação apply, que é um método do DataFrame e das series, nada


mais é do que o equivalente à função map de outras linguagens como
Java e Javascript, em que definimos uma função e a passamos nos
componentes de uma lista a fim de modificá-la.
Nos DataFrames, isso pode ser feito pelas colunas individualmente ou
pelas linhas, bastando mudar o atributo axis na chamada. Por exemplo:

Python
content_copy

Nesse exemplo, criamos um DataFrame sintético de três linhas, com


cada linha tendo os valores 4 e 9. No primeiro apply, queremos a raiz
quadrada do DataFrame inteiro, mas apenas para visualização, não
salvando na variável. No segundo apply, estamos modificando a coluna
A para que seja acrescida de uma unidade. E, por fim, criamos uma nova
coluna para ser a soma das colunas A e B.

video_library
Manipulação de dados com Pandas
No vídeo a seguir, abordamos as técnicas de manipulação de dados
para análise no Python.
Falta pouco para atingir seus objetivos.

Vamos praticar alguns conceitos?

Questão 1
Qual a função do index de um DataFrame?

Servir de base de somatórios dos dados para checar


A
a consistência por meio de checksum.

Apenas ordenar as linhas da tabela por meio de


B
índices e servir como orientação visual.

Sua função é meramente estética, não tendo


C
nenhuma outra atribuição.

Indexador do DataFrame, facilita o acesso aos


D
registros, otimizando consultas.

Indicador de performance do conjunto de dados


E
analisado a partir de índice.

Parabéns! A alternativa D está correta.

O index é como se fosse a chave primária e índice de um


DataFrame, permitindo fazer junções e agregações a partir dele.

Questão 2

O que acontecerá com a coluna C no comando “df['C'].apply(lambda


x: x*x)”, uma vez que ela não tem valores nulos e é toda composta
por números de ponto flutuante?

A O resultado será dividido por ele mesmo.

B O resultado obtido será a raiz quadrada dos valores.

Os valores da coluna serão transformados em


C
strings.
D Os valores da coluna serão deletados.

Os valores da coluna serão elevados à potência de


E
2.

Parabéns! A alternativa E está correta.

O método apply funciona como a função map de outras linguagens,


passando por cada valor e executando a função mapeada e
declarada no apply, que neste caso é a multiplicação de x por ele
mesmo, ou seja, potência de 2.

4 - Visualização de dados no Python


Ao final deste módulo, você será capaz de aplicar a visualização de dados no Python.

Ligando os pontos
Você sabe como aplicar a visualização de dados no Python?
Conseguiria implementar uma solução em que o usuário pudesse
visualizar resultados e identificar oportunidades? Vamos entender
melhor esse conceito.
A comunicação é um aspecto fundamental para dar suporte à tomada
de decisão. Sem ela, podemos obter os melhores resultados, mas,
dificilmente, eles serão colocados em prática, pois os responsáveis por
executá-los precisam estar convencidos de que dispõem das melhores
opções.

O Python nos ajuda nesse processo com a disponibilização de pacotes


que nos auxiliam na produção de gráficos de excelente qualidade. A
visualização é a etapa final de um processo de análise. Ela compreende
a escolha dos tipos de gráficos e cores que melhor representem uma
informação.

Um exemplo de gráfico clássico é o histograma, que é parecido com um


gráfico de barras de dados. No eixo horizontal, agrupa um intervalo de
resultados em colunas. O eixo vertical representa a quantidade ou
porcentagem de ocorrências nos dados para cada coluna. Esse gráfico é
usado para visualizar distribuições de dados. Dessa forma, podemos
entender melhor como os dados estão distribuídos proporcionalmente
entre si, visualizar a ocorrência de padrões e buscar explicações que os
justifiquem.

O pacote clássico do Python para visualização de dados é o matplotlib,


mas há outros pacotes, como o seaborn e plotly, que oferecem recursos
mais avançados e favorecem a comunicação de resultados com melhor
eficácia.

Por vivermos na era da informação, somos desafiados a otimizar o


tempo das pessoas e o nosso. Para que possamos comunicar
resultados, precisamos desenvolver um processo de empatia com
aqueles que vão consumi-los. Então, precisamos aprender a desenvolver
gráficos de qualidade. O Python nos auxilia bastante nesse sentido.

Após a leitura do case, é hora de aplicar seus conhecimentos! Vamos


ligar esses pontos?
Questão 1

Suponha que você é o responsável por apresentar o desempenho


da área de vendas do setor em que trabalha para a diretoria. A
equipe que realizou a análise dos dados encontrou algumas
correlações com eventos relevantes que podem ser úteis para
explicar o comportamento das vendas e traçar novas estratégias.
Para transmitir isso aos membros da diretoria, você deve

apresentar as informações e conclusões em


A
gráficos resumidos.

apresentar diversos relatórios com detalhes do


B
processo para chegar às conclusões.

utilizar diversos slides com gráficos produzidos por


C diferentes aplicações para apresentar o processo
investigativo.

explicar para os membros da diretoria a


superioridade do Python sobre outras linguagens de
D
programação e ferramentas para ter chegado às
conclusões sobre as vendas.

fazer uma apresentação oral que valorize a


E percepção de um grupo de analistas sobre as
conclusões obtidas.

Parabéns! A alternativa A está correta.

A capacidade de se comunicar com outras pessoas é fundamental,


em especial no caso apresentado, em que é necessário apresentar
resultados de vendas para membros da diretoria de uma empresa. É
básico que sejam utilizadas análises de dados reais para se chegar
às conclusões. Além disso, essas conclusões precisam ser
transmitidas de forma simples e pedagógica, de modo que pessoas
que não são especialistas nos processos de análises possam
compreender seus resultados e, assim, tomar decisões com mais
chance de acerto.

Questão 2

A linguagem de programação Python possui alguns pacotes com


métodos para gerar gráficos, que são um importante recurso para
visualização de informações. Como você justificaria a escolha de
um pacote de visualização no lugar de outro?

O pacote plotly possui recursos gráficos avançados


A
comparados a outros.

B Sempre devemos utilizar o pacote mais moderno.

A escolha deve ser baseada nos pacotes mais


C estáveis e que exijam menos recursos
computacionais.

A escolha do pacote de visualização deve ser feita


D
de acordo com o que é estabelecido pelo cliente.

O principal pacote de visualização do Python é o


E matplotlib, e a escolha de um método de
visualização de outro pacote deve ser uma exceção.

Parabéns! A alternativa A está correta.

O pacote plotly, com métodos para visualização do Python, é


excelente para representar informações e gerar oportunidade de
descoberta de conhecimento.

Questão 3

Você já conhece a importância das representações gráficas. Com base


em seu conhecimento e em sua experiência sobre o assunto, descreva o
que é necessário para um profissional utilizar representações gráficas, a
fim de aumentar a eficiência da comunicação em um projeto de ciência
de dados.

Digite sua resposta aqui

Chave de respostaexpand_more

Todas as etapas do ciclo de vida de um projeto de ciência de


dados são importantes. A visualização dos dados já está na etapa
final, ou seja, quando a análise foi concluída, e os resultados
devem ser apresentados para os responsáveis pela tomada de
decisão. A visualização efetiva da análise deve ser uma
combinação de estatística, aspectos visuais e conhecimento da
área de aplicação. O tempo é um recurso cada vez mais escasso.
Portanto, seu uso deve ser otimizado. O profissional que atua na
área de visualização precisa se preocupar com todos esses
aspectos, pois eles aumentam a efetividade da comunicação.

Tipos de dados
No mundo de Big Data, temos dados os mais variados possíveis, que
isoladamente podem não significar muito, mas com o devido
processamento, podemos extrair informação útil e conhecimento para
tomada de decisões. Neste módulo, para fins de visualização de dados,
vamos nos ater à seguinte classificação: dados numéricos, dados
categóricos e dados temporais.

Dados numéricos

São aqueles cujos valores são em números reais, racionais ou


naturais, que expressam quantidades, proporções, valores
monetários, métricas. Esses números são tipicamente passíveis
de operações e cálculos matemáticos.
Dados categóricos

São aqueles normalmente expressos por texto, que representam


rótulos, símbolos, nomes, identificadores.

Dados temporais

São aqueles que passam a ideia de série, cronologia, fluxo de


tempo. Exemplos de dados temporais são aqueles associados a
datas, aos dias da semana, índices ordinais, séculos, meses,
anos, horas etc.

Atenção

Podemos ter dados categóricos expressos por números, por exemplo,


notas de provas significando conceitos (que podem ser substituídos
pelo sistema de letras A, B, C, D, F) e ordinais representando categorias
de posição ou ordem. Podem ocorrer dados numéricos que, quando
estratificados, passam a ser categóricos como idade, temperatura etc.

Tipos de visualizações
Para cada tipo de dado, temos visualizações mais adequadas ou que
ressaltam melhor o significado por trás do conjunto de dados.

Para dados numéricos, usualmente queremos que sejam demonstradas


suas proporções, distribuições e correlações. Quando queremos
descobrir como é o formato de distribuições para entendermos
possíveis padrões implícitos em dados numéricos, utilizamos os
gráficos de histograma.

O código a seguir gera um histograma usando o plotly.express, uma API


para criação de gráficos no Python que contém diversos datasets de
testes, identificados por data.xxx().

Python
content_copy
Histograma da distribuição de dados de comandas de restaurante (data.tips) - resultado da
execução do código anterior.

Também podemos querer saber a correlação entre dados numéricos e,


para isso, podemos utilizar o gráfico de dispersão, scatterplot, como no
exemplo a seguir:

Python
content_copy

Gráfico de dispersão de larguras e comprimentos de sépala de flores (data.iris) - resultado da


execução do código anterior.

No gráfico, podemos ver a relação entre as medidas, agregadas pela


espécie.
Para dados categóricos, queremos mostrar as categorias e suas
proporções, ou colorir outros gráficos como fizemos no scatterplot
anteriormente. Por exemplo:

Python
content_copy

Exemplo de quadro hipotético de medalhas da China, Coreia do Sul e Canadá em um gráfico de


barras (data.medals_long) - resultado da execução do código anterior.

Comentário

Como podemos ver, o gráfico de barras é muito parecido com o


histograma; a diferença é que o gráfico de barras mostra a contagem e
proporções de dados categóricos, ou seja, o eixo X será de dados
categóricos e o Y representará a contagem (podendo inverter os eixos
quando estamos olhando gráficos de barras orientados
horizontalmente).

Outro exemplo para entendermos proporções das categorias é o gráfico


de pizza ou torta (pie).

Python
content_copy
Gráfico de pizza mostrando a proporção dos valores distintos de dias da semana no conjunto de
comandas (data.tips) - resultado da execução do código anterior.

No gráfico de pizza, podemos tanto ver que o conjunto de dados só tem


quatro dias distintos como também suas proporções, mostrando que o
restaurante/lanchonete do conjunto de dados de comandas tem maior
funcionamento nos fins de semana.

O gráfico de pizza é adequado quando temos poucas


categorias, pois, se ele tiver muitas fatias a exibir, ou
seja, muitos valores únicos, passa a ficar ilegível,
sendo preferível migrar para o gráfico de barras.

Finalmente, vamos falar dos dados temporais, aqueles que passam


ideia de cronologia. Uma solução natural é representarmos tais dados a
partir do gráfico de linhas. Por exemplo:

Python
content_copy
Expectativa de vida ao longo dos anos para Austrália e Nova Zelândia (data.gapminder) -
resultado da execução do código anterior.

Aqui podemos perceber bem a ideia de cronologia, com o eixo X


apresentando o dado temporal (anos, meses, datas completas, horas ou
mesmo o index do DataFrame). Assim, será possível entender a
evolução da coluna analisada. Como podemos ver, foi feita uma
coloração diferente por país, um dado categórico, isto é, uma
agregação/agrupamento.

Atenção

Temos que tomar cuidado para os valores únicos dessas agregações


não prejudicarem a visualização.

Biblioteca Plotly
Para elaborarmos todas essas visualizações escolhemos trabalhar com
o Plotly, uma biblioteca de visualização do Python muito adequada ao
ambiente do Jupyter Notebook, uma vez que suas visualizações são
interativas, podendo passar com o mouse por cima dos gráficos e
enxergar dados com mais detalhes, bem como operações de zoom,
pane, export etc.

Sua instalação é bem simples, basta utilizarmos o comando pip:

Terminal
content_copy
E para usarmos os métodos nos nossos códigos, precisamos importar a
biblioteca:

Python
content_copy

Depois escolhemos uma visualização que mais se adeque aos dados a


serem observados, sendo que o catálogo de visualizações da biblioteca
é bem vasto e disponível em sua documentação.

Por exemplo, caso você queira algo diferente, use um bubble chart:

Python
content_copy

Gráfico de bolhas da expectativa de vida pela renda per capita agregado por país, em que o
tamanho da bolha é dado pela população do país - resultado da execução do código anterior.
video_library
Visualização de dados no Python
No vídeo a seguir, abordamos as técnicas de visualização de dados para
análise no Python.
Falta pouco para atingir seus objetivos.

Vamos praticar alguns conceitos?

Questão 1

Para que serve o Plotly?

A É uma biblioteca para gestão de arquivos do Python.

É uma biblioteca para criação de modelos de


B
aprendizado de máquina do Python.

É uma biblioteca para manipulação de dados do


C
Python em DataFrames.

É uma biblioteca para gerar visualização de dados


D
interativa do Python.

E É uma biblioteca para o split de dados do Python.


Parabéns! A alternativa D está correta.

O Plotly é a biblioteca do Python alternativa ao matplotlib e seaborn,


capaz de gerar visualizações de dados de forma interativa e muito
adequada para jupyter notebooks, que têm esse caráter mais
exploratório. As demais alternativas se referem a outras bibliotecas
do Python.

Questão 2

Quais são as categorias de dados que pensamos na hora de fazer


visualizações na análise de dados?

A Irracionais, complexos e temporais.

B Numéricos, rotulados e cronológicos.

C Numéricos, categóricos e quânticos.

D Numéricos, categóricos e temporais.

E Imaginários, categóricos e temporais.

Parabéns! A alternativa D está correta.

A classificação tradicional dos dados na hora da elaboração de


visualizações é: dados numéricos, que nos levam a histogramas e
scatterplots; dados categóricos, que nos levam ao gráfico de pizza
ou de barras; e dados temporais, que nos levam aos gráficos de
linha.
Considerações finais
Como vimos, a linguagem Python pode ser uma ferramenta fundamental
para a análise de dados. Esta, por sua vez, é essencial para iniciarmos
bem qualquer projeto de um sistema de informação na área de
aprendizado de máquina e ciência de dados.

Neste conteúdo, entendemos como funciona a linguagem Python,


algumas de suas peculiaridades, sua sintaxe e seus constructos. Vimos
que podemos utilizar bibliotecas poderosas de análise e manipulação de
dados como Pandas.

Fomos capazes de compreender o conceito de dado de painel, bem


como entendermos os DataFrames do Pandas. Compreendemos e
aplicamos os métodos de manipulação de dados disponíveis nos
DataFrames como projeção, deleção e junção.

Aprendemos como é feita a coleta e o pré-processamento de dados,


culminando na visualização, que é a concretização do processo de
análise ou um recomeço, dependendo dos achados.

headset
Tópicos relevantes em análise de
dados no Python
Ouça no podcast a entrevista sobre análise de dados no Python.

Explore +
Para dar sequência ao seu estudo, teste mais formas de gerenciar o
Python e suas versões com o Pyenv.

Estude o pipenv, pois é uma excelente maneira de gerenciar projetos


Python, muito usado no mercado.

No Pandas, tente explorar outros métodos, uma vez que a biblioteca é


muito vasta, permitindo integrações diretas até mesmo com bancos de
dados.

Além do Plotly, temos o matplotlib e o seaborn, sendo recomendada a


pesquisa dessas bibliotecas de visualização de dados.

Referências
AMARAL, F. Aprenda mineração de dados: teoria e prática. Rio de
Janeiro: Alta Books, 2016.

AZEVEDO, A. I. R. L.; SANTOS, M. F. KDD, SEMMA and CRISP-DM: a


parallel overview. IADS-DM, 2008.

DA SILVA, F. C. D.; GARCIA, A. C. B. Judice Verum, a Methodology for


Automatically Classify Fake, Sarcastic and True Portuguese News.
Dissertação (Mestrado em Informática) – Universidade Federal do
Estado do Rio de Janeiro, Rio de Janeiro, 2019.

KABIR, S. M. S. Methods Of Data Collection. In: ______. Basic Guidelines


for Research: An Introductory Approach for All Disciplines. 1. ed.
Bangladesh: Book Zone Publication, 2016, p. 201-275.

WIRTH, R.; HIPP, J. CRISP-DM: Towards a standard process model for


data mining. In: Proceedings of the 4th international conference on the
practical applications of knowledge discovery and data mining. London,
UK: Springer-Verlag, 2000.

Material para download


Clique no botão abaixo para fazer o download do
conteúdo completo em formato PDF.
Download material

O que você achou do conteúdo?

Relatar problema

Você também pode gostar