0% acharam este documento útil (0 voto)
15 visualizações

M2 - Análise de dados com Python

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)
15 visualizações

M2 - Análise de dados com Python

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/ 28

Foto de Jay Wennington

disponível na Unsplash.
Editada pelo autor.

Análise de Dados com Python

Módulo 2 - Manipulação
de dados com Pandas
Sumário

Aula 1: Exploração de dados Aula 2: Análise Estatística

1.1 Explorando Diferentes Formatos de Arquivos e Entrada/Saída de 4 2.1 Explorando a Diferença Prática entre Média, Mediana e Moda 17
Dados 2.2 Compreendendo Variância e Desvio Padrão 19
1.2 Filtragem, Seleção e União de tabelas 8 2.3 Análise Descritiva com Pandas 24
1.3 Lidando com Dados Faltantes 14 2.4 Exercício Guiado de Análise de Dados com Pandas
26
3

Aula 1 - Exploração de dados


4

1.1 Explorando Diferentes Formatos

de Arquivos e Entrada/Saída de Dados


Podemos ler e escrever dados em diferentes formatos, utilizando a • Leitura de Arquivos: para fazer a leitura de um CSV, basta
biblioteca Pandas. Ela lê e manipula dados estruturados em tabelas importar a biblioteca Pandas e usar a função 'read_csv()':
(formatos CSV e Excel), semiestruturados (formatos JSON e XML) ou não
estruturados (formato HTML) com apenas algumas linhas de código,
carregando os dados sem se preocupar com o seu formato. A seguir, import pandas as pd
conheça como são realizadas a leitura e a escrita em cada formato.
dados = pd.read_csv('caminho/do/arquivo.csv')

CSV (Comma-Separated Values)


O CSV nem sempre é separado por vírgulas, apesar do nome dizer
O formato de arquivo CSV, ou Valores Separados por Vírgulas, é um arquivo “separado por vírgulas”. Quando vier separado por outro símbolo, você pode
de texto simples, no qual geralmente a primeira linha apresenta os nomes indicar isso ao ler o CSV passando o parâmetro “sep” e indicando o símbolo
das colunas e as linhas seguintes apresentam os dados, como numa tabela. que o arquivo usa, como no exemplo abaixo:

dados = pd.read_csv('caminho/do/arquivo.csv', sep='#')


5

• Escrita de Arquivos CSV: para salvar um DataFrame como CSV,


# Leitura de todas as abas de um arquivo Excel
utilizamos a função ‘to_csv()’. O parâmetro ‘index’ controla se os
índices serão incluídos no arquivo. Use ‘index=True‘ para incluir os dados = pd.read_excel('caminho/do/arquivo.xlsx', sheet_name=None)
índices ou ‘index=False’ para omiti-los: # Acessar um DataFrame específico pelo nome da aba
df_dados1 = dfs_excel['Primeira Aba']
dados_csv.to_csv('caminho/do/arquivo.csv', index=False)

• Escrita de Arquivos XLSX: para salvar um DataFrame como XLSX,


XLSX (Excel) utilizamos a função ‘to_ excel()’. O parâmetro ‘index’ controla se os
índices serão incluídos no arquivo. Use ‘index=True‘ para incluir os
Outro tipo de arquivo bem comum é o XLSX, que conhecemos normalmente índices ou ‘index=False’ para omiti-los:
como “Planilha Excel”. Para trabalhar com arquivos Excel no Pandas,
especialmente ao escrever arquivos XLSX, é necessário ter o pacote openpyxl dados.to_excel('caminho/do/arquivo_salvo.xlsx', index=True)
instalado. Este pacote é utilizado pelo Pandas para manipular arquivos Excel
no formato .xlsx. Para isso, execute em uma célula do Jupyter Notebook:

!pip install openpyxl lxml

• Leitura de Arquivos XLSX: para ler arquivos Excel, utilizamos a


função 'read_excel()':

