Escolar Documentos
Profissional Documentos
Cultura Documentos
EUGENIA BAHIT
CIÊNCIA DE DADOS
COM PYTHON
MATERIAL DE ESTUDO
Informações e inscrições:Curso:
http://escuela.eugeniabahit.com | Certificações: http://python.laeci.org
Introdução à Ciência de Dados com Python - Escuela de Informática Eugenia Bahit
RESUMO
MÉTODOS DE MANIPULAÇÃO DE VARIÁVEIS..............................................................................................5
MANIPULANDO CADEIAS DE CARACTERES DE TEXTO.............................................................................5
MÉTODOS DE FORMATAÇÃO........................................................................................................................5
CONVERTER A PRIMEIRA LETRA EM MAIÚSCULAS............................................................................5
CONVERTER UMA CADEIA DE CARACTERES EM MINÚSCULAS......................................................5
CONVERTER UMA CADEIA DE CARACTERES EM MAIÚSCULAS......................................................6
CONVERTER MAIÚSCULAS E MINÚSCULAS E VICE-VERSA..............................................................6
CONVERTER UMA CADEIA DE CARACTERES EM FORMATO DE TÍTULO......................................6
CENTRAR UM TEXTO...................................................................................................................................6
ALINHAR O TEXTO À ESQUERDA.............................................................................................................6
ALINHAR O TEXTO À DIREITA...................................................................................................................7
PREENCHER UM TEXTO COM ZEROS PENDENTES...............................................................................7
MÉTODOS DE BUSCA.......................................................................................................................................7
CONTAR O NÚMERO DE OCORRÊNCIAS DE UMA SUBSTRING.........................................................7
LOCALIZAR UMA SUBSTRING DENTRO DE UMA STRING..................................................................7
MÉTODOS DE VALIDAÇÃO.............................................................................................................................8
SABER SE UMA CADEIA DE CARACTERES COMEÇA COM UMA SUBCADEIA DE
CARACTERES ESPECÍFICA..........................................................................................................................8
SABER SE UMA CADEIA DE CARACTERES TERMINA COM UMA SUBCADEIA DE
CARACTERES ESPECÍFICA..........................................................................................................................8
SABER SE UMA STRING É ALFANUMÉRICA...........................................................................................8
SABER SE UMA CADEIA DE CARACTERES É ALFABÉTICA................................................................8
SABER SE UMA CADEIA DE CARACTERES É NUMÉRICA...................................................................9
SABER SE UMA CADEIA DE CARACTERES CONTÉM APENAS LETRAS MINÚSCULAS................9
SABER SE UMA CADEIA DE CARACTERES CONTÉM APENAS LETRAS MAIÚSCULAS................9
SABER SE UMA CADEIA DE CARACTERES CONTÉM APENAS ESPAÇO EM BRANCO................10
SABER SE UMA CADEIA DE CARACTERES ESTÁ FORMATADA COMO UM TÍTULO..................10
MÉTODOS DE SUBSTITUIÇÃO......................................................................................................................10
FORMATAR UMA CADEIA DE CARACTERES, SUBSTITUINDO O TEXTO DINAMICAMENTE...10
SUBSTITUIR TEXTO EM UMA CADEIA DE CARACTERES.................................................................11
EXCLUIR CARACTERES À ESQUERDA E À DIREITA DE UMA CADEIA DE CARACTERES........11
EXCLUIR CARACTERES À ESQUERDA DE UMA CADEIA DE CARACTERES.................................11
EXCLUIR CARACTERES À DIREITA DE UMA CADEIA DE CARACTERES......................................11
MÉTODOS DE UNIÃO E DIVISÃO.................................................................................................................11
-2-
-3-
-4-
podem ser executados. Métodos são funções, mas seguem de uma variável. Portanto, essas funções são acessadas
através da sintaxe:
variável.função()
Em alguns casos, esses métodos (funções de um objeto) aceitarão parâmetros como qualquer outra função.
variável.função(parâmetro)
MÉTODOS DE FORMATAÇÃO
-5-
Olá, mundo
CENTRAR UM TEXTO
Método: center(length[, "caractere de preenchimento"])
Retorna: uma cópia da cadeia de caracteres centralizada
> >> string = "Bem-vindo ao meu aplicativo".maiúscula()
> >> cadeia.centro(50, "=")
===========Bem-vindo à minha candidatura============
-6-
MÉTODOS DE BUSCA
-7-
MÉTODOS DE VALIDAÇÃO
-8-
-9-
MÉTODOS DE SUBSTITUIÇÃO
> >> string = "Valor bruto: ${0} + IVA: ${1} = Valor líquido: {2}"
> >> cadeia.formato(100, 21, 121)
Valor bruto: $100 + IVA: $21 = Valor líquido: 121
> >> string = "Valor bruto: ${bruto} + IVA: ${VAT} = Valor líquido: {líquido}"
> >> cadeia.formato(bruto=100, VAT=21, líquido=121)
Valor bruto: $100 + IVA: $21 = Valor líquido: 121
- 10 -
- 11 -
- 12 -
MÉTODOS AGREGADOS
MÉTODOS DE ELIMINAÇÃO
>>> nombres_masculinos
['Ricky', 'Álvaro', 'David', 'Jacinto', 'José', 'Ricky', 'José', 'José']
MÉTODOS DE ENCOMENDA
MÉTODOS DE BUSCA
- 15 -
>>> nombres_masculinos. conde("Miguel ") 2 >>> nombres_masculinos = ("Álvaro", "Miguel", "Edgardo", "David",
"Miguel")
>>> nombres_masculinos. Conde("Michael")
2
CONVERSÃO DE TIPO
No conjunto de funções internas do Python, é possível encontrar duas funções que permitem converter listas em
tuplas e vice-versa. Essas funções são lista e tupla, para converter tuplas em listas e listas em tuplas,
respectivamente.
Um dos usos mais frequentes é a conversão de tuplas em listas, que precisam ser modificadas. Isso geralmente
>>> list(tupla)
[1, 2, 3, 4]
- 16 -
CONCATENAÇÃO DE COLEÇÕES
Você pode concatenar (ou juntar) duas ou mais listas ou duas ou mais tuplas, usando o sinal de adição +.
Não é possível anexar uma lista a uma tupla. As coleções a serem unidas devem ser do mesmo tipo.
- 17 -
- 18 -
DICIONÁRIOS CONCATENADOS 23
DEFINIR UMA CHAVE E UM VALOR PADRÃO 23
MÉTODOS DE DEVOLUÇÃO 24
OBTER O VALOR DE UMA CHAVE 24
SABER SE EXISTE UMA CHAVE NO DICIONÁRIO 24
OBTER AS CHAVES E VALORES DE UM DICIONÁRIO 24
OBTER AS CHAVES DE UM DICIONÁRIO 24
OBTER VALORES DE UM DICIONÁRIO 25
OBTER O NÚMERO DE ITENS EM UM DICIONÁRIO 25
MANIPULAÇÃO E MANIPULAÇÃO DE ARQUIVOS 27
MANEIRAS DE ABRIR UM ARQUIVO 27
ALGUNS MÉTODOS DO OBJETO FILE 29
MANIPULAÇÃO DE ARQUIVOS CSV 30
ALGUNS EXEMPLOS DE ARQUIVOS CSV 30
TRABALHANDO COM ARQUIVOS CSV DO PYTHON 32
LENDO ARQUIVOS CSV 32
GRAVANDO ARQUIVOS CSV 37
PROBABILIDADE E ESTATÍSTICA COM PYTHON 40
PROBABILIDADE DE EVENTOS SIMPLES E COMPOSTOS MUTUAMENTE EXCLUSIVOS EM
PYTHON 40
ESPAÇO DE AMOSTRA 40
EVENTOS SIMPLES E COMPOSTOS 40
ATRIBUIÇÃO DE PROBABILIDADE 41
EVENTOS SIMPLES MUTUAMENTE EXCLUSIVOS 41
EVENTOS COMPOSTOS POR EVENTOS SIMPLES E MUTUAMENTE EXCLUSIVOS 42
FUNÇÕES 43
PROBABILIDADE CONDICIONAL EM PYTHON 43
FUNÇÕES 44
EVENTOS DEPENDENTES 44
TEORIA DOS CONJUNTOS EM PYTHON 46
EVENTOS INDEPENDENTES 46
TEOREMA DE BAYES EM PYTHON 47
TEOREMA DE BAYES E PROBABILIDADE DE CAUSAS 47
FATOS: ESTUDO DE CASO 47
ANÁLISE 48
PROCEDIMENTO 49
FUNÇÕES 54
- 19 -
BIBLIOGRAFIA ADICIONAL 54
ANEXO I: CÁLCULOS COMPLEXOS 60
ESTATÍSTICAS POPULACIONAIS E AMOSTRAIS: CÁLCULO DE 60
VARIÂNCIA E DESLOCAMENTO PADRÃO 60
PRODUTO ESCALAR DE DOIS VETORES 61
CÁLCULOS DE FREQUÊNCIA RELATIVA, ABSOLUTA E CUMULATIVA 61
ANEXO II: CRIAÇÃO DE UM MENU DE OPÇÕES 63
>
> >> tupla4 = tupla1 + tupla2 + tupla3
> >> tupla4
(1, 2, 3, 4, 5, 4, 6, 8, 10, 3, 5, 7, 9)
CONTAGEM DE ITENS
A função len() é usada para contar elementos de uma lista ou tupla, como caracteres de uma cadeia de caracteres
de texto:
- 20 -
ESVAZIAR UM DICIONÁRIO
Método: clear()
>>> dicionário = {"color": "violet", "size": "XS", "price": 174.25}
> >> dicionário
{'cor': 'violeta', 'preço': 174,25, 'tamanho': 'XS'}
COPIAR UM DICIONÁRIO
Método: copy()
> >> dicionário = {"color": "violeta",
> >> camisa = dictionary.copy()
> >> dicionário
{'cor': 'violeta', 'preço': 174,25,
>>> remera.clear()
>>> camisa {} muscle >>> {}
174.25, 'tamanho': 'XS'}
DICIONÁRIOS CONCATENADOS
Método: update(dictionary)
>>> dicionário1 = {"cor": "verde", "preço": 45}
>>> dicionário2 = {"size": "M", "brand": "Lacoste"}
>>> dictionary1.update(dictionary2)
>>> dicionário1
{'cor': 'verde', 'preço': 45, 'marca': 'Lacoste', 'tamanho': 'M'}
Se a chave não existir, ela será criada com o valor padrão. Sempre retorna o valor da chave passada como
um parâmetro.
- 23 -
>>> T-shirt2
{'cor': 'rosa', 'estampa': Nenhuma, 'marca': 'Zara', 'tamanho': 'U'}
MÉTODOS DE DEVOLUÇÃO
>>> camisa.get("estoque")
>>> camisa.get("estoque", "fora de estoque")
'Esgotado'
- 24 -
- 25 -
diretórios.
Um deles é através do módulo OS, que facilita o trabalho com todo o sistema de arquivos e
O segundo nível é aquele que permite trabalhar com arquivos manipulando sua leitura e gravação a partir do
arquivo está sendo aberto?". As respostas podem ser várias: ler, escrever ou ler e escrever.
Cada vez que você "abre" um arquivo, você está criando um ponteiro na memória.
Esse ponteiro posicionará um cursor (ou ponto de acesso) em um lugar específico na memória (simplificando,
Esse cursor se moverá dentro do arquivo, à medida que for lido ou gravado no arquivo.
Quando um arquivo é aberto no modo de leitura, o cursor é posicionado no byte 0 do arquivo (ou seja, no início
do arquivo). Depois que o arquivo é lido, o cursor se move para o byte final do arquivo (equivalente ao número
total de bytes no arquivo). O mesmo acontece quando ele é aberto no modo de gravação. O cursor se moverá à
Quando você deseja gravar no final de um arquivo não nulo, use o modo de acréscimo . Isso abre o arquivo com
o cursor no final do arquivo.
O símbolo + como um sufixo de um modo, adiciona o modo oposto ao modo de abertura uma vez que a ação de
abertura é executada. Por exemplo, o modo r (leitura) com o sufixo + (r+), abre o arquivo para leitura e, após a
Escrita e leitura.
c+ Substitui o arquivo, se ele existir. No início do arquivo
Cria o arquivo se ele não existir.
Escrita e leitura em modo binário. Substitui o
WB+ arquivo, se ele existir. Cria o arquivo se ele No início do arquivo
não existir.
Se o arquivo existir, no final
Adicionado (adicionar conteúdo). dele.
Para Cria o arquivo se ele não existir. Se o arquivo não existir, no
início.
Se o arquivo existir, no final
Adicionado no modo binário (adicionar dele.
Ab conteúdo). Se o arquivo não existir, no
Cria o arquivo se ele não existir. início.
- 28 -
este.
Cria o arquivo se ele não existir. Se o arquivo não existir, no
início.
Se o arquivo existir, no final
Adicionado (adicionar conteúdo) e lido no dele.
AB+ modo binário. Se o arquivo não existir, no
Cria o arquivo se ele não existir. início.
Método Descrição
Lê todo o conteúdo de um arquivo.
leitura([bytes]) Se o comprimento do byte for excedido, ele lerá somente o
conteúdo até o comprimento especificado.
linhas de leitura() Lê todas as linhas em um arquivo
Leia um arquivo:
Gravar em um arquivo:
conteúdo = """
Este será o conteúdo do novo arquivo.
O arquivo terá várias linhas.
- 29 -
"""
arquivos de texto simples, destinados ao armazenamento de dados em massa. É um dos formatos mais simples
para realizar análise de dados. Na verdade, muitos formatos de arquivo não livres (ou gratuitos, mas mais
complexos) são frequentemente convertidos para o formato CSV para aplicar ciência de dados complexa com
várias linguagens.
Um arquivo CSV consiste em um cabeçalho que define nomes de coluna, e as linhas a seguir têm os dados
correspondentes a cada coluna, separados por uma vírgula. No entanto, muitos outros símbolos podem ser
usados como separadores de células. Entre eles, tabulação e ponto-e-vírgula são tão frequentes quanto vírgulas.
- 30 -
Maria,858,1930
José,665,1930
Rosa,591,1930
João Carlos,522,1930
Antônio,509,1930
Maria Ester,495,1930
Maria Luísa,470,1930
Joana,453,1930
João,436,1930
Empresas registradas na Inspetoria Geral de Justiça da Argentina (separadas por , e dados citados)
"numero_correlativo","tipo_societario","descripcion_tipo_societario","razon_soci
para","dada_de_baja","codigo_baja","detalle_baja"
"10","10","SOCIEDAD COLECTIVA","A A VALLE Y COMPA¥IA","S","42014","PERTENCE A ENTIDADES INATIVAS DE
REGISTO"
"11","10","PARCERIA","A LUCERO Y H CARATOLI","S","42014","PERTENCE A
CADASTRAR ENTIDADES INATIVAS"
"12","10","SOCIEDAD COLECTIVA","A PUIG E HIJOS","S","42014","PERTENCE A
CADASTRAR ENTIDADES INATIVAS"
"13","10","PARCERIA","A C I C A","S","42014","PERTENCE AO REGISTRO
ENTIDADES INATIVAS"
"14","10","PARCERIA","A¥ON BEATRIZ S Y CIA","S","42014","PERTENCE A
CADASTRAR ENTIDADES INATIVAS"
"15","10","PARCERIA","ABA DIESEL","S","42014","PERTENCE AO REGISTRO
ENTIDADES INATIVAS"
"16","10","SOCIEDAD COLECTIVA","ABADA L JOSE Y JORGE JOSE
ABADAL","S","42014","PERTENCE A ENTIDADES INATIVAS DE REGISTRO"
"17","10","SOCIEDAD COLECTIVA","ABADAL JOSE E HIJO","S","42014","PERTENCE AO REGISTO ENTIDADES
INACTIVAS"
"18","10","SOCIEDAD COLECTIVA","ABATE Y MACIAS","S","42014","PERTENCE A
CADASTRAR ENTIDADES INATIVAS"
Também é possível encontrar dados armazenados em arquivos de texto (TXT) com formatos muito semelhantes
ao que se espera encontrar em um CSV. Às vezes é possível desenvolver um script de formato para corrigir esses
- 31 -
Este módulo é usado em combinação com a estrutura com e a função aberta, para ler ou gerar o arquivo, e o
Conteúdo do arquivo.csv
0;2016-03-01 00:00:00;;;9.9;73;;;
1;2016-03-01 00:30:00;;;9.0;67;;;
2;2016-03-01 01:00:00;;;8.3;64;;;
3;2016-03-01 01:30:00;;;8.0;61;;;
4;2016-03-01 02:00:00;;;7.4;62;;;
5;2016-03-01 02:30:00;;;8.3;47;;;
6;2016-03-01 03:00:00;;;7.7;50;;;
7;2016-03-01 03:30:00;;;9.0;39;;;
8;2016-03-01 04:00:00;;;8.7;39;;;
com open("file.csv", "r") como arquivo: document = reader(file, delimiter=';', para linha no documento:
' '.join(linha) quotechar='"')
Sair:
- 32 -
Conteúdo do arquivo.csv
com open("file.csv", "r") como arquivo: document = reader(file, delimiter=';', headers = next(document)
Para Fila in Documento: quotechar='"')
' '.join(linha)
Sair:
- 33 -
CARACTERES ESPECÍFICA 8
SABER SE UMA STRING É ALFANUMÉRICA 8
SABER SE UMA CADEIA DE CARACTERES É ALFABÉTICA 8
SABER SE UMA CADEIA DE CARACTERES É NUMÉRICA 9
SABER SE UMA CADEIA DE CARACTERES CONTÉM APENAS LETRAS
MINÚSCULAS 9
SABER SE UMA CADEIA DE CARACTERES CONTÉM APENAS LETRAS
MAIÚSCULAS 9
SABER SE UMA CADEIA DE CARACTERES CONTÉM APENAS ESPAÇO EM
BRANCO 10
SABER SE UMA CADEIA DE CARACTERES ESTÁ FORMATADA COMO UM TÍTULO
10
MÉTODOS DE SUBSTITUIÇÃO 10
FORMATAR UMA CADEIA DE CARACTERES, SUBSTITUINDO O TEXTO
DINAMICAMENTE 10
SUBSTITUIR TEXTO EM UMA CADEIA DE CARACTERES 11
EXCLUIR CARACTERES À ESQUERDA E À DIREITA DE UMA CADEIA DE
CARACTERES 11
EXCLUIR CARACTERES À ESQUERDA DE UMA CADEIA DE CARACTERES 11
EXCLUIR CARACTERES À DIREITA DE UMA CADEIA DE CARACTERES 11
MÉTODOS DE UNIÃO E DIVISÃO 11
JUNTE-SE A UMA CADEIA ITERATIVAMENTE 11
DIVIDIR UMA CORRENTE EM TRÊS PARTES, USANDO UM SEPARADOR 12
DIVIDIR UMA CORRENTE EM VÁRIAS PARTES, USANDO UM SEPARADOR 12
DIVIDIR UMA CADEIA DE CARACTERES EM LINHAS 12
MANIPULAÇÃO DE LISTAS E TUPLAS 14
MÉTODOS AGREGADOS 14
ADICIONAR UM ITEM AO FINAL DA LISTA 14
ADICIONAR VÁRIOS ITENS AO FINAL DA LISTA 14
ADICIONAR UM ITEM EM UMA POSIÇÃO ESPECÍFICA 14
MÉTODOS DE ELIMINAÇÃO 14
EXCLUIR O ÚLTIMO ITEM DA LISTA 14
EXCLUIR UM ITEM POR SEU ÍNDICE 15
EXCLUIR UM ITEM POR SEU VALOR 15
MÉTODOS DE ENCOMENDA 15
CLASSIFICAR UMA LISTA EM ORDEM INVERSA (ORDEM INVERSA) 15
ORDENAR UMA LISTA EM ORDEM CRESCENTE 15
- 34 -
- 35 -
EXCLUSIVOS EM PYTHON 40
ESPAÇO DE AMOSTRA 40
EVENTOS SIMPLES E COMPOSTOS 40
ATRIBUIÇÃO DE PROBABILIDADE 41
EVENTOS SIMPLES MUTUAMENTE EXCLUSIVOS 41
EVENTOS COMPOSTOS POR EVENTOS SIMPLES E MUTUAMENTE EXCLUSIVOS
42
FUNÇÕES 43
PROBABILIDADE CONDICIONAL EM PYTHON 43
FUNÇÕES 44
EVENTOS DEPENDENTES 44
TEORIA DOS CONJUNTOS EM PYTHON 46
EVENTOS INDEPENDENTES 46
TEOREMA DE BAYES EM PYTHON 47
TEOREMA DE BAYES E PROBABILIDADE DE CAUSAS 47
FATOS: ESTUDO DE CASO 47
ANÁLISE 48
PROCEDIMENTO 49
FUNÇÕES 54
BIBLIOGRAFIA ADICIONAL 54
ANEXO I: CÁLCULOS COMPLEXOS 60
ESTATÍSTICAS POPULACIONAIS E AMOSTRAIS: CÁLCULO DE 60
VARIÂNCIA E DESLOCAMENTO PADRÃO 60
PRODUTO ESCALAR DE DOIS VETORES 61
CÁLCULOS DE FREQUÊNCIA RELATIVA, ABSOLUTA E CUMULATIVA 61
ANEXO II: CRIAÇÃO DE UM MENU DE OPÇÕES 63
Outra maneira de ler arquivos CSV com cabeçalhos é usar o objeto DictReader em vez de leitor e,
com open("file.csv", "r") como arquivo: document = DictReader(file, delimiter=';', para linha no documento:
row['DADOS'] quotechar='"')
- 36 -
Sair:
'2016-03-01 00:00:00'
'2016-03-01 00:30:00'
'2016-03-01 01:00:00'
'2016-03-01 01:30:00'
'2016-03-01 02:00:00'
'2016-03-01 02:30:00'
'2016-03-01 03:00:00'
'2016-03-01 03:30:00'
'2016-03-01 04:00:00'
No exemplo acima, uma matriz pode ser uma lista de listas com um número igual de itens. Por
exemplo: matriz = [
- 37 -
Nesse caso, a matriz a ser escrita precisará ser uma lista de dicionários cujas chaves correspondam
matriz = [
dict(player='John', points=373, anium=1970), dict(player='Ana', points=124, anium=1983),
dict(player='Peter', points=901, anium=1650), dict(player='Rose', points=300, anium=2000),
dict(player='Joan', points=75, year=1975), ] de csv import DictWriter
Em listas e tuplas obtidas ou não de um CSV, funções estatísticas simples podem ser executadas,
tais como:
- 38 -
lançamento de um dado:
E=(1,2,3,4,5,6)
espacio_muestral = [1, 2, 3, 4, 5, 6]
n = len(espacio_muestral)
ATRIBUIÇÃO DE PROBABILIDADE
A atribuição de probabilidade é aquela que fornece modelos matemáticos para calcular as chances
• simples ou composto
• mutuamente excludentes ou independentes
P(A,) = -
n
probabilidade = 1,0 / n
Em Python, pelo menos um elemento da equação é necessário para ser um número real se o
que é necessário como resultado é um número real.
A probabilidade de cada ponto amostral, como eventos mutuamente exclusivos, é a mesma para
cada evento.
- 41 -
probabilidade do evento composto é dada pela soma das probabilidades de cada evento simples
P(A) = P(A1)—P(A2)—.-P(Ak)
Por exemplo, para estimar a probabilidade de que, em um único rolo de dados, um número par saia,
amostralE=11,2,3,4,5,6}
tal que:
3
No primeiro resultado 6 (na segunda etapa, antes de encontrar o máximo comum)
1
divisor [MCD] e reduzir a fração para 2 ), o denominador é equivalente ao número de eventos
total de todos os eventos no espaço amostral. Assim, a probabilidade de um evento composto A por
- 42 -
Um evento composto pode ser denotado pela união de seus eventos simples (símbolo u , lido como
P(2U4U 6) = P(2)+P(4)+P(6)
P(2U4U6) = 1++1+1 =8
P(2 U 4 U 6) = |
FUNÇÕES
# Probabilidade de eventos compostos simples mutuamente exclusivos pssme = lambda e: 1.0 / len (e) #
Probabilidade de eventos compostos mutuamente exclusivos def pscme(e, sc):
n = len(e)
retorno len(sc) / float(n)
d. Probabilidade de interseção:
P(ARB) = P(A)P(B)
P(A n B) = 1 I
P(A n B) = I
# probabilidade de A
a = [i para i em e se i % 2 não for 0] pa = len(a) / float(n)
- 43 -
# probabilidade de B
b = [i para i em e se i % 2 for 0]
pb = len(b) / float(n)
FUNÇÕES
# Probabilidade condicional: eventos dependentes def pscd(e, a, b):
i = lista(set(a).intersection(b))
pi = pscme(e, i)
PA = pscme(e, a)
Retorno Pi / Pa
EVENTOS DEPENDENTES
Refere-se à probabilidade de que dois eventos ocorram simultaneamente, enquanto o segundo
A probabilidade de B ocorrer se A ocorrer, é denotada por P(BA) e lida como "a probabilidade de
P(BI^ _
1
■ P(A)
Onde PA n B)
é a probabilidade da intersecção dos eventos AeB
evento composto de eventos simples. No exemplo abaixo, seria igual a 11,3} (porque 1 e 3 estão em
A e B ).
Exemplo: Qual a probabilidade de rolar um dado resultar em um número ímpar menor que 4?
- 44 -
espacio_muestral = [1, 2, 3, 4, 5, 6]
a = [i para i em espacio_muestral se i % 2 não for 0]
b = [i para i em espacio_muestral se eu < 4]
Um ={1,3}
intersec = [i para i em A se i em B]
112 1
P(AnB)=P(1)+P(3)=+=é=, b0O3
poand_1-2_1
n6 3
p_I_2_1
Por fim, obtém-se que:
P(B|A) = P427
P(B|. A) = 1/2
P(B-A) =5=0,6
e = espacio_muestral = [1, 2, 3, 4, 5, 6]
- 45 -
# Probabilidade de intersecção
probabilidad_intersec = flutuador (hintersec) / n
# probabilidade de 'a'
probabilidad_a = flutuador (ha) / n
# probabilidade condicional
probabilidad_b_dado_a = probabilidad_intersec / probabilidad_a
No entanto, como cada evento composto é um conjunto e o Python fornece um tipo de dados
chamado set, é possível obter a interseção manipulando eventos compostos como conjuntos Python.
Com set, você pode converter qualquer iterável em montagem e executar operações de montagem,
Aqui, o conjunto obtido torna-se uma lista para ser consistente com o resto do código e que o
elemento resultante suporta as operações usuais e o tratamento de uma lista. Em caso de dúvida
sobre se é apropriado usar listas ou conjuntos, o princípio da simplicidade deve ser aplicado e a
EVENTOS INDEPENDENTES
Ao contrário do caso anterior, aqui a probabilidade de ocorrência de B não é afetada pela ocorrência
- 46 -
e a obtenção de um número par (evento B) não é afetada pelo fato de que um número ímpar foi
obtido em um lançamento anterior (evento A). A probabilidade de B é independente de A e é dada
pelo produto da probabilidade de ambos os eventos:
P(AnB) = P(A)P(B)
E = {1,2,3,4,5,0}
b. Probabilidade de A:
.4= {1,3,5}
P(A) = h = 2 = 1
teorema de Bayes nos permite saber a probabilidade de que todo evento Ak de E , é a causa de B .
- 47 -
determinado sector demográfico (por exemplo, o sector demográfico composto por rapazes ou
raparigas).
ANÁLISE
Do exposto conclui-se que:
- 48 -
• A probabilidade de ser menina, menino, mulher ou homem na cidade, por meio de P(Ak) . É
considerada uma probabilidade a priori.
• A probabilidade de ser menina, menino, mulher ou homem e ter gripe, que é obtida com
P(Ak B) e é considerada uma probabilidade condicional.
n
P(B)=>P(A)P(BA,)
k=1 e é considerada uma probabilidade total.
• A probabilidade de alguém com gripe ser uma menina, menino, mulher ou homem é obtida
com o Teorema de Bayes. Essa probabilidade é considerada uma probabilidade a posteriori,
Uma maneira eficaz e ordenada de obter uma probabilidade a posteriori com o Teorema de Bayes é
NOTAR:
No futuro, map(float, <list>) será usado no código-fonte, para converter os elementos de uma
lista em números reais, desde que isso não sobrecarregue o código.
PROCEDIMENTO
1. Cálculo de probabilidade a priori
- 49 -
Fórmula:
Dados necessários:
Resultados:
m) = = 0.22
50000 probabilidade de sergarota
9000
P(A2) = 50000
= 0.18
probabilidade de sercriança
16000
= 0.32
50000
probabilidade de sermulher
14000 = 0.28
50000 probabilidade de serhomem
Código Python:
2. Probabilidade condicional
Certeza: Ak (a demografia)
- 50 -
P(AknB)
P(BAk)= P(A,)
Fórmula:
Dados necessários:
h=B,
P(Ak n B) =
h = interseções (dados da tabela de distribuição de casos de influenza)
Resultados:
. .....
P(AB1)= LÃ1 ___ 0 18
0.22 ' Chance de contrair gripe quando criança
IWO
P(BI A) = 50000 = 0.16
0.18
Probabilidade de ter gripe quando criança
3000
P(BI A3) = Ai _____0 19
0.32 '
Probabilidade de ter gripe como mulher
2500
P(BI A) = LÃ _____0 18
0.28 ' Probabilidade de ter gripe como homem
Código Python:
3. Probabilidade total
- 51 -
n
P(B ) = >P(A,) P(BA,)
Fórmula: k=1
Dados necessários:
Probabilidade a priori
probabilidade condicional
Resultados:
P(B) = 0,18
Código Python:
Observações:
(a) Observe que na saída anterior haverá uma diferença de .01 em relação à solução manual. Isso
se deve ao arredondamento realizado na solução manual. Essa diferença pode ser erradicada usando
3 casas decimais nos valores da probabilidade condicional (em vez de duas) na solução manual.
- 52 -
(b) a probabilidade de NÃO ter gripe será dada por 1 - P(B'l tal que
1 -0,18 = 0,82 mas não será necessário usá-lo para este exemplo com o
Teorema de Bayes.
4. Probabilidade a posteriori
Certeza: B (gripe)
_ . 2P(A,)P(BA+)
Fórmula: k=1
Dados necessários:
PAk) P(BAk,
= o produto obtido em cada um dos termos da probabilidade total
2P(AL)P(B|A)
k=1 = a probabilidade total
Resultados:
= 0.22
Chance de ser uma menina com gripe
0.03
P(A2B)= 0.18
= 0.16
Probabilidade de ser uma criança com gripe
- 53 -
0.06 —
P(A3B)= = 0.33
0,18 chance de ser mulher gripada
0.05 -
P(A4B)= = 0.27
0,18 chance de ser do sexo masculino gripado
Código Python:
FUNÇÕES
# Teorema de Bayes
DEF Bayes(E, B):
n = flutuação(soma(e))
pa = [h/n para h em e]
pi = [k / n para k em b]
PBA = [pi[i] / pa[i] para i no intervalo(len(pi))]
prods = [pa[i] * pba[i] para i no intervalo(len(pa))]
ptb = soma(prods)
Pab = [p/pb para p em prods]
Retorno PAB
BIBLIOGRAFIA ADICIONAL
[0] Probabilidade e Estatística, Murray Spiegel. McGraw-Hill, México 1988. versão impressa ISBN:
968-451-102-7
- 54 -
n = len(amostras)
média = soma(amostras) / flutuação(n)
Meia
Variância populacional
2 _ H(,2)2
" n
Variância da amostra
para n em amostras:
se não n em absolutos:
absolutos.apêndice(n)
fi = amostras.contagem(n)
frequências.apêndice(fi)
N = soma(frequências) # == len(amostras)
# FREQUÊNCIA RELATIVA
# Razão entre frequência absoluta e N relativo = [float(fi) / N para fi em frequências] soma relativa =
round(sum(relative)) # == 1
# FREQUÊNCIA CUMULATIVA
# Soma de todas as frequências menores ou iguais às frequências absolutas.sort()
cumulativo = [soma(frequências[:i+1]) para i, fi em enumerar(frequências)]
- 61 -
opção escolhida pelo usuário. Abaixo está um truque para resolver isso de forma simples e
engenhosa.
def leer_archivo():
"""Ler arquivo CSV"""
retornar "leitura"
def escribir_archivo():
"""Gravar arquivo CSV"""
retornar "gravar"
def _sumar_numeros(lista):
"""Adicionar os números de uma lista""" retornar " privado"
3) Em seguida, é definida uma lista com o nome de todas as funções que serão acessíveis pelo
A dica será automatizar tanto a geração do menu quanto a chamada para a função.
▪ A lista da etapa 3
▪ A função locals()
▪ O atributo doc
echo(menu)
option = int(get("Sua escolha: "))
# Echo and Get: Hacks aprendidos no curso introdutório
Por fim, para acessar dinamicamente a função escolhida pelo usuário, a dica será usar a opção
escolhida pelo usuário, como um índice para acessar o nome da função da lista, e recorrer
- 64 -
Se você chegou ao final do curso, você pode obter uma certificação tripla:
Se você precisa se preparar para o seu exame, você pode se inscrever para o
Curso de Ciência de Dados com Python na
Eugenia Bahit
School of Informaticswww.eugeniabahit.com