Capítulo 5.3
Índice
- 1. O que é Ciência de Dados?
- 2. Causalidade e Experimentos
- 3. Progamando em Python
- 4. Tipos de Dados
- 5. Sequências
- 6. Tabelas
- 7. Visualização
- 8. Funções e Tabelas
- 9. Aleatoriedade
- 10. Amostragem e Distribuições Empíricas
- 11. Testando Hipóteses
- 12. Comparando Duas Amostras
- 13. Estimação
- 14. Por que a Média é Importante
- 15. Previsão
from datascience import *
import numpy as np
path_data = '../../../assets/data/'
Mais sobre Arrays
Muitas vezes, é necessário calcular algo que envolve dados de mais de um array. Se dois arrays têm o mesmo tamanho, o Python facilita a realização de cálculos envolvendo ambos os arrays.
Para o nosso primeiro exemplo, voltamos mais uma vez aos dados de temperatura. Desta vez, criamos arrays de médias diárias de temperaturas máximas e mínimas para as décadas em torno de 1850, 1900, 1950 e 2000.
baseline_high = 14.48
highs = make_array(baseline_high - 0.880,
baseline_high - 0.093,
baseline_high + 0.105,
baseline_high + 0.684)
highs
| Out[2]: | array([13.6 , 14.387, 14.585, 15.164]) |
baseline_low = 3.00
lows = make_array(baseline_low - 0.872, baseline_low - 0.629,
baseline_low - 0.126, baseline_low + 0.728)
lows
| Out[3]: | array([2.128, 2.371, 2.874, 3.728]) |
Suponha que gostaríamos de calcular a média diária de alcance de temperaturas para cada década. Ou seja, queremos subtrair a média diária de alta nos anos 1850 da média diária de baixa nos anos 1850, e o mesmo para cada outra década.
Poderíamos escrever isso laboriosamente usando .item:
make_array(
highs.item(0) - lows.item(0),
highs.item(1) - lows.item(1),
highs.item(2) - lows.item(2),
highs.item(3) - lows.item(3)
)
| Out[4]: | array([11.472, 12.016, 11.711, 11.436]) |
Como quando convertemos um array de temperaturas de Celsius para Fahrenheit, o Python fornece uma maneira muito mais limpa de escrever isso:
highs - lows
| Out[5]: | array([11.472, 12.016, 11.711, 11.436]) |

O que vimos nesses exemplos são casos especiais de uma característica geral dos arrays.
Aritmética elemento a elemento em pares de arrays numéricos
Se um operador aritmético age sobre dois arrays do mesmo tamanho, então a operação é realizada em cada par correspondente de elementos nos dois arrays. O resultado final é um array.
Por exemplo, se array1 e array2 têm o mesmo número de elementos, então o valor de array1 * array2 é um array. Seu primeiro elemento é o primeiro elemento de array1 vezes o primeiro elemento de array2, seu segundo elemento é o segundo elemento de array1 vezes o segundo elemento de array2, e assim por diante.
Exemplo: Fórmula de Wallis para π
O número π é importante em muitas áreas diferentes da matemática. Séculos antes que os computadores fossem inventados, os matemáticos trabalhavam para encontrar maneiras simples de aproximar o valor numérico de π. Já vimos a fórmula de Leibniz para π. Cerca de meio século antes de Leibniz, o matemático inglês John Wallis (1616-1703) também expressou π em termos de frações simples, como um produto
infinito.
Este é um produto de frações “par/impar”. Vamos usar arrays para multiplicar um milhão delas e ver se o produto está próximo de π.
Lembre-se de que a multiplicação pode ser feita em qualquer ordem [1], então podemos ajustar nosso cálculo para:
Agora estamos prontos para fazer o cálculo. Começamos criando um array de números pares 2, 4, 6, e assim por diante até 1,000,000. Em seguida, criamos duas listas de números ímpares: 1, 3, 5, 7, … até 999,999, e 3, 5, 7, … até 1,000,001.
even = np.arange(2, 1000001, 2)
one_below_even = even - 1
one_above_even = even + 1
Lembre-se de que np.prod multiplica todos os elementos de um array juntos. Agora podemos calcular o produto de Wallis, para uma boa aproximação.
2 * np.prod(even/one_below_even) * np.prod(even/one_above_even)
| Out[7]: | 3.1415910827951143 |
Isso é π corrigido para cinco casas decimais. Wallis claramente criou uma grande fórmula.
Notas de rodapé
[1] Como vimos no exemplo sobre a fórmula de Leibniz, quando adicionamos infinitamente muitas frações, a ordem pode importar. O mesmo acontece com a multiplicação de frações, como estamos fazendo aqui. Mas nossa aproximação para π usa apenas um grande número finito de frações, então está tudo bem multiplicar os termos em qualquer ordem conveniente.
| ← Capítulo 5.2 – Ranges | Capítulo 6 – Tabelas → |