dados = pd.read_excel('caminho/do/arquivo.xlsx, 'aba')

Podemos especificar qual aba queremos ler usando o segundo parâmetro. Se


você não especificar uma aba, o Pandas lerá a primeira aba por padrão. Se
você quiser ler todas as abas em um arquivo Excel, use sheet_name=None, o
que retornará um dicionário de DataFrames. Depois, caso queira acessar uma
aba, use o símbolo de índice e insira o nome da aba que deseja acessar.
6

JSON (JavaScript Object Notation) • Leitura de Arquivos XML: para ler arquivos XML, utilizamos a função
read_xml():

O JSON é um formato de dados usado para representar informações dados = pd.read_xml('caminho/do/arquivo.xml')


estruturadas como uma coleção de pares de nome-valor ou como uma lista
ordenada de valores. Nessa coleção de dados, cada elemento possui uma
chave identificando o nome do conteúdo e o seu valor.
• Escrita de Arquivos XML: para salvar um DataFrame como XML,
utilizamos a função to_xml():
• Leitura de Arquivos JSON: para ler arquivos JSON, utilizamos a
dados.to_xml('caminho/do/arquivo.xml')
função ‘read_json()’:

dados = pd.read_json('caminho/do/arquivo.json')

• Escrita de Arquivos JSON: para salvar um DataFrame como JSON,


utilizamos a função to_json():

dados.to_json('caminho/do/arquivo_salvo.json')

XML (eXtensible Markup Language)

É uma linguagem de marcação que lembra bastante o HTML. O XML permite


representar dados complexos em uma hierarquia organizada, facilitando a
troca e a integração de informações entre diferentes sistemas e aplicações,
usando o padrão chave-valor, parecido com o JSON.
7

HTML (HyperText Markup Language) • Leitura de HTML de URL: outro ponto interessante sobre o HTML é
que podemos ler esses dados de um site diretamente com a função a
seguir, sem ter que salvar um arquivo:
É a linguagem padrão para criar e estruturar páginas web. Na análise de
dados, o HTML é usado para extrair e manipular informações de tabelas e pd.read_html(url)
outros elementos presentes em páginas web.

• Leitura de Arquivos HTML: para ler tabelas de um arquivo HTML • Escrita de Arquivos HTML: para salvar um DataFrame como HTML,
salvo na sua máquina, utilizamos a função read_html(). Ele retorna utilizamos a função to_html():
uma lista de DataFrames, pois um arquivo HTML pode conter várias
tabelas. dados.to_html('caminho/do/arquivo_salvo.html')

dados = pd.read_html('caminho/do/arquivo.html')

Dica: o arquivo pode vir desorganizado se não possuir a informação de


Encoding que é a forma que um byte vira uma letra ou símbolo. Existem várias
formas, por exemplo, um byte que significa uma letra em algum site pode
significar outra em outro! Se você ler um HTML que vem com o encoding
declarado na página (que é o caso da maior parte dos sites), você não precisa
informar! O Pandas já entende a partir das declarações dentro do próprio
arquivo. Caso não vier escrito, basta passar o parâmetro encoding, dessa
forma:

dados = pd.read_html('caminho/do/arquivo.html', encoding='utf-8')


8

1.2 Filtragem, Seleção e


União de Tabelas
Nem todas as informações contidas em um conjunto de dados são úteis
para o objetivo que estamos buscando. Por isso, filtrar dados com o Pandas
é essencial para garantir a precisão e relevância da análise estatística.

Ao selecionar apenas os dados que atendem a critérios específicos, você


elimina ruídos e outliers (pontos de dados que se distanciam
significativamente do padrão geral do conjunto de dados) que podem
distorcer os resultados. Isso permite que você se concentre nas informações
mais relevantes para a sua pesquisa, evitando conclusões enganosas e
direcionando suas análises para padrões e tendências genuínos. A filtragem
também otimiza o desempenho computacional, tornando o processamento
e a análise de grandes conjuntos de dados mais eficientes.
9

Filtragem de dados Saída:

Título Ano Gênero


É o processo de aplicar critérios para extrair apenas um subconjunto dos 0 O Poderoso Chefão 1972 Drama
dados disponíveis, por exemplo filtrar uma tabela de filmes para mostrar
2 Forrest Gump 1994 Drama
apenas os registros de gêneros do tipo Drama. Veremos como realizar alguns
tipos de filtragem.

• Filtragem com Condições Múltiplas: no exemplo a seguir, vamos


• Filtragem básica: no exemplo a seguir, sobre filmes, vamos selecionar por coluna de dados do Gênero de Drama e pelos filmes
selecionar por coluna de dados do Gênero de Drama. produzidos depois de 1980.

import pandas as pd df_ ltered = df[(df['Ano'] > 1980) & (df['Gênero'] == 'Drama')]
print(df_ ltered)
# Criando um DataFrame de exemplo
data = {
'Título': ['O Poderoso Chefão', 'Star Wars', 'Forrest Gump', 'Matrix'], Saída:
'Ano': [1972, 1977, 1994, 1999], Ano Gênero
Título
'Gênero': ['Drama', 'Ficção Cientí ca', 'Drama', 'Ação']
} 2 Forrest Gump 1994 Drama
df = pd.DataFrame(data)

# Filtrando por uma coluna


df_drama = df[df['Gênero'] == 'Drama']
print(df_drama)
fi
fi
fi
10

• Filtragem com Funções: observe o exemplo filtrando dados usando Agora, veremos algumas possibilidades de seleção de dados.
uma função personalizada.
# Filtrando usando uma função • Seleção de Colunas: veja como selecionar colunas específicas de um
def is_classic(year): DataFrame.
return year < 2000
df_titles_years = df[['Título', 'Ano']]
df_classics = df[df['Ano'].apply(is_classic)] print(df_titles_years)
print(df_classics)

Saída:
Saída:
Título Ano
Título Ano Gênero 0 O Poderoso Chefão 1972
0 O Poderoso Chefão 1972 Drama 1 Star Wars 1977
1 Star Wars 1977 Ficção Científica 2 Forrest Gump 1994
2 Forrest Gump 1994 Drama 3 Matrix 1999
3 Matrix 1999 Ação

Seleção de dados
É o processo de escolher um subconjunto dos dados disponíveis. Por
exemplo, você pode selecionar apenas as colunas “Título” e “Ano” de uma
tabela com muitas colunas com informações de filmes.
11

• Seleção de Linhas por Índice: observe o exemplo com seleção de quando você precisa combinar dados com base em colunas específicas que
linhas específicas usando índices. compartilham valores comuns.

# Selecionando a primeira linha


rst_row = df.iloc[0] • Inner join: retorna apenas as linhas que possuem correspondência
print( rst_row) em ambas as tabelas, com base em uma condição particular, como
em colunas específicas. Veja um exemplo:
# Selecionando linhas especí cas
import pandas as pd
rows = df.iloc[[0, 2]]
print(rows)
# Criando DataFrames de exemplo
left = pd.DataFrame({'ID': [1, 2, 3], 'Título': ['Breaking Bad', 'Friends',
'Game of Thrones']})
Saída: right = pd.DataFrame({'ID': [2, 3, 4], 'Gênero': ['Comédia', 'Drama',
'Ação']})
Título O Poderoso Chefão
Ano 1972 # Realizando um Inner Join
Gênero Drama df_inner_join = pd.merge(left, right, on='ID', how='inner')
print(df_inner_join)
Name 0, dtype: object

Título Ano Gênero


Saída:
0 O Poderoso Chefão 1972 Drama
2 Forrest Gump 1994 Drama ID Título Gênero
0 2 Friends Comédia
2 3 Game of Thrones Drama
União de tabelas
Outra operação essencial para combinar dados de diferentes tabelas é a união
de tabelas. Para isto, temos o inner join e o outer join. Joins são utilizados
fi
fi
fi
12

• Outer join: retorna todas as linhas de uma ou ambas as tabelas, # Realizando um Right Outer Join
mesmo que não haja correspondência na outra tabela, preenchendo df_right_join = pd.merge(left, right, on='ID', how='right')
os valores ausentes com nulos. print(df_right_join)
O outer join possui três variações. Veremos cada uma delas.

Saída:
• Left outer join: retorna todas as linhas da tabela à esquerda e as
linhas correspondentes da tabela à direita. Se não houver
correspondência, os valores da tabela direita são preenchidos com ID Título Gênero
NaN.(Not a Number - Não é um número). Observe um exemplo: 0 2 Friends Comédia
1 3 Game of Thrones Drama
# Realizando um Left Outer Join
df_left_join = pd.merge(left, right, on='ID', how='left') 2 4 NaN Ação
print(df_left_join)

Saída:

ID Título Gênero
0 1 Breaking Bad NaN
1 2 Friends Comédia
2 3 Game of Thrones Drama

• Right outer join: retorna todas as linhas da tabela à direita e as


linhas correspondentes da tabela à esquerda. Se não houver
correspondência, os valores da tabela esquerda são preenchidos com
NaN. Veja o exemplo a seguir:
13

INNER JOIN

• Full outer join: retorna todas as linhas de ambas as tabelas. Linhas


sem correspondência em uma das tabelas são preenchidas com NaN. Tabela Tabela da
Veja um exemplo: esquerda
da direita

# Realizando um Full Outer Join


df_full_join = pd.merge(left, right, on='ID', how='outer')
print(df_full_join)
OUTER JOIN

Saída:

Título ID Gênero Tabela Tabela da Tabela Tabela da


Breaking Bad 1 NaN esquerda da direita esquerda
0 da direita

1 Friends 2 Comédia
2 Game of Thrones 3 Drama
3 NaN LEFT JOIN RIGHT JOIN
4 Ação

A escolha entre inner join e outer join depende do objetivo da análise:


Tabela Tabela da
da direita esquerda
• Usa-se inner join para dados que precisam de correspondência
exata.
• Usa-se outer join para incluir todas as informações, mesmo sem FULL JOIN
correspondência completa.
Figura 01 - Representação da união de tabelas com inner join e outer join.
Fonte: feito pelo autor.
14

1.3 Lidando com Dados Faltantes

Em um conjunto de dados, é comum encontrar registros com valores


vazios. Esses dados nulos podem ocorrer devido a erros de leitura,
omissões em formulários, adição de novas métricas, ou ausência de
certos atributos em subconjuntos dos dados. Para lidar com dados Saída:
faltantes, é crucial entender a origem e natureza dos dados, a sua
pressão arterial concentraçao de glicose insulina tipo sanguineo idade
organização e como os valores faltantes são representados.
0 72.0 148.0 NaN A 50
Representação de Dados Faltantes 1 66.0 85.0 NaN O 31
2 64.0 183.0 NaN A 32
Uma das formas que o Pandas representa dados faltantes é usando o
'NaN'. 3 66.0 89.0 94.0 A 21
4 40.0 116.0 168.0 O 33
Observe a seguir o conjunto de dados de pacientes com e sem diabetes,
5 74.0 137.0 NaN A 30
com as colunas de pressão arterial, concentração de glicose, insulina, tipo
sanguíneo e idade, onde alguns atributos estão com o valor NaN, ou seja, 6 50.0 78.0 88.0 NaN 26
é um dado faltante. 7 NaN 115.0 NaN A 29
8 70.0 197.0 543.0 A 53
import pandas as pd
9 96.0 125.0 NaN A 54
diabetes = pd.read_csv('diabetes.csv')
print(diabetes.head(10))
15

Técnicas para lidar com dados faltantes

A decisão sobre como lidar com dados faltantes deve considerar o domínio do
problema, os tipos de dados envolvidos e o impacto das medidas adotadas na
análise. Lembre-se de que dados de qualidade são essenciais para análises
estatísticas corretas.

• Descartar Linhas: quando a quantidade de valores vazios é pequena, é


possível descartar essas linhas sem grande impacto.

• Ignorar Atributos: se muitos registros têm valores faltantes para um


determinado atributo, considere ignorar esse atributo na análise.

• Preenchimento de Valores: uma técnica comum é preencher valores


vazios com médias estatísticas (para dados numéricos), ou com o valor
mais frequente (para dados categóricos).
16

Aula 2 - Análise Estatística


17

2.1 Explorando a Diferença Prática entre

Média, Mediana e Moda Vamos usar uma lista ctícia de números para calcular a média com Pandas.
import pandas as pd

data = {'valores': [2, 4, 6, 1, 3, 0, 4, 3, 5, 3, 5, 4]}


Com os dados organizados e limpos a análise estatística desempenha um df = pd.DataFrame(data)
papel importante em diversas etapas para extrair conclusões e apoiar
decisões. media = df['valores'].mean()
print("Média:", media)
Existem três medidas conhecidas como medidas de tendência central na
estatística, que são a média, mediana e moda. Cada uma delas nos ajuda a
resumir e entender um conjunto de dados de maneira diferente. Entenda o Saída: Média: 3.25
que é cada uma.
• Mediana: representa o valor central de um conjunto de dados, metade
• Média: a média, ou média aritmética, é calculada somando todos os para baixo, metade para cima deste valor. Para encontrar esse valor
valores de um conjunto de dados e dividindo pelo número de elementos colocamos os valores em ordem crescente ou decrescente e selecionamos
desse conjunto. o valor do meio. Quando o número de elementos é par, a mediana é a
média dos dois valores centrais.

Exemplo de Cálculo da Mediana com Pandas.

mediana = df['valores'].median()
print("Mediana:", mediana)

Saída: Mediana: 3.5


fi
18

• Moda: representa o valor mais frequente em um conjunto de dados. Um


conjunto de dados pode ser chamado de bimodal se apresentar duas
modas, ou seja, dois valores mais frequentes. Exemplo:

moda = df['valores'].mode()[0]
print("Moda:", moda)

Saída: Moda: 4

Comparando Média, Mediana e Moda

Olhando para esta distribuição de dados 'lst = [2, 4, 6, 1, 3, 0, 4, 3, 5, 3, 5, 4]',


temos:
• São 12 valores.
• Mínimo: 0
• Máximo: 6
• Média: 3.25
• Mediana: 3.5 Figura 02 - Distribuição dos 12 valores de nidos na lista de exemplo para
• Moda: 4 cálculo da média, mediana e moda. Fonte: Criado pelo autor.
Na gura 2 podemos observar a distribuição dos 12 valores ao longo do eixo
x. Estes valores podem representar diversos contextos, tais como: as medidas de
volume de um tanque de grãos ao longo dos últimos 12 dias ou as medidas de
uma avaliação de alunos.

Estas estatísticas descritivas nos fornece um resumo signi cativo dos


fenômenos por trás dos dados. Muitos fenômenos desa am uma descrição
perfeita com uma estatística única, por isso temos um conjunto de estatísticas
para descrever os nossos dados.
fi
fi
fi
fi
19

2.2 Compreendendo Variância e


Desvio Padrão
Agora que entendemos as medidas de tendência central, vamos conhecer as
medidas de dispersão.
Muitas vezes, a média, mediana e moda sozinhas não são su cientes para nos
dar uma boa visão dos nossos dados. Por isso, vamos conhecer a variância e o
desvio padrão, métricas essenciais para entender a variabilidade e a
distribuição dos dados.

Variância

A variância mede o quão os valores de um conjunto de dados se desviam da


média. Ela é calculada como a média das diferenças ao quadrado entre cada
valor e a média.

∑ (xi − x̄)2
V= , onde xi são os valores, x̄ é a média e n o número de
n
elementos

Podemos calcular a variância de forma bem simples utilizando a biblioteca


‘statistics’.
fi
20

import statistics import statistics

lst1 = [0, 1, 2, 3, 3, 3, 4, 4, 4, 5, 5, 6] lst2 = [0, -1, -2, 30, 3, 3, 4, 40, 4, -50, 5, 6]

print(f'Média: {statistics.mean(lst1)}'), Variância{statistics.variance(lst1)}') print(f'Média: {statistics.mean(lst2)}'), Variância{statistics.variance(lst2)}')

