EDIÇÃO ESPECIAL | 2021
Introdução à
Bem vindos! A cada minuto, milhares de dados são gerados pelo mundo, sejam em curtidas nas redes sociais, streamings de conteúdo, cliques em anúncios, compartilhamentos, dentre outras formas. Já sabemos que esses dados podem ser usados de várias formas e com vários propósitos, no entanto, como de fato isso pode ser feito? É aqui onde entra a Data Science ou Ciência de Dados, que consegue filtrar essas informações e saber o que é relevante e o que realmente pode ser usado. Em outras palavras, é possível afirmar que a Ciência de Dados nos permite olhar para o futuro através do passado, já que a partir de dados obtidos anteriormente é possível prever comportamentos, tendências ou até mesmo acontecimentos. Não só como um tradutor, um Cientista de Dados atua de forma a facilitar a comunicação entre as diferentes partes de uma empresa, fazendo com que os dados "circulem" com fluidez, o que consequentemente traz mais progresso e desenvolvimento para todos. E isso vem chamando cada vez mais a atenção das empresas, que enxergam a Ciência de Dados como uma ferramenta para aumentar suas chances de sucesso. Por esse motivo, a equipe da REDinfo decidiu lançar a edição especial de 2021 abordando essa área que cresce a cada dia, chamando cada vez mais a atenção de empresas e profissionais. Abraços e boa leitura!
Expediente Universidade do Estado do Rio Grande do Norte Faculdade de Ciências Exatas e Naturais Departamento de Informática Programa de Educação Tutorial Ciência da Computação Tutor: Rommel Wladimir de Lima Petianos: Carolayne Barreto da Silva José Fagner Alves da Silva Isaú Lucas Abreus Fernandes de Queiroz Liza Alexandra Vieira Magalhães de Azevedo Marcio Vinicios da Rocha Pereira Mia Arjona Gomes Thomas Rikelme Soares Figueiredo Edição Especial: Introdução à Ciência de Dados | 2021
Cottonbro / Pexels
Apresentação
Introdução à
Sobre o autor deste tutorial: Prof. Dr. Sebastião Emidio Alves Filho Formação Acadêmica: • Graduado em Ciências da Computação pela UFRN (2003) • Mestre em Ciência da Computação pela UERN/UFERSA (2011) • Doutor em Engenharia Elétrica e de Computação pela UFRN (2017) Experiência Acadêmica: • Professor Adjunto IV com dedicação exclusiva na UERN (2004 - Atual) • Líder do Grupo de Pesquisa em Tecnologias na Educação (GTEC) na UERN (2019 - Atual) Linhas de Pesquisa de Interesse: • Ciência de Dados Educacionais • Sistemas de recomendação para Web Experiência com o Python e o Jupiter Notebooks: • Disciplinas de Inteligência Computacional, Mineração de Dados e Sistemas de Recomendação na graduação e pós-graduação • Projetos de iniciação científica (PIBIC) e tecnológica (PIBITI) – Desenvolvimento de um sistema de recomendação para atividades de robótica educacional; – Predição de desempenho acadêmico de estudantes universitários usando mineração de dados.
3
EDIÇÃO ESPECIAL
C. Morillo / Pexels
Tutoriais e Dicas
Introdução à Ciência de Dados Prof. Dr. Sebastião Emidio Alves Filho Professor do Departamento de Informática na UERN sebastiaoalves@uern.br
Parte I - Ciência de Dados 1. Introdução sociedade, como está a saúde de um paciente, que tipo de produto um cliente está interessado em comprar, que filmes um espectador estaria interessado em assistir... Enfim, são inúmeras possibilidades de entender e prever padrões, hábitos, tendências e perspectivas, seja do passado, presente ou futuro, usando para isso dados coletados ao longo do tempo. E é justamente isso que faz a Ciência de Dados.
Vivemos em uma sociedade na era da informação. No momento da escrita deste tutorial, a página Internet Live Stats estima que em apenas 1 segundo foram realizadas mais de 93 mil buscas no Google®, publicados mais de 9 mil textos no Twitter®, enviados mais de 3 milhões de e-mails (sendo 2/3 spams) entre várias outras atividades, gerando mais de 122 Terabytes de tráfego ao redor do mundo.
lukas goumbik / Pexels
Além dos dados que trafegam online, outros são gerados offline a partir da automação e informatização de processos como: fotografias digitais, imagens médicas computadorizadas, leituras de sensores em indústrias, ponto eletrônico em uma empresa, geração de cupons fiscais em supermercados, edição de documentos em casas e escritórios, etc. Esses dados podem conter informações valiosas para pessoas e organizações. A partir deles, é possível realizar análises que mostrem: como estão as finanças de uma empresa, que assuntos estão sendo discutidos pela
4
EDIÇÃO ESPECIAL
2. Interdisciplinaridade Por ser tão abrangente, é praticamente impossível ter um conhecimento aprofundado em todas essas áreas, por isso é comum termos ocupações que exigem diferentes níveis de especialização em cada assunto. A figura 1 dá uma amostra sobre que tipos de conhecimentos são necessários em algumas sub-áreas. Para entender um pouco mais sobre os possíveis papéis que podem ser desempenhados, as habilidades necessárias e responsabilidades de cada um, sugiro o artigo de Jyosmitha Munnangi e Yogesh Kothiya.
A ciência de dados é uma área extremamente interdisciplinar. As principais disciplinas que a compõem unem conhecimentos de:
Matemática / estatística: manipular dados e extrair informações significativas deles implica em fazer e interpretar operações como tirar médias e desvio padrão, calcular probabilidades, analisar distribuições, calcular distâncias, entre outros;
Chanin Nantasenamat / Data Professor
Ciência da computação: realizar operações como essas manualmente seria impraticável. Nesse caso, a computação entra com todo o leque de ferramentas e infraestrutura computacional e de rede através de metodologias de desenvolvimento de so ware, bancos de dados, redes de computadores, plataformas de nuvem, etc; Domínio do negócio: para definir a importância sobre os dados analisados, os resultados do seu processamento e como eles serão utilizados, é importante que haja uma interação com especialistas no domínio da aplicação, seja ela na medicina, comércio, entretenimento, culinária, etc.
Figura 1: panorama da ciência de dados.
5
EDIÇÃO ESPECIAL
Parte II - Conhecimentos e onde buscá-los 3. Conhecimentos acadêmicos
4. Cursos e comunidades
Durante o Curso de Ciência da Computação, algumas disciplinas fornecem conhecimentos para Ciência de Dados, mesmo que não sejam direcionadas para este fim. Temos disciplinas de matemática (Matemática Computacional, Álgebra Linear, Probabilidade e Estatística), disciplinas na área de programação (Algoritmos, Programação Estruturada, Programação Orientada a Objetos e Programação Avançada), de desenvolvimento de so ware (Engenharia de So ware, Análise e Projeto de Sistemas), de infraestrutura computacional e de redes (Redes de Computadores, Sistemas Distribuídos, Bancos de Dados) e também a disciplina de Inteligência Artificial.
Felizmente, a área de Ciência de Dados e suas sub-áreas contam com muitos materiais incluindo livros, cursos e vídeos em português, mas principalmente em inglês. Abaixo sugiro algumas referências para quem está começando na área: Livros: algumas editoras oferecem o download de livros gratuitos como parte de sua política de divulgação e incentivo à educação. Alguns não são sempre gratuitos, outros são só por alguns dias, mas vale a pena ficar de olho e aproveitar. Os que mais gosto são das editoras O’Reilly e Packt Publishing. Um que gosto e recomendo é o Python Data Science Handbook de Jake VanderPlas. Em lojas de livros online, como o Amazon Kindle®, também é possível encontrar livros gratuitos, por preços bem acessíveis ou ainda disponíveis a partir de uma assinatura mensal que podem ser lidos a partir do próprio dispositivo, navegador web e app para celular. Além é claro das compras tradicionais de livros físicos e e-books.
Durante o curso, algumas disciplinas optativas são ofertadas na área da Ciência de Dados, como Redes Neurais e Processamento Digital de Imagens, além de disciplinas de Tópicos Especiais, que têm ementa aberta e podem contemplar assuntos como Sistemas de Recomendação, como foi no semestre de 2020.2. Algumas universidades oferecem cursos de pós-graduação em nível de especialização voltado para Ciência de Dados. No Programa de Pós-Graduação em Ciência da Computação UERN-UFERSA, são ofertadas disciplinas e foram defendidas algumas dissertações com esta temática. Além disso, alguns professores têm projetos de pesquisa que estudam e desenvolvem trabalhos com dados, além de outras atividades desenvolvidas pelos grupos de pesquisa da instituição.
Cursos online: muitas escolas e plataformas de cursos online oferecem formações de básicas a avançadas, de módulos separados a formações mais completas. Os famosos bootcamps tem formatos interessantes, com oportunidades de trabalho, acesso vitalício ao conteúdo do curso e todas as suas atualizações. Nessas opções temos a nacional Alura Cursos Online e as plataformas Udacity, Udemy e
6
EDIÇÃO ESPECIAL
Coursera. Temos também a EdX, onde os alunos podem realizar o curso sem custo como ouvintes ou pagar uma taxa e ter direito a suporte de dúvidas, avaliações e certificado de conclusão;
Comunidades: aprender sozinho é sempre complicado, por isso a ajuda de comunidades de estudantes, profissionais e entusiastas ajuda muito na evolução. Aplicativos como Slack®, Discord® e o Telegram® estão recheados delas, tanto a nível regional, nacional e internacional. O mais difícil aí é acompanhar o volume de mensagens que pode chegar a centenas ou até milhares por dia. De todas as comunidades, destaco a Data Hackers. Além de ser uma comunidade bastante ativa com a publicação de conteúdos em posts, vídeos e podcasts, também tem uma super newsletter quinzenal com o que foi publicado de mais relevante, lives agendadas, ofertas de emprego, projetos interessantes e até memes, como o da figura 2. Outro importante endereço a se visitar é o Kaggle. Ele é um misto de comunidade, portal de conteúdo, repositório de datasets, plataforma de cursos e também competições. Muitas competições são patrocinadas por grandes empresas, trazendo problemas reais e distribuindo prêmios em dinheiro para os melhores.
Figura 2: é comum estudar e descontrair com o material gerado nas comunidades.
pelo seu visual mais limpo e organizado. Há muito material de qualidade publicado lá que pode servir de referência para um projeto. A comunidade Data Hackers, por exemplo, publica muita coisa lá. E por fim, mas não menos importante, temos o Stack Overflow®, salvando vidas de programadores incluindo os que trabalham com Ciência de Dados.
Materiais avulsos: em algumas situações não estamos saindo do zero, mas temos uma dúvida ou objetivo específico. O Youtube® tem muitos vídeos sobre Ciência de Dados, Aprendizagem de Máquina e como melhorar a visualização e apresentação dos dados com dashboards. O sistema de blogs Medium® tem atraído muitos estudantes e profissionais
7
EDIÇÃO ESPECIAL
5. Linguagens de programação e ferramentas Em todas os tipos de aplicações existem as linguagens e ferramentas de desenvolvimento queridinhas dos programadores. Na Ciência de Dados temos duas principais: a linguagem R usando o ambiente RStudio e a linguagem Python usando Jupyter Notebooks. Ambas as linguagens são interpretadas, com seus scripts podendo ser executados comando a comando ou a partir de arquivos.
meio acadêmico para validação de dados em publicações científicas. O fato de ter um compilador gratuito e padronizado pela R Foundation ajudou no surgimento de módulos e bibliotecas open source para os mais diversos fins, incluindo aprendizagem de máquina e criação de gráficos. O RStudio® é um ambiente criado para desenvolvimento na linguagem R, que hoje também dá suporte a Python. Ele é bem organizado, simples de usar e com divisões para a edição do programa, console para visuali-
A linguagem R já tinha seu público cativo com quem trabalhava com programação e estatística, desde sua origem, especialmente no
Figura 3: ambiente de desenvolvimento integrado RStudio®
8
EDIÇÃO ESPECIAL
zação dos resultados dos comandos, ambiente de dados em formato semelhante a planilhas, espaço para gráficos, entre outros, como pode ser visto na figura 3. Ele também tem uma versão que roda na nuvem, evitando o trabalho de instalação e configuração. O so ware está disponível para download gratuito e também com planos pagos que incluem suporte e armazenamento na nuvem. A versão cloud também está disponível gratuitamente, mas com algumas restrições, ou através de uma assinatura anual.
Algumas empresas já oferecem plataformas de notebooks instalados e configurados com as bibliotecas necessárias na nuvem. Assim como o RStudio, eles podem ser usados de forma gratuita, com algumas limitações, ou mediante o pagamento de assinaturas. Como o Jupyter Notebook é um so ware open source também é possível baixar e instalar na própria máquina ou através de plataformas pré-configuradas como a Anaconda. Para iniciantes, as configurações das opções de nuvem gratuita são satisfatórias e podem ser usadas por um bom tempo. Dentre as opções disponíveis podemos destacar as oferecidas pelo Google, Microso , Amazon, IBM e pela comunidade Kaggle. O exemplo do tutorial foi implementado no Google Colab. ThisIsEngineering / Pexels
Já a linguagem Python dispensa apresentações. Uma das linguagens mais usadas atualmente, ela é considerada de fácil aprendizagem e poderosa devido às inúmeras bibliotecas implementadas. Pode-se usar Python para programas simples, para desktop, em desenvolvimento web frontend e backend, robótica, visão computacional e, é claro, Ciência de Dados. Uma vantagem em relação ao R é que ela é usada para além de um nicho específico, isto é, pode-se aprender Python e usá-la em outras áreas assim como pode-se usar o aprendizado em Python para acelerar o aprendizado na Ciência de Dados. Um grande aliado nessa tarefa é o ambiente Jupyter Notebook. Ele pode ser hospedado em uma infraestrutura de nuvem e ser acessado remotamente através de um navegador. Cada notebook é visto pelo usuário como uma página web onde pode-se alternar entre células nas quais é possível escrever documentos hipermídia formatados na linguagem Markdown (mais simples que HTML) e células de código, onde comandos na linguagem Python podem ser escritos e executados, com seus resultados apresentados na própria página de forma dinâmica.
9
EDIÇÃO ESPECIAL
Parte III - Fazendo uma análise exploratória 6. Usando o notebook
7. Usando a biblioteca Pandas A biblioteca mais simples para iniciar na ciência de dados é a Pandas. Ela se baseia no uso de uma classe chamada Dataframe, que organiza os dados em formato de tabela com as propriedades:
Acesse o notebook usado neste tutorial através do botão abaixo:
• index: como os rótulos para cada linha; Acesse aqui
• columns: como os rótulos para as colunas; • data: para os dados da tabela.
Um notebook pode intercalar células de texto e de código. Em células de texto pode-se formatar usando a linguagem Markdown, colocando em itálico ou negrito, por exemplo. # e # o
Os rótulos das linhas e colunas podem ser numéricos ou por texto e usam o padrão de acesso como se fossem listas ou dicionários python, podendo usar listas como índices e slices. PS: Este não é um tutorial de Python, então suponho que vocês já saibam pelo menos o básico da linguagem.
Nas células de código podemos digitar comandos executá‐los com o comando Ctrl+Enter Com o atalho Shift+Enter a célula é executada e cursor passa para a célula seguinte
print('hello') a = 10
Primeiro passo - importando e usando DataFrames:
hello
# O ambiente guarda na memória os valores de células executadas previamente # Se a célula anterior foi executada, então o valor da variável a vai ser 10
Vamos mostrar aqui os comandos básicos para importar e criar DataFrames. # Importamos a biblioteca pandas com o codinome pd para encurtar os comandos
print(a) 10
import pandas as pd
O notebook vai ficar salvo na nuvem e acessível posteriormente. Há atalhos para limpar os resultados das saídas já executadas e executar todas as células do notebook ou até antes da célula atual.
Criando Dataframes usando listas: # Os dados são informados linha a linha columns=['Apples', 'Bananas'] data = [[35, 21], [41, 34]]
10
EDIÇÃO ESPECIAL
fruit_sales.Apples
index = ['2017_Sales', '2018_Sales'] fruit_sales = pd.DataFrame(data=data, columns=columns, index=index)
2017_Sales 35 2018_Sales 41 Name: Apples, dtype: int64
# Colocar o nome de uma variável no fim da célula, faz com que ela seja exibida. # Se quiser exibir mais de uma, use o comando print ou display
# Ou usando a notação de listas / dicionários
fruit_sales
display(fruit_sales['Apples']) bananas_2017 = fruit_sales['Bananas']['2017_Sales'] display('Vendas de bananas em 2017:', bananas_2017) 2017_Sales 35 2018_Sales 41 Name: Apples, dtype: int64 'Vendas de bananas em 2017:' 21
Criando Dataframes usando dicionários:
Podemos usar essa mesma notação para adicionar novas colunas ou usando a função append para adicionar novas linhas.
# Cada chave representa uma coluna animal_dictionary = {'Cows': [12, 20], 'Goats': [22, 19]} index=['Year 1', 'Year 2'] animal_df = pd.DataFrame (animal_dictionary, index=index) animal_df
# Adicionando a fruta caju fruit_sales['Cashew'] = [54, 38] # Adicionando vendas de 2019 e 2020 sales_2019 = { 'Apples': [20, 30], 'Bananas': [37, 43], 'Cashew': [27, 31]} fruit_sales2 = pd.DataFrame(sales_2019, index=['2019_Sales', '2020_Sales']) fruit_sales = fruit_sales.append(fruit_sales2)
Acessando linhas e colunas:
fruit_sales
Ao contrário de quando manipulamos vetores, os dados em um DataFrame estão organizados como um conjunto de colunas e não de linhas. Isso porque é mais comum fazer operações com o mesmo dado de registros diferentes e não o contrário. Assim, quando usamos a notação de acesso com campos ou colchetes, usamos primeiro a coluna e depois a linha desejada.
Para evitar confusões e utilizar o formato de linha e coluna, podemos usar localizadores, que são atributos dos DataFrames. Podemos usar de dois tipos:
# Podemos acessar e atribuir os dados a variáveis usando a linha como um atributo do DataFrame
• loc: localizamos as linhas e colunas a partir do seu rótulo;
11
EDIÇÃO ESPECIAL
• iloc: localizamos linhas e colunas de acordo com sua ordem numérica, iniciando de 0. Em ambos os casos usamos a notação [linha, coluna]. Se quisermos todos os elementos usamos o slice ':' para indicar. # Mostrando todas as linhas de vendas de maçãs display(fruit_sales.loc[:, 'Apples'])
# Mostrando todas as vendas de 2019 display(fruit_sales.loc['2019_Sales', :])
# Mostrando a quarta linha de dados display(fruit_sales.iloc[3, :])
Que tal praticar? Tente inserir mais dois animais (porco e galinha) no dataframe animal_df, e ainda mais um ano no registro. Use os localizadores loc e iloc para mostrar parte dos dados.
12
EDIÇÃO ESPECIAL
Mikhail Nilov / Pexels
8. Criando Dataframes a partir de arquivos Uma das maneiras mais simples e comuns de se disponibilizar um conjunto de dados é em formato de texto plano. Os formatos mais comuns para este tipo de dataset são o CSV (valores separados por vírgula) e o JSON (notação de objeto JavaScript).
GitHub
Para este exemplo vamos pegar uma base de dados sobre vinhos disponíveis nesta URL do GitHub. Você pode baixar o arquivo uma vez e armazená-lo no seu Google Drive ao invés de usar sempre da URL.
13
EDIÇÃO ESPECIAL
#inhos_df = pd.read_csv('/content/drive/MyDrive/winemag‐data_first150k.csv', index_col=0) vinhos_df = pd.read_csv('https://github.com/davestroud/Wine/raw/master/winemag‐data_first150k.csv', index_col=0) vinhos_df
Podemos ver que a base de dados contém 10 colunas com informações sobre país de origem, preço, pontuação e descrição. Podemos acessar os dados desse dataframe como já mostrado anteriormente. Você já é capaz de dizer o que cada comando faz? vinhos_df.description
vinhos_df['country']
14
EDIÇÃO ESPECIAL
ThisIsEngineering / Pexels
vinhos_df.loc[0, 'country'] 'US'
vinhos_df.loc[0,:]
vinhos_df.loc[:10, ['country', 'price']]
vinhos_df.loc[ [0, 2, 5], 'province':'region_2']
9. Criando "novas bases" e selecionando detalhadamente Até agora só nos guiamos pelos rótulos e índices para selecionar os registros. Mas podemos fazer isso de forma mais significante para a minha expectativa pessoal ou empresarial.
15
EDIÇÃO ESPECIAL
E o melhor, podemos atribuir os resultados a variáveis diferentes, criando "bases diferentes". Entre aspas porque na verdade são os mesmos dados, mas que são acessados com nomes diferentes. O Pandas faz isso para não consumir tantos recursos, especialmente memoria. Vejamos algumas formas de fazer isso. Ordenando os dados A função sort_values ordena os registros a partir de um ou mais critérios, por padrão em ordem decrescente, mas que pode ser alterado usando o parâmetro ascending. Selecione os 50 melhores vinhos de acordo com a pontuação dada. vinhos_ordenados_pontos = vinhos_df.sort_values('points', ascending=False) top_50 = vinhos_ordenados_pontos.iloc[:50] top_50
Selecionando com operadores relacionais em grupo Usando dataframes do pandas podemos fazer operações com vários registros de uma vez sem usar laços. Basta apenas usar o operador desejado com o nome da base ou da coluna desejada.
16
EDIÇÃO ESPECIAL
É preciso lembrar que cada operação resulta em uma cópia dos dados que devem ser atribuídos a alguma variável. Criar uma coluna cash_price em que os preços apareçam com 15% de desconto se o pagamento for à vista. vinhos_df['cash_price'] = vinhos_df['price'] * 0.85 vinhos_df
Da mesma forma ocorre com operadores relacionais. Se compararmos uma coluna inteira com um valor, teremos uma coluna inteira de valores booleanos. Podemos usar esses valores para selecionar registros do dataset. Que vinhos obtiveram nota máxima? Quais os vinhos brasileiros nessa base? Quais os vinhos que custam acima de 1000 dólares? vinhos_df.points == 100
17
EDIÇÃO ESPECIAL
vinhos_100_pontos = vinhos_df.points == 100 vinhos_df [ vinhos_100_pontos ]
brasileiros = vinhos_df['country'] == 'Brazil' vinhos_df [ brasileiros ]
18
EDIÇÃO ESPECIAL
preco_maior_1000 = vinhos_df['price'] > 1000 vinhos_df [ preco_maior_1000 ].sort_values('price')
Podemos usar os operadores diretamente no índice, ou combinar condições com operadores lógicos & (e) | (ou): vinhos_df.loc[ (vinhos_df.country == 'Brazil') & (vinhos_df.price > 30)]
A função query também pode fazer a mesma coisa de uma forma mais simples, como se fosse uma consulta a um banco de dados. Não esqueça dos parênteses entre as condições. vinhos_df.loc[ (vinhos_df.country == 'Brazil') & (vinhos_df.price > 30)]
Que tal tentar agora? Usando os comandos vistos você é capaz de dizer: • Os nomes dos vinhos argentinos? • Se há algum vinho chileno que custa mais de 500 dólares? • De que regiões da França vieram os 20 vinhos mais bem avaliados?
19
EDIÇÃO ESPECIAL
10. Agrupando os dados e analisando valores A Pandas também permite reorganizar nossas informações, agrupando linhas com características semelhantes. Aí qualquer operação é feita usando todos os itens agrupados. Quantos vinhos de cada país foram cadastrados nessa base? # A função groupyby agrupa de acordo com os valores da coluna vinhos_por_pais = vinhos_df.groupby('country')
Máximo, mínimo e média Uma das operações básicas quando se explora um dataset é saber como estão as distribuições dos valores numéricos. Nesse caso temos dois principais: points e price. As funções que dão o mínimo, máximo, média e mediana nos ajudam a confirmar ou refutar suposições que temos acerca dos dados. Os avaliadores estão sendo muito bonzinhos nas notas? Vejamos qual a menor pontuação dada.
# A função size conta quantos elementos tem vinhos_df.points.min()
vinhos_por_pais.size()
80
O vinho mais caro com certeza deve ser francês. Será? # A função max só dá o valor vinhos_df.price.max() 2300.0
# Mas podemos pegar em que índice isso ocorreu com a função idxmax idx_maior = vinhos_df.price.idxmax() vinhos_df.loc[idx_maior, 'country'] 'France'
Em média, quem tem os vinhos mais caros? Espanha ou Portugal? # Usamos a função mean para tirar a média # Existem várias formas de fazer a mesma coisa media_portugal = vinhos_df.loc [ vinhos_df['country'] == 'Portugal'].price.mean() media_espanha = vinhos_df.query("country == 'Spain' ").price.mean()
20
EDIÇÃO ESPECIAL
Em alguns países, o resultado foi NaN. Ele é a sigla de Not a Number, isto é, não foi informado um número válido para aquela coluna. Possivelmente, o preço não foi informado no momento da geração da base.
print ('Preço médio de Portugal:', media_portugal) print ('Preço médio da Espanha:', media_espanha) Preço médio de Portugal: 26.332614942528735 Preço médio da Espanha: 27.048529411764704
Podemos fazer outro agrupamento e usar as mesmas funções.
Também podemos fazer isso com todos os países, usando nosso agrupamento anterior.
Qual a média de preços de cada variedade de vinho? Qual a mais cara?
Qual a média de preços dos vinhos de cada país?
vinhos_por_variedade = vinhos_df.groupby('variety') vinhos_df.groupby('country').price.mean()
precos_por_variedade = vinhos_por_variedade.price.mean() precos_por_variedade
# Mostrando ordenado precos_por_variedade.sort_values(ascending=False)
A função describe sintetiza as informações numéricas das colunas e em uma saída só mostra:
21
EDIÇÃO ESPECIAL
• A contagem de valores informados (não nulos); • A média e o desvio padrão; • Valores mínimos e máximos; • Distribuição dos percentis a cada 25%. É importante ressaltar que ele só funciona com dados numéricos.
Exibindo os valores em gráficos A biblioteca Pandas já tem embutida algumas funções para exibir gráficos. Será que há relação entre o preço do vinho e sua pontuação? vinhos_df.plot(kind='scatter', x='points', y='price');
vinhos_df.describe()
Podemos tirar algumas conclusões aqui. • Apesar da menor nota ser 80, as avaliações com notas muito boas não foram a regra, já que a média foi de 87 pontos e 75% dos vinhos tiveram nota 90 ou menor; • Nem todos os vinhos mostrados são muito caros. O menor preço informado foi 4 dólares e 50% deles custam 24 dólares ou menos. A média de 33 dólares não reflete bem a distribuição de preços. Veja que o desvio padrão de 36 (acima da média) mostra uma variância muito grande; • Muitos vinhos não tiveram seu preço informado. A diferença na contagem de pontuação e preços mostra que mais de 13 mil registros foram informados com preço faltando.
Através do gráfico de dispersão, pode-se notar que os vinhos mais caros estão mais concentrados a direita, onde ficam os que receberam maior pontuação. Mas existem muitos vinhos de boa qualidade (pontuação alta) com preço baixo. Quais foram as notas mais dadas na avaliação? vinhos_df.points.plot(kind='hist');
Pelo gráfico de histograma, vemos que as notas se concentram entre 85 e 93. Agora é sua vez. Faça um histograma dos preços. Use o gráfico do tipo bar para mostrar as pontuações dos vinhos de cada país.
22
EDIÇÃO ESPECIAL
11. Contagem de valores não numéricos. Para finalizar nossa análise, vamos falar sobre os valores não numéricos da base. Não faz sentido falar em média, máximo e mínimo para esses dados. Ao invés disso, usamos a frequência com que eles apareceram e aqui apresentamos as funções relacionadas a isso:
A função describe também funciona para dados não numéricos (categóricos). Para isso, usamos a partir de uma coluna deste tipo ou especificamos o parâmetro como consta a seguir. vinhos_df['winery'].describe()
• unique: traz uma lista de todos os valores que apareceram (sem repetições); • nunique: conta quantos valores únicos existem; • values_count: mostra uma contagem de número de ocorrências para cada valor único.
vinhos_df.describe(include=object)
Quantos países aparecem nesse dataset? Quais as variedade e os números de registros de cada um dos vinhos brasileiros? vinhos_df.country.nunique() 48
vinhos_df.country.unique()
vinhos_df.query(" country == 'Brazil' ").variety.value_counts()
No caso, a saída dá a contagem de valores não nulos, quantos valores únicos existem, que valor apareceu mais (top) e quantas vezes isso ocorreu (freq). Agora é a sua vez. Que perguntas que podem ser respondidas a partir da análise desses dados você faria? Que hipóteses podem ser comprovadas ou refutadas? Que informações seriam importantes para um amigo que aprecia vinhos ou para uma loja especializada no assunto? Formule mais duas perguntas e responda-as a partir de sua análise. Baixe outra base de dados e faça a sua própria análise. O céu é o limite (a memória, CPU e disco do Colab também). E isso é tudo pessoal. Obrigado e espero que tenham gostado do tutorial.
23
EDIÇÃO ESPECIAL
Glossário
Scraping: coleta ou raspagem é o processo onde dados são extraídos de uma fonte não estruturada, como por exemplo uma imagem, arquivo pdf ou página web (web scraping); Feature: característica ou informação presente em cada registro no dataset; Data Dictionary: dicionário que contém o significado de cada feature, isto é, que informação ela representa, seu tipo (inteiro, real, categórico,…), valores que ela pode receber, etc; Extract, Transform, Load (ETL): processo no qual uma grande quantidade dados são extraídos (geralmente de fontes diferentes), tratados (ou transformados) e carregados em repositórios como lago de dados (data lake) ou armazém de dados (data warehouse); Big data: área da computação que lida com quantidades de dados grandes demais para
serem tratadas com sistemas tradicionais; Knowledge-discovery in databases (KDD): processo de extração de conhecimento em bases de dados, que contempla etapas de seleção de características, pré-processamento, transformação, mineração de dados e interpretação/avaliação que busca transformar dados em informações úteis; Machine Learning (ML): área da inteligência computacional que utiliza algoritmos onde a máquina “aprende” a partir de dados fornecidos, sendo capaz de reconhecer padrões, fazer predições ou classificações em novas situações; Natural Language Processing (NLP): processamento de linguagem natural é a área da computação que busca compreender, extrair e produzir informações utilizando a língua nativa das pessoas (português, inglês, …); Business Intelligence (BI): área que utiliza a ciência de dados e inteligência artificial para oferecer um suporte a gestão de negócios.
lukas goumbik / Pexels
Dataset: conjunto (base ou banco) de dados que será utilizado pelo cientista de dados na sua análise;
24
EDIÇÃO ESPECIAL
Acompanhe nossas atividades em outras mídias: Site do PETCC É a porta de entrada para a comunidade ficar por dentro sobre o programa. No site do PETCC estão disponiveis informações como o histórico, os objetivos, as atividades realizadas pelos petianos, notícias, além das formas de contato. Acesse aqui
Instagram do PETCC A página no Instagram do PETCC traz
postagens sobre
alguns programas como "PETDev" , "Você Sabia?", Stories sobre assuntos relacionados ao curso de Ciência da Computação e atividades do PET.
Acesse aqui
DIcast Podcast que aborda temas relacionados à area de tecnologia, disponível nas plataformas Spotify e Deezer. O DIcast traz os assuntos em uma linguagem simples e clara para que possa ser apreciado por todos os interessados nos assuntos discutidos. Acesse aqui
25
Acesse aqui
EDIÇÃO ESPECIAL
fb.com/petccuern
fb.com/UERNoficial
fb.com/diuern
@petccuern
@uernoficial
@di.uern
petcc@uern.br
@UERNoficial
di@uern.br
petcc.uern.br
portal.uern.br
di.uern.br
EDIÇÃO ESPECIAL Introdução à Ciência de Dados 2021