Enviar um café pro programador

Mostrando postagens com marcador SymPy. Mostrar todas as postagens
Mostrando postagens com marcador SymPy. Mostrar todas as postagens

Bibliotecas para Programação Científica - NumPy, SymPy, SciPy, Matplotlib e Pandas

 Nesta seção, de nosso curso de Programação Científica com Python, vamos te apresentar as principais bibliotecas para se trabalhar com Computação Numérica e Ciência de Dados, que são:

  • NumPy
  • SciPy
  • SymPy
  • Matplotlib
  • Pandas
  • Outros
São ferramentas que serão necessárias você instalar, para dar continuidade em nosso curso.

NumPy - O pacote fundamental da Computação Científica

Essa biblioteca é a base de toda a computação numérica (Numerical Python), que usamos para trabalharmos com Array, especificamente.

Pacote NumPy para Data Science e Machine Learning


Embora tenha muita semelhança com as Listas, os arrays tem uma característica especial de ser possível fazer operações aritméticas com eles, diferente dos outros tipos de sequências.

Com a library do NumPy, vamos aprender a armazenar dados em um array e como manipular essas informações de uma maneira bem fácil. Se é da área de exatas, certamente já ouvir falar em matrizes, que no mundo da computação científica é conhecida por array multidimensional, também tratadas pelo NumPy.

O que é possível fazer com o NumPy:
  • Criar, adicionar, remover e ordenas os elementos de um array
  • Alterar tamanhos e formatos de arrays e matrizes
  • Fazer operações aritméticas com arrays
  • Achar elementos máximos, mínimos, médias, soma etc
  • Gerar números aleatórios
  • Fazer cálculos matemáticos, como raiz quadrada, somatório, funções trigonométricas, hiperbólicas, arredondamentos, expoentes, logaritmos, numéricos completos, Bessel etc
  • Álgebra linear
  • Estatística
  • Operação com bits
Documentação oficial do NumPy:

Como instalar o NumPy:
Se estiver usando o Jupyter notebook, não precisa fazer nada.

Para trabalhar diretamente numa IDE em sua máquina, utilize o pip no terminal de comandos de seu sistema operacional:
  • pip3 install numpy
Ou
  • pip install numpy

SymPy - Símbolos científicos em Python

Não sei se já percebeu, mas quase tudo em programação é feito através de números e textos, corretos?

Mas, e para exibir o símbolo de uma integral?
E de um somatório? Uma equação ordinária?
Imagine ter que estudar e lidar com uma função que tem trigonometria, logaritmo, números complexos etc, e tudo em uma fração?