Saída: Média: 3.5, Variância: 451.7272


Saída: Média: 3.333, Variância: 2.69696

Agora na gura 04 olhamos para a distribuição da lista 02. Veja que, mesmo que a
Podemos observar na gura 03 a distribuição dos dados ao longo do eixo y e como
média dos dois conjuntos esteja bem próxima (3.33 e 3.50), como o segundo
os números estão próximos uns aos outros, o valor de variância apresentou um
conjunto apresenta valores bem distintos entre si (30, 40 e –50 acentuam a
valor baixo e próximo da média. Veja o que acontece quando modi camos alguns
variância), a variância dele foi muito maior que a do primeiro (2.960 e 451.727).
dos valores.

Figura 04 - Distribuição dos 12 valores de nidos na lista 02. F


Figura 03 - Distribuição dos 12 valores de nidos na lista 01. Fonte: Criado pelo
onte: Criado pelo autor.
autor.
fi
fi
fi
fi
fi
21

Desvio Padrão

O desvio padrão é calculado como a raiz quadrada da variância. Ele mede a


dispersão dos dados em relação à média e é expresso na mesma unidade dos
dados originais.

DP = V , onde V é a variância
Um desvio padrão maior indica que os valores estão mais espalhados em
relação à média, já um desvio padrão menor sugere que os valores estão mais
próximos da média.

