Science">
Python para Engenheiros PDF
Python para Engenheiros PDF
Python para Engenheiros PDF
de conteúdos
Introdução 1.1
Capítulo 1 - apenas o aperitivo... 1.2
Uma brevíssima introdução sobre a linguagem Python 1.2.1
Dicas de instalação e configuração (o que, e o porquê) 1.2.2
O que são os "módulos Python" 1.2.3
O módulo numpy 1.2.4
O módulo scipy 1.2.5
O módulo matplotlib 1.2.6
O Ipython e o Jupyter Notebook 1.2.7
Spyder "apenas" mais um dos ambientes de computação científica do Python
Interfaces Gráficas com o Usuário (en: GUI) - as inúmeras alternativas 1.2.8
1
Matplotlib - dicas práticas para o dia a dia de um analista 1.4.3
Matplotlib e gráficos interativos (widgets, comandos, etc.) 1.4.4
Capítulo 4 - interagindo com o tal usuário através de GUI's... 1.5
TkInter - nativo, fácil, portável... 1.5.1
PyQt - poderoso, muito mais fácil, mega-trans-portável 1.5.2
Capítulo 5 - não basta analisar, é preciso reportar! 1.6
Dicas básicas para usar o módulo reportlab 1.6.1
Capítulo 6 - minha documentação é o código... 1.7
Capítulo 7 - quem debuga, não erra (ou vice-versa?)... 1.8
Capítulo 8 - serialização, conectividades e I/O's 1.9
pickle, xml, json, etc. 1.9.1
Banco de dados relacionais - SQL Queries 1.9.2
Bases de dados No-SQL 1.9.3
OPC DA/HDA Classic 1.9.4
OPC UA 1.9.5
Modbus 1.9.6
Web Scraping 1.9.7
Capítulo 9 - world wide Python web 1.10
Qual framework escolher? 1.10.1
Capítulo 10 - mundo de mentirinha... 1.11
O que é: Modelica? 1.11.1
O OpenModelica, o Python e a simulaçao 1.11.2
O JModelica, o Python e a simulaçao 1.11.3
Capítulo 11 - mundo discreto e estoácstico de mentirinha.... 1.12
Capítulo 12 - interagindo pra valer com gráficos! 1.13
Capítulo 13 - dicas imperdíveis, algumas até ousadas! 1.14
Apêndice A - Fundamentos básicos 1.15
Glossário 1.16
2
Introdução
Introdução
A ideia de escrever este material partiu da constatação do quão útil foi (ou pelo menos
parece ter sido) o manual que escrevi em conjunto com meu amigo Luciano Farina sobre a
utilização do Matlab com enfoque especial para as "Engenharias". Ele foi escrito no final da
década de 90 (sim, no século passado) com o objetivo de compartilhar nossos
conhecimentos e disseminar a utilização desta ferramenta, principalmente no meio
acadêmico.
Hoje este manual (e suas diversas versões) pode ser encontrado em inúmeros sites onde
são compartilhados documentos (daí a inferência sobre a sua utilidade), mas localizei uma
fonte que conheço e recomendo para quem quiser baixar uma das suas versões: está na
página pessoal do professor Argimiro da COPPE-UFRJ: Matlab - Feramenta matemática
para Engenharia .
Atualmente deixei o Matlab de lado e passei a brincar com o Python, uma linguagem de
programação interpretada e extremamente poderosa, tão poderosa que, em diversos
aspectos se "assemelha" bastante ao ambiente do Matlab, porém, por não ser apenas uma
"plataforma matemática", ela abre novos horizontes de possibilidades, no mínimo,
instigantes!
3
Introdução
4
Capítulo 1 - apenas o aperitivo...
Sendo assim, a primeira tarefa prática que sugerimos fazer é uma pesquisa na World Wide
Web (WWW) sobre a linguagem Python, antes mesmo de dizermos qualquer coisa. Tenho
certeza que o leitor vai ficar impressionado com o resultado – nas mais diversas áreas do
conhecimento, utilizado pelas mais diversas “empresas & instituições” e para os mais
diversos fins. Isso também auxilia a justificar a necessidade de “restringirmos” nosso foco
aos “Engenheiros” e “Curiosos Ousados” para que possamos construir algo “minimamente
útil”, não tão amplo e genérico que apenas fica margeando conceitos sem nos dar algo
concreto em troca!!!
Nota
Vale ressaltar que pretendemos seguir as regras do nosso “bom português” no que
tange à utilização de “palavras” no gênero masculino quando nos dirigirmos a um
“leitor genérico”, sem nos preocuparmos com questões sexistas, que via de regra
enfatizam a discriminação através da utilização dos dois gêneros (ex.: leitor/leitora,
curioso/curiosa, ousado/ousada, etc.) além de deixar o texto mais enfadonho – enfim
esta é a nossa opinião, tens todo o direito de discordar!
5
Uma brevíssima introdução sobre a linguagem Python
Esta característica de ser uma linguagem interpretada auxilia muito nos processos de
prototipação de softwares, uma vez que agiliza o processo de escrita de código e análise
dos resultados – típica metodologia de programação feita por Engenheiros! Por esta
característica também pode assumir o caráter de “poderosa ferramenta de análise”,
incorporando-se ao arsenal que um Engenheiro tem à sua disposição para resolver suas
demandas cotidianas!
Muito mais detalhes sobre a linguagem Python pode ser encontrado em: Python Software
Foundation e em inúmeros materiais disponibilizados na WWW, mas acredito que para um
Engenheiro, o que foi dito já é mais que suficiente para motivar a continuação da leitura
deste material!
6
Dicas de instalação e configuração (o que, e o porquê)
Sim, esta dúvida é procedente uma vez que, mesmo após o lançamento da versão 3 do
Python, a versão 2.7 continuou sendo mantida e atualizada.
Atualmente ambas versões estão disponíveis para download no site Python Software
Foundation
Sem dúvida alguma a última versão traz inúmeros benefícios e melhorias, vale a pena
entrar no site mencionado anteriormente para conferir, porém, existem muitos módulos
Python que foram desenvolvidos pela comunidade e que não foram ainda migrados para a
última versão. Este número é tão expressivo que a dúvida na escolha da versão é uma
questão recorrente que ainda persiste!
Hoje, para quem quer brincar com análises de dados ou computação científica, “deve” optar
pela última atualização da versão 2.7. Esta é (hoje-2016) a versão que a comunidade
científica mais vem adotando para estudos, desenvolvimentos, etc., justamente pelos
motivos já mencionados.
Não, ou melhor, sim, caso queiras ter um bom trabalho instalando mais um monte de
“coisas úteis” que, em geral, um Engenheiro precisa.
7
Dicas de instalação e configuração (o que, e o porquê)
Sei que alguns vão achar engraçado trocar uma “serpente” por outra, mas este não é o
caso. O Anaconda que nos referimos nada mais é do que uma plataforma para computação
científica que inclui o Python, ou seja, além de instalar o Python, já instala e configura um
monte de outros recursos e módulos que aceleram o processo de “montagem” de um
ambiente científico e de análises.
Então baixe a última versão do Anaconda (que utiliza o Python 2.7) e instale! Ao final,
muitos dos módulos e recursos que abordaremos neste material já estarão disponíveis e
prontos para utilização!
Uma vez instalado o Python, é possível abrir algum dos seus IDE’s (pesquisar na WWW, o
IDLE em geral vem junto com algumas instalações) e executar diretamente alguns
comandos nele.
Quem não instalou ainda e mesmo assim quer brincar, é possível executar comandos
diretamente no ambiente disponibilizado no site Python Software Foundation. Para tanto,
basta selecionar a opção: Launch Interactive Shell
Vamos iniciar com um probleminha simples: criar uma lista com 8 elementos contendo a
avaliação da parábola para os valores inteiros de 0 a 7, inclusive. Para tanto, basta
executar a seguinte linha de comando:
Para aqueles que usaram o próprio site sugerido para executar os comandos acima, o
resultado deve ser este:
8
Dicas de instalação e configuração (o que, e o porquê)
A primeira linha cria uma lista (estrutura de dados a ser vista mais adiante) através da
função range() em um laço for com a avaliação dos valores de 0 a 7, inclusive, em uma
função que eleva elemento a elemento ao quadrado através do operador de potência . O
resultado é atribuído à variável e posteriormente mostrado na tela através da função
print().
Nota:
Sim, respondendo aos mais observadores e ousados, as listas são estruturas de dados
representadas entre colhectes [ ] com os elementos (qualquer coisa) separados por
vírgulas , , simples, não?!
Ah! E sim também para o operador de potenciação que é representado por dois
asteriscos , e não pelo acento circunflexo como em algumas linguagens.
Para quem prefere brincar com strings, vale experimentar este exemplo e ver o resultado:
Neste exemplo utilizamos a função str() que converte dados numéricos em strings (“formato
texto”). Notar que as strings em Python podem ser representadas entre aspas duplas " ", ou
aspas simples ' '.
E, para aqueles que preferem trabalhar com datas e horas, olha que fácil:
import datetime as dt
dia = [dt.datetime(2016, 6, 6) + dt.timedelta(days=i) for i in range(3)]
print(dia)
Neste caso importamos o módulo datetime, que nada mais é que uma biblioteca nativa do
Python para trabalhar com dados do tipo “data-hora”. A seguir veremos um pouco mais
sobre os módulos e como utilizá-los nos nossos scripts/programas/análises, mas já fica a
9
Dicas de instalação e configuração (o que, e o porquê)
Um pouco a mais...
Bem, como dissemos anteriormente, o Anaconda facilita muito o processo de instalação de
um conjunto de ferramentas para computação científica, como os módulos matemáticos e
gráficos, o ambiente científico (aplicativo) Spyder, o sensacional Jupyter Notebook -
excelente ambiente para análises, registro do memorial de cálculos, utilização para fins
didáticos, etc...etc...etc... - dentre inúmeras outras ferramentas que veremos ao longo deste
material.
Dito tudo isso, ainda resta dizer: tem sim um pouco mais... aliás, quando se trata de Python,
sempre tem um pouco mais - um pouco mais do mesmo e um pouco mais de coisas
diferentes e até mesmo inusitadas! Então vamos a mais alguns aplicativos que sugiro
pesquisar, claro que esta é a dica para os ousados (que são exatamente os que chegaram
até este ponto da leitura)!
Atom
É um editor de texto que roda em Linux, Mac e Windows - além de um visual moderno e
inúmeras ferramentas interessantes que facilitam e aceleram o processo de
desenvolvimento de scripts em Python, suporta inúmeros plugins direcionados
especificamente para esta linguagem.
Eclipse
Também pode ser utilizado apenas como um editor de textos, porém é muito mais que isso,
é um ambiente projetado para o desenvolvimento de software, suportando inúmeras
linguagens - dentre elas: Python, é claro, através do plugin PyDev.
PyCharm
10
Dicas de instalação e configuração (o que, e o porquê)
Roda em Linux, Mac e Windows, para usar free, deve-se optar pela versão Community.
Atualmente este sistema roda no Windows e sua versão de demonstração tem apenas a
restrição de operar com 20 variávies, todas as demais funcionalidades e ferramentas estão
disponíveis, inclusive duas que temos interesse especial: o Dataset Analysis do EPM
Studio integrado ao Python (console e plugins), EPM SDK em linguagem Python e o
EPM Processor.
Pela simples possibilidade de utilizar a versão de demonstração free, esta é uma excelente
escolha para armazenamento e análise de dados em pequenas aplicações - como em
laboratórios ou, por exemplo para automação residencial, coletando dados de um Arduino
e/ou Raspberry Pi para posteriores análises (perfis de temperatura, consumo de energia,
enfim, o que a criatividade permitir).
Vale a pena dar uma passada no meu canal no Youtube para conferir as possibilidades que
esta ferramenta oferece.
11
Dicas de instalação e configuração (o que, e o porquê)
12
O que são os "módulos Python"
Então, para utilizarmos estes módulos, a primeira coisa a fazer é “carrega-los” no ambiente
ou script que pretendemos executar. Esta é uma operação que se tornará recorrente na
utilização de scripts Python: a importação de módulos ao ambiente para
utilização/chamadas de seus recursos/funções.
Existem diversas formas de carregar, ou melhor, importar uma biblioteca (ou melhor,
módulo), mas todas utilizam a palavra reservada import. Sem mais delongas, vamos
apresentar quatro formas de importar o módulo numpy para utilizar suas "funcionalidades":
Formato 1
Neste primeiro caso o módulo é carregado, e para utilizar suas funcionalidades (classes,
funções, etc.) é preciso sempre escrever numpy. seguido da "funcionalidade" desejada, no
exemplo acima é a construção de um objeto do tipo array do numpy.
Formato 2
import numpy as np
# criando um vetor de valores inteiros e atribuindo à variável v
v = np.array([1, 2, 3, 4, 5])
Neste segundo caso optou-se por criar um "apelido" para o módulo numpy, desta forma,
para chamar as "funcionalidades", basta usar o "apelido" np..
Nota
Esta é a forma mais usada e recomendada. Para quem for realmente curioso e ousado
sugiro uma rápida pesquisa na WWW sobre este tema!
Formato 3
13
O que são os "módulos Python"
Nesta terceira forma o que está sendo efetivamente importado é a "funcionalidade" (classe)
que possibilita criar um objeto array do numpy. Notar que neste caso não é necessário usar
o nome do módulo antes da chamada da "funcionalidade", muito menos seu apelido (até
porque o mesmo nem foi dado)!
Nota
Formato 4
Aparentemente este formato parece com o anterior no que diz respeito à utilização da
"funcionalidade", mas não se engane! Neste caso, absolutamente TODAS as
funcionalidades que se "localizam no nível logo abaixo do numpy" foram importadas! Desta
forma, não apenas a "funcionalidade" array pode ser chamada sem a necessidade do
numpy., mas também todas as demais!!
Isso se deve ao caractere asterisco , que funciona como um coringa!
.. o que ele quis dizer com: "localizam no nivel logo abaixo do numpy..." ??!
Bem... este assunto diz respeito a como os módulos Python são organizados e, a princípio,
não pretendo abordar neste material; mas para os mais ousados recomendo fortemente
pesquisar na WWW por: "how to create python modules"!!!
14
O que são os "módulos Python"
Nota
Aos demais, deixa assim... o que foi dito já é muito mais que suficiente - MAS... só pra
garantir: usar o formato 2 !!!.
15
O módulo numpy
O módulo numpy
O numpy é o principal módulo para quem deseja trabalhar com computação científica.
Basicamente ele oferece toda uma infraestrutura para trabalhar com matrizes e álgebra
linear, sendo na maioria das vezes requisito básico para utilização de outros módulos, como
o próprio scipy, também para computação científica e que será visto no próximo tópico.
Para aqueles que já estão habituados a trabalhar com o Matlab, existe um tópico no tutorial
do numpy que traz um conjunto de operações básicas e suas respectivas sintaxes
comparando o numpy ao Matlab: NumPy for Matlab users. Eu, pessoalmente, recomendo
não ler, sugiro "recomeçar" estudando a linguagem Python sem os "velhos vícios"
decorrentes do "Matlab style"... [minha opinião...]
Apenas para dar uma breve ideia deste módulo, vamos ver alguns exemplos práticos da
sua utilização - mais detalhes serão abordados nos capítulos subsequentes.
16
O módulo numpy
Bem, estes foram apenas alguns exemplos de operações básicas que já precisei fazer um
dia - o numpy ainda tem muito mais coisa que veremos nos próximos capítulos - mas estes
exemplos já ajudam a resolver muitos problemas, além de poupar inúmeras linhas de
17
O módulo numpy
18
O módulo scipy
O módulo scipy
O scipy é, no nosso entendimento, o segundo principal módulo para quem deseja trabalhar
com computação científica. Ele tem como pré-requisito o numpy e oferece uma vasta gama
de funcionalidades, como por exemplo: interpolação, integração e derivação numérica,
resolução de equações diferenciais, otimização, processamento de sinais, álgebra linear,
matrizes esparsas, estatística, etc..
Por se tratar de um módulo bastante vasto e que oferece suporte a inúmeras áreas da
"matemática científica", ele é organizado de maneira hierárquica em diversos submódulos.
Assim, por exemplo, quem deseja trabalhar com interpolação, deverá importar o submódulo
interpolative que contém todas as funcionalidades relacionadas ao tema.
Mais sobre este módulo e seus submódulos serão vistos nos capítulos subsequentes, pois
a maioria dos exemplos requer uma visualização gráfica dos resultados para facilitar o seu
entendimento, e esta parte gráfica será vista a seguir, no tópico sobre o módulo da
matplotlib!
19
O módulo matplotlib
O módulo matplotlib
A matplotlib é, sem a menor sombra de dúvida: "O SONHO DE TODO ENGENHEIRO"!!!
Antes de prosseguir, vale a pena dar uma olhada na galeria de imagens do que é possível
fazer com este módulo: Matplotlib Gallery
O melhor de tudo é que não vou precisar escrever nada sobre este módulo nesta
introdução, pois uma simples visualização desta galeria de imagens/gráficos fala por si - se
ainda não clicaste no link acima, aproveita agora, última chance: Matplotlib Gallery!!!
Apenas para não dizer que não dissemos nada sobre a matplotlib:
1. Muiiito fácil de usar - "tipo Matlab" - inclusive foi baseada nos gráficos dele
2. Possibilidade de definir temas para os gráficos (usar os que já vem ou criar novos - o
tema padrão não é legal... :( )
3. Elementos gráficos organizados de maneira hierárquica, com possibilidade de acesso e
configuração de ABSOLUTAMENTE TUDO! (parte disso decorre do item 1)
4. Inúmeros tipos de gráficos "prontos": XY, bar, pie, boxplot, scatter, time series, radar,
polar, map (basemap), histogram, heatmap, boxplot, etc.
5. Gráficos interativos - vide WIDGETS - adição de botões, checkbox, slider, etc.
6. Apesar do item 4, para gráficos interativos recomendamos ver também: bokeh
(Interactive Web Plotting for Python), seaborn (statistical data visualization) e dash
(Python framework for building web applications).
20
O Ipython e o Jupyter Notebook
21
Spyder "apenas" mais um dos ambientes de computação científica do Python
22
Documentar é necessário? ans: Sphinx
23
Capítulo 2 - numpy, scipy and matplotlib - baby steps
24
Tópicos básicos sobre o módulo numpy
25
Manipulações e operações em/com numpy.arrays
26
Capítulo 3 - numpy, scipy, matplotlib and pint - teenager steps
27
Capítulo 4 - interagindo com o tal usuário através de GUI's...
28
Capítulo 5 - não basta analisar, é preciso reportar!
29
Capítulo 6 - minha documentação é o código...
30
Capítulo 7 - quem debuga, não erra (ou vice-versa?)...
31
Capítulo 8 - serialização, conectividades e I/O's
32
Capítulo 9 - world wide Python web
33
Capítulo 10 - mundo de mentirinha...
34
Capítulo 11 - mundo discreto e estoácstico de mentirinha....
35
Capítulo 12 - interagindo pra valer com gráficos!
36
Capítulo 13 - dicas imperdíveis, algumas até ousadas!
37
Apêndice A - Fundamentos básicos
Operadores
Controle de Fluxo
Funções
38
Glossário
Glossário
Scripts
Usamos o termo Script para designar um arquivo ASCII com um conjunto de instruções (em
linguagem Python, claro) que serão interpretadas e executadas pelo computador quando o
mesmo for avaliado. A avaliação de um Script pode ser feita diretamente através da
execução deste Script em uma linha de comando (shell, console Dos, etc.), executando-o
integralmente.
IDE
Do inglês Integrated Development Environment, é um Ambiente de Desenvolvimento
Integrado, que no caso do Python possibilita a execução de comandos e/ou scripts. Em
muitas instalações do Python o IDE que vem junto é o IDLE, porém existem inúmeros
outros – o que recomendamos é o do IPython, pela sua simplicidade e inúmeras facilidades
disponibilizadas.
39