É aí que entra a biblioteca SymPy (Symbolic Python). Com ela, além de fazer todos os cálculos possíveis que usualmente fazemos, ele exibe os símbolos (como o da raiz quadrada, a divisão com numerador em cima e denominador embaixo e tudo mais o que você puder fazer no papel, faremos no Python. 
Biblioteca Sympy para computação matemática
Com o SymPy, podemos trabalhar com:

  • Polinômios (fatorar, decompor, dividir...)
  • Cálculo (limite, derivada, integral, série de Taylor)
  • Equações (polinomiais, algébricas, diferencial, diofantinas e sistemas)
  • Análise Combinatória (combinação, permutação, arranjos, binômio de Newton)
  • Fórmulas de Física
  • Matemática discreta e Lógica
  • Matrizes (determinantes, autovalor/vetor)
  • Geometria
  • Estatística
  • Cristografia
  • Gráficos (plot)
Vejam um exemplo bonitinho no Jupyter notebook:
Fórmulas de Física no Python

Para instalar o Sympy: 

  • pip install sympy ou 
  • pip3 install sympy

Documentação oficial do SymPy:

https://docs.sympy.org/latest/index.html


SciPy - O Python na Computação Científica

As duas bibliotecas anteriores são usadas para cálculos matemáticos, no geral. E são essenciais, afinal a Matemática é a base para toda a ciência, principalmente de exatas.

Mas é com a library SciPy que vamos adentrar, especificamente, nas ciências, com a programação em Python.
SciPy scientific library


Ela se dá especialmente bem com a NumPy, principalmente quando precisamos fazer otimizações e integrações numéricas, tanto que sua estrutura de dados básica é o array multidimensional (matriz).

O SciPy acaba por 'estender' algumas funcionalidades do NumPy, generalizando mais algumas funções, como as da álgebra linear e da transformada de Fourier, por exemplo.

A biblioteca SciPy é mais usada, principalmente, para:
  • Equações algébricas
  • Equações diferenciais
  • Interpolação
  • Problemas envolvendo autovalor
  • Integração
  • Otimização
  • Funções e distribuições estatísticas
  • Algoritmos fundamentais para todas as ciências
  • Processamento de Sinais
  • Processamento multidimensional de imagens
  • Transformadas de Fourier
  • Spatial data structures (sistemas de informações geográficos, computação gráfica, robótica e outras áreas)
Veja um exemplo de uso da SciPy com o software de mapas e informações geográficas ArcGis:
Computação científica com Python

Para instalar o SciPy: 

  • pip install scipy ou 
  • pip3 install scipy
Guia oficial do usuário SciPy:

Matplotlib - Gráficos e visualizações de dados

Agora que já aprendemos quais as ferramentas que existem e que usaremos para fazer cálculos numéricos, precisamos de uma maneira para exibir essas informações.

E é aí que entra a poderosa biblioteca Matplotlib, de mathematical plotting library, cujo propósito é o de exibir saídas e visualizações, que é algo bem mais amplo e poderoso do que simplesmente 'exibir gráficos', como veremos ao longo de nosso curso de Programação Científica com Python.

Com pouquíssimas linhas de código seremos capazes de construir os mais diversos tipos de imagens e gráficos, em excelente resolução e de maneira bem flexível e configurável. Se já usou o MATLAB alguma vez, saiba que vai ter tudo o que ele oferece, e muito mais, graças ao poder e versalidade do Python.

A título de curiosidade, essa library foi criado por um neurocientista e biólogo, chamado John Hunter, mostrando que cientistas também podem se tornar exímios programadores. Não sinta medo se aparecer algo estranho ou difícil, em primeiro momento. Com o tempo e prática, vai ver que programar é uma das coisas mais simples e belas de se fazer.

Confesso que foi uma tarefa árdua achar imagens que ilustrassem o que é possível fazer com o Matplotlib:
Como criar gráficos em Python

Por isso, convido todos a digitarem 'matplotlib' no Google imagens e ver a infinidade de possibilidades que essa biblioteca do Python nos fornece:
Gráficos para Ciência de dados

A biblioteca do Matplotlib nos fornecesse a possibilidade de se criar e trabalhar com:
  • Plot de linhas
  • Plot scatter (gráficos de dispersão)
  • Plot stem (Diagrama de ramos e folhas)
  • Plot em 2D e 3D
  • Plot de contorno
  • Plot polares
  • Stack Plot (gráficos de pilha)
  • Box Plot (gráficos de caixa)
  • Error Plot (margem de erro)
  • Violin Plot
  • Plot de mapas de cores
  • Plot interativos (suportam tratamento de eventos e possibilidade de se mudar os dados de maneira dinâmica)
  • Gráficos de barra
  • Gráficos de pizza (pie chart)
  • Histograma
  • Customização de figuras, legendas, rótulos, eixos, títulos, subplots, grids de imagens etc
  • Mapas e projeções cartográficas (Basemap e Cartopy)
  • Portável e multi-plataforma
  • Integração com outras ferramentas, com o LaTeX e o Microsoft Excel
  • Qualidade de imagens do nível de publicações científicas
  • Total integração com o NumPy
  • Integração com o Jupyter Notebook
  • Possibilidade de se trabalhar com animações e renderizações rápidas
Para instalar o Matplotlib, acesse o terminal de comando de seu sistema operacional e digite:
pip install matplotlib
ou
pip3 install matplotlib

Veja a documentação oficial do Matplotlib em:

Pandas e a ciência de dados (data science)

Certamente você já ouviu falar em ciência de dados (ou mais especificamente, análise e processamento de dados). Se tornou algo tão grande, tão importante e com tão poucas pessoas que tem conhecimento na área, que é comum de ouvirmos falar até em meios não-acadêmicos, como na TV mesmo ou como propaganda em alguma rede social sua.

Em nosso curso de computação numérica com Python, iremos utilizar a poderosíssima e famosa biblioteca pandas, que vai nos permitir fazer uma vasta gama de operações com todos os tipos de dados que você imaginar.

Iremos aprender a trabalhar com Series e Dataframes (dados em série e tabela de dados), mais precisamente quebrando essas informações, unindo, classificando, agrupando, extraindo estatísticas, percebendo padrões, convertendo dados etc.

Por exemplo, vamos supor que o órgão oficial da sua cidade está coletando informação de onde chove, em 10 locais de sua cidade. Pega informações a cada hora. Ou seja, 240 dados diariamente (10mm de chuva, 15mm de chuva, 0 mm de chuva etc).

Se você pegar um mês desses dados, vai ter mais de 7000 informações, porém não vai conseguir concluir nada. Afinal, você analisou só um mês.

Mas vamos supor que você consiga 20 anos dessas informações. São quase 2 milhões de dados.
Dá pra fazer algo manualmente? Bem inviável, concorda?

É aí que entra a programação em Python e, especificamente, o pandas. Podemos pegar os dados ano a ano e ver como ele se comporta. Que anos choveu mais ou menos? Ou foi estável? É possível notar mudanças climáticas em sua cidade, e usar isso em um artigo acadêmico.

E que tal agora a gente selecionar por mês? Quanto que choveu em cada mês, de cada ano? Tem meses que chovem mais? Certamente, apenas olhando os dados, você saberia dizer que época chove mais, quanto que chove, que meses tem seca (assim, gerar informações para a criação de projetos contra seca ou alagamentos!), e por aí vai.

Veja bem, é possível analisar milhões e milhões de dados desses, com pouquíssimas linhas de código, extrair todo tipo de informação que você possa imaginar e até mostrar isso de maneira gráfica.

O motivo do nome ser pandas é porque pandas são fofos, e é simplesmente apaixonante trabalhar com esta biblioteca:
Curso de ciência de dados com Python


Documentação do pandas

Adivinha? Para instalar o pandas, digite o comando:
pip install pandas
ou
pip3 install pandas

No terminal de comando de seu sistema operacional.

Machine Learning e a Inteligência Artificial

Assim como a ciência de dados, muitíssimo provavelmente você ouviu falar num campo de estudo e trabalho chamado Machine Learning, ou aprendizado de máquina, em nossa língua.

Em nossa apostila Programação Científica em Python, iremos apresentar uma biblioteca para aprender e trabalhar com Machine Learning, vamos aprender como criar programas que irão detectar padrões em dados, ver coisas que nós humanos não conseguimos ver, através da teoria do aprendizado computacional.

Inteligência artificial em Python

Sim. É possível programarmos e ensinarmos as máquinas a: 
  • Reconhecer padrões
  • Aprender com erros
  • Criação de algoritmos
  • Fazer previsões
  • Tomar decisões

E tudo isso é a base para toda a inteligência artificial.

Ficou satisfeito com o que é possível fazer nas ciências, com o Python?
Pois bem, não mostrei nem 1% do que é possível. Bem vindo ao fantástico mundo da programação.

Chega de moleza com sua máquina, nos próximos tutoriais vamos colocar a mão na massa e aprender como fazer o hardware pegar fogo, de tanto trabalhar e calcular.

Python para Programação Científica e Computação Numérica

 Por que usar Python para programação científica? Qual a vantagem? O que o Python oferece para cientistas e engenheiros?

Este texto faz parte de nosso curso de Programação Científica em Python.

História da Programação Científica

Geralmente quando se fala em programação, ou computação de uma maneira geral, as pessoas se referem a PC's, softwares como o Office, Sistemas Operacionais como Windows, jogos, editores de imagem e vídeo, navegadores, sites, celulares, aplicativos etc.

Ou seja, informática.

Mas, na verdade, computação vem de computar, que significa simplesmente contar. É comum esquecermos mas, computação/programação é matemática pura, é lógica, raciocínio. É ciência.

Com o tempo, a programação foi sendo usada fora do ambiente científico, e está muitíssimo presente na vida das pessoas.

Então, não deve ser surpresa para você saber que grande parte da computação foi desenvolvida com o propósito científico.

MUITA coisa que usamos no dia a dia teve sua criação e início de uso em meios acadêmicos e em setores de pesquisa e desenvolvimento (P & D) de grandes empresas, com a AT & T.

Em décadas passadas (antes dos anos 2000), era praticamente o Fortran e o C que dominavam o meio acadêmico, como linguagens de propósito científico.

Era fácil, bem fácil, um livro de C++ ter mais de 1500 páginas, com a documentação das funções, bibliotecas e pacotes que estavam a disposição dos pesquisadores.

Ou seja, era difícil. Não importava se você era Matemático, Físico, Químico, Engenheiro ou de qualquer outra área, você tinha que estudar e dominar tão bem a programação como os programadores 'puros'.

Então, era algo bem 'nichado'. Poucas pessoas já vão para o meio científico. E dessas, as que usavam programação como ferramenta, eram bem menos ainda.

Computação Científica

Porém, mesmo sendo algo bem específico, ela foi evoluindo muito durante as décadas, com novas linguagens voltadas para programação numérica, novas ferramentas, programas, frameworks etc.

E dentre essas ferramentas, hoje em dia, o Python é a que mais se destaca.


O Python e a Programação Científica

E graças ao nosso querido e amado Python, essa barreira da dificuldade e escassez de ferramentas, vem sendo mudada radicalmente.

Com seu propósito de ser uma linguagem de fácil aprendizado e rápida codificação, a programação científica já é ensinada e usada desde o primeiro semestre de grande parte dos cursos de exatas, no Brasil e no mundo.

Por ser um projeto gratuito e livre, um batalhão de programadores, engenheiros, físicos, matemáticos, químicos e profissionais de outras graduações (Oceanografia, Geologia, Estatística, Biologia, Economia, Contabilidade etc etc etc) se uniram e passaram a criar ferramentas próprias, para cada propósito, e disponibilizaram elas publicamente para quem desejar usar em seus projetos.

Deseja simular ondas do mar e marés? Tem pacotes pra isso, feito por profissionais da área, que programaram em Python.

Realizou diversos experimentos e deseja plotar gráficos (de qualquer tipo), de maneira bem fácil e rápida? Só importar alguma biblioteca, já tem tudo isso pronto.

Quer simular interação de átomos? Galáxias se expandindo? Colisão de um meteoro? Tem de tudo e mais um pouco, pronto em Python, feito por físicos, astrofísicos, químicos e amantes da área.

Está projetando um prédio, uma ponte, uma montanha-russa? Acredite, muitas outras pessoas já precisaram fazer isso, e criaram diversas funções em Python, de modo que hoje é bem fácil fazer isso com essa linguagem.

Certamente já ouviu falar em Data Science (Ciência de dados), Deep Learning e Machine Learning, não é? A linguagem Python é pioneira nesses ramos.

Inteligência Artificial? Respira com Python.

Quer criar gráficos lindos e maravilhosos? Em 2D e 3D? Girar as figuras, 'entrar', 'sair' delas, puxar pra cima e pra baixo, pra um lado e outro, estilo futurista? Tem bibliotecas prontas pra isso, basta fornecer seus dados, informando o que deseja fazer, que o Python faz.

Simulação 3D com Python


Está com uma equação complicadíssima em mãos, de seu curso de Matemática ou de Física (seja graduação, mestrado, doutorado ou pós-doc) ? Deixa o Python fazer as contas por você, pois existem pacotes com funções de cálculo numérico prontinhas.

Acredite, praticamente tudo que você precisa, outras pessoas já precisaram e desenvolveram ferramentas, de modo que hoje em dia é, basicamente, aprender a usar elas.

E aprendendo a programar, aqui no Python Progressivo, caso você venha a estudar, pesquisar e desenvolver coisas novas no mundo científico, você vai ter bagagem em computação o suficiente para criar suas ferramentas e disponibilizar para o mundo.

Imagina cientistas, universidades e empresas usando código criado por você? Dá pra contar nos dedos quem pode se dar ao luxo de colocar isso em um currículo. Se você fizer, se prepare para a enxurrada de convites para palestras, bolsas e simpósios ao redor do mundo.

Não importa o que você esteja estudando ou no que esteja trabalhando, tem alguém na China, na Rússia, na Índia, Estados Unidos e Europa fazendo o mesmo. E a linguagem que vamos nos comunicar é o Python.

Seja você um Bioquímico, Agrônomo ou doutor em Cristalografia, sempre que precisar fazer contas ou simular algo, você vai aprender a programar usando o Python, para que sua máquina faça todo o trabalho pesado por você.

Para isso, basta estudar pelo curso Python Progressivo.


Programaçao Científica no Python Progressivo

Estudaremos os seguintes assuntos científicos (da Matemática, Física, Computação, Engenharia etc), usando o Python:

  • Vetores, Matrizes e Arrays multidimensionais
  • Cálculo (limites, derivadas, integrais e séries)
  • Equações
  • Equações diferenciais ordinárias
  • Equações diferenciais parciais
  • Álgebra Linear (equações lineares, equações não-lineares, autovalor etc)
  • Plottagem (como criar e visualizar gráficos)
  • Otimização
  • Interpolação (polinômios)
  • Análise e Processamento de dados
  • Estatística
  • Modelagem estatística (Regressão Linear, Regressão Discreta, Modelo de Poisson, Times Series)
  • Estatística Bayesiana
  • Processamento de SInais (Fourier, Filtro de sinais, Convolução, Análise Espectral)
  • Machine Learning (Regressão, Classificação, Clustering)
  • Python com Latex
  • Animações
  • Conjuntos de Mandelbrot


Usaremos diversas ferramentas prontas para usar com o Python, como as bibliotecas e pacotes:

  • NumPy
  • SciPy
  • SymPy
  • Pandas (Series, DataFrame, TimeSeries)
  • Seaborn
  • h5py
  • PyTables
  • Cython, Numba
  • Miniconda e Conda
Contamos com sua contribuição nos comentários. Deixe suas dúvidas, sua sugestão, erratas e não esqueça de dizer de onde você, o que estuda e o que está fazendo usando o Python.