Observe um exemplo de cálculo de desvio padrão:

import statistics Figura 05 – Exemplo de grá co mostrando desvio padrão. 2021. Disponível em:
<www.youtdictionary.com/articles/standard-deviation-examples>. Acesso em
lst1 = [0, 1, 2, 3, 3, 3, 4, 4, 4, 5, 5, 6] Junho de 2024. Adaptado pelo autor.

desvio_padrao = statistics.stdev(lst1) • 1 desvio padrão: cerca de 68% (34.1% acima e abaixo da média) dos dados
print(f"Desvio Padrão: {desvio_padrao}") estão dentro dessa faixa, identi cando valores típicos ou normais.
• 2 desvios padrão: aproximadamente 95% (34.1%+13.6% acima e abaixo)
Saída: Desvio Padrão: 1.7233687939614087 dos dados estão dentro dessa faixa, identi cando valores moderadamente
incomuns.
Uma medida que podemos utilizar para identi car a variação de dados é a • Mais de dois desvios padrão: normalmente, 5% dos dados estão dentro
distância em termos de desvio padrão dentro de uma distribuição normal ou dessa faixa, considerados valores incomuns ou até anomalias.
Gaussiana. A distribuição normal é crucial para entender a variância e o desvio padrão
porque ela nos mostra como os dados estão espalhados em torno da média.
fi
fi
fi
fi
22

Distribuição Normal ou Gaussiana curva, enquanto o desvio padrão controla a largura da curva (maior desvio
padrão, curva mais larga).
A curva clássica de distribuição normal, ou gaussiana, representa uma
distribuição com média zero e desvio padrão um. A forma de sino é a marca print(sorted(lst2))
registrada da distribuição normal. A curva é perfeitamente simétrica em torno m = statistics.mean(lst2)
da média, indicando que a probabilidade de valores acima da média é igual à print(f'Média: {m}')
probabilidade de valores abaixo da média. Além disso, a área sob a curva é dp = statistics.stdev(lst2)
sempre 1, o que equivale a 100% da distribuição de dados. print(f'Desvio Padrão: {dp}')

# com a média e o des


print(f'Faixa 1 desvios padrão: {m - dp}, {m + dp}')
print(f'Faixa 2 desvios padrão: {m - 2*dp}, {m + 2*dp}')

Saída:
[-50, -2, -1, 0, 3, 3, 4, 4, 5, 6, 30, 40]
Média: 3.5
Desvio Padrão: 21.253876651737507
Faixa 1 desvio padrão: -17.753876651737507, 24.753876651737507
Faixa 2 desvios padrão: -39.00775330347501, 46.00775330347501

Para o nosso conjunto, o desvio padrão foi de 21.25:


• A faixa dentro de 1 desvio padrão abrange 9 dos 12 elementos [-2, -1, 0, 3,
Figura 6 - Curva de distribuição de probabilidades gaussiana. Fonte: Criado 3, 4, 4, 5, 6,]., exemplos próximos da média.
pelo autor. • A faixa dentro de 2 desvios padrão abrange 11 dos 12 elementos [-2, -1, 0,
3, 3, 4, 4, 5, 6, 30, 40]
A distribuição gaussiana é uma das distribuições mais importantes em • A faixa acima de 2 desvios padrão contém apenas 1 dos 12 elementos
estatística e probabilidade, sendo usada para modelar diversos fenômenos [-50].
naturais e sociais. A forma especí ca da curva depende dos valores de média e
do desvio padrão da sua distribuição. A média determina a posição central da A curva de distribuição de probabilidades de cada lista é apresentada nas
guras 07 e 08.
fi
fi
23

Figura 08: Curva de distribuição de probabilidades da lista 02.


Figura 07 - Curva de distribuição de probabilidades da lista 01. Fonte: Criado
pelo autor. A curva da Figura 08 apresenta picos menores (menor probabilidade) em
torno dos valores 3 e 4, indicando que a probabilidade desses valores é menor
O pico da curva na Figura 07 ocorre em torno dos valores 3 e 4, indicando que em comparação com a Figura 07. A curva é assimétrica, com uma causa mais
esses valores têm maior probabilidade de ocorrência no conjunto de dados. A longa à esquerda devido ao valor extremo negativo (-50). Isso indica que a
curva é aproximadamente simétrica em relação ao valor 3,5, sugerindo que os probabilidade de ocorrência de um valor negativo extremo é menor do que a
valores estão distribuídos de forma equilibrada em torno do ponto central. de valores positivos extremos.

A curva da Figura 07 representa uma distribuição mais simétrica e uniforme,


enquanto a segunda curva re ete uma distribuição assimétrica com menor
probabilidade de valores extremos negativos.

Lembre-se de que a escolha entre variância e desvio padrão depende do


contexto e das necessidades especí cas da análise e que ambas as medidas
estão suscetíveis a valores extremos no conjunto de dados.
fl
fi
24

2.3 Análise Descritiva


com Pandas
Saída
O Pandas possui alguns métodos que permitem realizar uma análise inicial do
conjunto de dados, a m de conhecer seu formato e algumas características <class 'pandas.core.frame.DataFrame'>
gerais, que podem nos ajudar a ter uma ideia inicial da nossa abordagem
RangeIndex: 768 entries, 0 to 767
exploratória. Esses métodos exibem informações sobre a estrutura dos
conjuntos de dados, medidas estatísticas e de contagem. Data columns (total 7 columns):
# Column Non-Null Count Dtype
• Método info(): fornece uma visão geral do DataFrame, incluindo — ——-— ————————- ———
informações sobre o índice, os nomes das colunas, os tipos de dados e a
0 pressao arterial 733 non-null oat64
quantidade de valores não nulos. Também exibe o espaço ocupado na
memória. 1 concentraçao de glicose 763 non-null oat64
2 insulina 394 non-null oat64
import pandas as pd 3 tipo sanguineo 723 non-null object
4 idade 768 non-null int64
diabetes = pd.read_csv('diabetes.csv')
diabetes.info() 5 Imc 757 non-null oat64
6 diabetico 768 non-null object
dtypes: oat64(4), int64(1), object(2)
memory usage: 42.1+ KB
fl
fl
fl
fl
fl
fi
25

• Método 'describe()’: para visualizar algumas métricas estatísticas das Com o describe analisamos várias informações, por exemplo, olhando a
colunas numéricas, existe o método ´describe´, que calcula a média, desvio coluna de ´imc´ podemos ver que ela possui 757 valores não nulos, com valor
padrão, valores mínimos e máximos, além das faixas de valores que mínimo de IMC de 18.2 e máximo e 67.1. A média da distribuição foi de 32.45,
representam a mediana (50%) e divisores de quartis 25% e 75% cada. com um desvio padrão de 6.92.
• 25% dos valores estão abaixo de 27.5.
import pandas as pd • A mediana (50%) é 32.3.
• 75% dos valores são menores que 36.6.
diabetes = pd.read_csv('diabetes.csv')
print(diabetes.describe())

Saída
pressão arterial concentraçao de Insulina idade Imc
glicose
count 733.000000 763.000000 394.000000 768.000000 757.000000
mean 72.405184 121686763 155.548223 33.240885 32.457464
std 12.382158 30.535641 118.775855 11.760232 6.924988
min 24.000000 44.000000 14.000000 21.000000 18.200000
25% 64.000000 99.000000 76.250000 24.000000 27.500000
50% 72.000000 117.000000 125.000000 29.000000 32.300000
75% 80.000000 141.000000 190.000000 41.000000 36.600000
max 122.000000 199.000000 846.000000 81.000000 67.100000
26

2.4 Exercício Guiado de Análise


de Dados com Pandas
Que tal agora praticarmos os conteúdos que vimos neste módulo?

Cálculo das médias de tendência central e dispersão com Pandas:


• Nível de di culdade: fácil
• Requisitos Técnicos: média, Mediana, Moda, Variância e Desvio Padrão,
Manipulação de Colunas, Filtragem, Leitura de Arquivos.
• Descrição Geral: realizar uma análise das medidas estatísticas no conjunto
de dados de cidades brasileiras com mais de 100 mil habitantes. Deve
primeiro remover as cidades com números extremos do conjunto usando a
medida de Desvio Padrão, depois calcular a Média e Mediana de população
nestas cidades, e a Moda de Uniões Federativas presentes.
• Objetivos: descobrir medidas estatísticas do conjunto de dados:
1 - Desvio Padrão populacional das cidades brasileiras com mais de 100
mil habitantes.
2 - Média populacional de um conjunto reduzido de cidades.
3 - Mediana populacional de um conjunto reduzido de cidades.
4 – Moda de Uniões Federativas de um conjunto reduzido de cidades.
fi
27

Explore mais!

1. Assista ao vídeo de overview do livro "Python For Data Analisys" de Wes


McKinney, abordando várias funções uteis para a análise de dados utilizando o
Pandas. Clique aqui.

2.Leia o artigo Mean, Median, and Mode: How Visualizations Help Find
What’s “Typical”, que demonstra uma representação visual de como os dados
podem ser representados e como eles auxiliam a entender as medidas
estatísticas de tendencia central. Clique aqui.

3. Visite a página de documentação o cial do Pandas, ela ajudará a


aprofundar seu conhecimento nessa biblioteca. Clique aqui.
fi
28

Referências bibliográficas
DataFrame — Pandas 2.2.2 documentation (2024). Disponível em: <https://
pandas.pydata.org/docs/reference/frame.html >. Acesso em: 22 abr. 2024.

General functions — Pandas 2.2.2 documentation (2024). Disponível em:


<https://pandas.pydata.org/docs/reference/general_functions.html >. Acesso
em: 17 abr. 2024.

Input/output — Pandas 2.2.2 documentation (2024). Disponível em: <https://


pandas.pydata.org/docs/reference/io.html >. Acesso em: 19 abr. 2024.

Series — Pandas 2.2.2 documentation (2024). Disponível em: <https://


pandas.pydata.org/docs/reference/series.html >. Acesso em: 18 abr. 2024.

statistics — Mathematical statistics functions (2024). Disponível em:<https://


pandas.pydata.org/docs/reference/general_functions.html >. Acesso em: 17
abr. 2024.

Você também pode gostar