Nothing Special   »   [go: up one dir, main page]

AMOSTRA PythonParaExcel

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 15

Python para Excel

Um Ambiente Moderno para


Automação e Análise de Dados

A
R
ST
Felix Zumstein
O
AM

Rio de Janeiro, 2024

CG_PythonForExcel.indb 5 22/12/2023 21:11:53


Etapa por Natalia Curupana - Modificado em: 22 dezembro, 2023 21:10
CG_PythonForExcel_Abertura
Sumário

Prefácio xiii
Por que Escrevi Este Livro xiv
Para Quem É Este Livro xiv

A
Como Este Livro É Organizado xv
Versões do Python e do Excel xvii
Convenções Usadas Neste Livro xvii
Usando Exemplos de Código xviii

R
Agradecimentos xix

PARTE I
ST
Introdução ao Python
CAPÍTULO 1 3
Por que Python para Excel? 3
O

O Excel É uma Linguagem de Programação 4


Excel no Noticiário 5
Melhores Práticas de Programação 6
Excel Moderno 12
AM

Python para Excel 13


Legibilidade e Manutenibilidade 14
Biblioteca Padrão e Gerenciador de Pacotes 15
Computação Científica 17
Recursos da Linguagem Moderna 17
Compatibilidade entre Plataformas 18
Conclusão 19

CAPÍTULO 2 21
Ambiente de Desenvolvimento 21
Distribuição Anaconda Python 22
Instalação 22
Prompt do Anaconda 22
Python REPL: Uma Sessão Interativa do Python 26
Gerenciadores de pacotes: Conda e pip 27
Ambientes Conda 29
Jupyter Notebooks 29

CG_PythonForExcel.indb 7 22/12/2023 21:11:53


Etapa por Natalia Curupana - Modificado em: 22 dezembro, 2023 21:10
CG_PythonForExcel_Abertura
viii | Python para Excel

Executando Jupyter Notebooks 30


Células do Notebook 31
Modo de Edição versus Modo de Comando 33
A Ordem de Execução Importa 34
Finalizando os Jupyter Notebooks 35
Visual Studio Code 36
Instalação e Configuração 38
Executando um Script Python 40
Conclusão 44

CAPÍTULO 3 45

A
Primeiros Passos com Python 45
Tipos de Dados 45
Objetos 46

R
Atributos e métodos 47
Tipos Numéricos 47
Booleanos 49
Strings 50
ST
Indexação e Fatiamento 52
Indexação 52
Fatiamento 53
Estruturas de Dados 53
Listas 54
Dicionários 55
O

Tuplas 57
Sets 57
Fluxo de Controle 58
AM

Blocos de Código e a Instrução pass 59


Instrução if e Expressões Condicionais 59
Loops for e while 60
Compreensões de Lista, Dicionário e Set 63
Organização do Código 64
Funções 64
Definindo funções 64
Chamando as funções 65
Módulos e a Instrução import 66
A Classe datetime 68
PEP 8: Guia de Estilo para Código Python 70
PEP 8 e VS Code 72
Dicas do Tipo 72
Conclusão 73

CG_PythonForExcel.indb 8 22/12/2023 21:11:53


Etapa por Natalia Curupana - Modificado em: 22 dezembro, 2023 21:10
CG_PythonForExcel_Abertura
  | ix

PARTE II

Introdução ao pandas
CAPÍTULO 4 77
Fundamentos do NumPy 77
Primeiros Passos com o NumPy 77
Array NumPy 77
Vetorização e Transmissão 79
Funções Universais (ufunc) 80

A
Criando e Manipulando Arrays 81
Obtendo e Definindo Elementos do Array 81
Construtores de Array Úteis 82

R
Visualizar versus Copiar 83
Conclusão 83

CAPÍTULO 5 85
ST
Análise de Dados com pandas 85
DataFrame e Série 85
Índice 88
Colunas 90
Manipulação de Dados 91
O

Selecionando Dados 92
Definindo Dados 97
Dados Ausentes 100
Dados Duplicados 101
AM

Operações Aritméticas 102


Trabalhando com Colunas de Texto 104
Aplicando uma Função 104
Visualizar versus Copiar 106
Combinando DataFrames 106
Concatenando 107
Join e Merge 108
Estatística Descritiva e Agregação de Dados 110
Estatística Descritiva 110
Agrupando 111
Pivot e Melt 112
Plotagem 113
Matplotlib 113
Plotly 115
Importando e Exportando DataFrames 118
Exportando Arquivos CSV 119
Importando Arquivos CSV 119
Conclusão 121

CG_PythonForExcel.indb 9 22/12/2023 21:11:53


Etapa por Natalia Curupana - Modificado em: 22 dezembro, 2023 21:10
CG_PythonForExcel_Abertura
x | Python para Excel

CAPÍTULO 6 123
Análise de Séries Temporais com pandas 123
DatetimeIndex 124
Criando um DatetimeIndex 124
Filtrando um DatetimeIndex 126
Trabalhando com Fusos Horários 127
Manipulações Comuns de Séries Temporais 128
Deslocamento e Mudanças Percentuais 128
Rebaseamento e Correlação 130
Amostragem 133

A
Janelas Contínuas 135
Limitações com pandas 136
Conclusão 136

R
PARTE III
ST
Lendo e Gravando Arquivos do Excel sem Excel
CAPÍTULO 7 139
Manipulação de Arquivos do Excel com pandas 139
Estudo de Caso: Relatórios em Excel 139
Lendo e Gravando Arquivos do Excel com o pandas 143
O

A Função read_excel e a Classe ExcelFile 143


O Método to_excel e a Classe ExcelWriter 148
Limitações ao Usar o pandas com Arquivos do Excel 150
Conclusão 150
AM

CAPÍTULO 8 151
Manipulação de Arquivos do Excel com Pacotes de Leitura e Gravação 151
Os Pacotes de Leitura e Gravação 151
Quando Usar Qual Pacote 152
O Módulo excel.py 153
OpenPyXL 155
XlsxWriter 159
pyxlsb 161
xlrd, xlwt e xlutils 162
Tópicos Avançados de Leitura e Gravação 164
Trabalhando com Arquivos Grandes do Excel 164
Formatando DataFrames no Excel 168
Formatando a parte dos dados de um DataFrame 171
Estudo de Caso (Revisitado): Relatórios em Excel 173
Conclusão 174

CG_PythonForExcel.indb 10 22/12/2023 21:11:53


Etapa por Natalia Curupana - Modificado em: 22 dezembro, 2023 21:10
CG_PythonForExcel_Abertura
  | xi

PARTE IV

Programando o Aplicativo Excel com xlwings


CAPÍTULO 9 177
Automação do Excel 177
Primeiros Passos com o xlwings 178
Usando o Excel como Visualizador de Dados 178
O Modelo de Objeto do Excel 179
Executando Códigos VBA 187

A
Conversores, Opções e Coleções 188
Trabalhando com DataFrames 188
Conversores e Opções 189

R
Gráficos, Imagens e Nomes Definidos 191
Gráficos do Excel 192
Estudo de Caso (Re-revisitado): Relatórios em Excel 195
Tópicos Avançados do xlwings 197
ST
Fundamentos do xlwings 197
Melhorando o Desempenho 199
Como Lidar com uma Funcionalidade Ausente 200
Conclusão 201

CAPÍTULO 10 203
O

Ferramentas do Excel com Tecnologia Python 203


Usando o Excel como Front-end com o xlwings 203
Suplemento Excel 203
AM

Comando Quickstart 205


Executar Principal 206
Função RunPython 207
Implantação 212
Dependência do Python 212
Pastas de Trabalho Autônomas: Livrando-se do Suplemento xlwings 213
Hierarquia de Configuração 214
Configurações 215
Conclusão 217

CAPÍTULO 11 219
Python Package Tracker 219
O Que Construiremos 219
Funcionalidade Principal 221
APIs da Web 222
Bancos de Dados 225
Exceções 234

CG_PythonForExcel.indb 11 22/12/2023 21:11:53


Etapa por Natalia Curupana - Modificado em: 22 dezembro, 2023 21:10
CG_PythonForExcel_Abertura
xii | Python para Excel

Estrutura do Aplicativo 236


Front-end 237
Back-end 241
Depuração 244
Conclusão 246

CAPÍTULO 12 247
Funções Definidas Pelo Usuário (UDFs) 247
Primeiros Passos com UDFs 247
Início Rápido de UDFs 248
Estudo de Caso: Google Trends 253

A
Introdução ao Google Trends 253
Trabalhando com DataFrames e Arrays Dinâmicos 254
Buscando Dados no Google Trends 260

R
Plotando com UDFs 264
Depurando UDFs 265
Tópicos Avançados em UDF 267
ST
Otimização Básica do Desempenho 268
Armazenando em cache 270
O Decorador Sub 272
Conclusão 274

APÊNDICE A 277
O

Ambientes Conda 277


Crie um Novo Ambiente Conda 277
Desabilite a Ativação Automática 279

APÊNDICE B 281
AM

Funcionalidade Avançada do VS Code 281


Depurador 281
Jupyter Notebooks no VS Code 283
Execute os Jupyter Notebooks 283
Scripts do Python com Células de Código 285

APÊNDICE C 287
Conceitos Avançados do Python 287
Classes e Objetos 287
Trabalhando com Objetos datetime com Fuso Horário 289
Objetos Python Mutáveis versus Imutáveis 290
Chamando Funções com Objetos Mutáveis como Argumentos 291
Funções com Objetos Mutáveis como Argumentos Padrão 293

Índice 295

CG_PythonForExcel.indb 12 22/12/2023 21:11:53


Etapa por Natalia Curupana - Modificado em: 22 dezembro, 2023 21:10
CG_PythonForExcel_Abertura
CAPÍTULO 1
Por que Python para Excel?

Normalmente, os usuários do Excel começam a questionar suas ferramentas de


planilha quando atingem uma limitação. Um exemplo clássico é quando as pas-

A
tas de trabalho do Excel contêm tantos dados e fórmulas que se tornam lentas
ou, na pior das hipóteses, travam. No entanto, faz sentido questionar sua confi-
guração antes que as coisas deem errado: se você trabalha em pastas de trabalho

R
de importância vital, nas quais os erros podem resultar em danos financeiros
ou de reputação, ou se você gasta horas todos os dias atualizando manualmente
as pastas de trabalho do Excel, deve aprender a automatizar seus processos com
ST
uma linguagem de programação. A automação elimina o risco de erro humano e
permite que você gaste seu tempo em tarefas mais produtivas do que copiar/colar
dados em uma planilha do Excel.
Neste capítulo, apresentarei algumas razões pelas quais o Python é uma excelen-
te escolha em combinação com o Excel e quais vantagens são comparadas à lin-
O

guagem de automação integrada do Excel, o VBA. Depois de apresentar o Excel


como linguagem de programação e entender suas particularidades, apontarei os
recursos específicos que tornam o Python muito mais forte em comparação com
o VBA. Para começar, no entanto, daremos uma olhada rápida nas origens de
AM

nossos dois personagens principais!


Em termos de tecnologia computacional, o Excel e o Python existem há muito
tempo: o Excel foi lançado pela primeira vez em 1985 pela Microsoft — e isso
pode ser uma surpresa para muitos —, estando disponível apenas para Apple
Macintosh. Não foi até 1987 que o Microsoft Windows obteve sua primeira ver-
são na forma do Excel 2.0. A Microsoft não foi o primeiro player no mercado de
planilhas eletrônicas: a VisiCorp saiu com o VisiCalc em 1979, seguido pela Lotus
Software em 1983 com o Lotus 1-2-3. E a Microsoft não liderou com o Excel:
três anos antes, eles lançaram o Multiplan, um programa de planilhas que po-
deria ser usado no MS-DOS e em alguns outros sistemas operacionais, mas não
no Windows.
O Python nasceu em 1991, apenas seis anos depois do Excel. Embora o Excel
tenha se tornado popular desde o início, o Python demorou um pouco mais até
ser adotado em certas áreas, como desenvolvimento web ou administração de

CG_PythonForExcel.indb 3 22/12/2023 21:11:54


Etapa por Natalia Curupana - Modificado em: 21 dezembro, 2023 18:27
CG_PythonForExcel_Cap01
4 | Python para Excel

sistemas. Em 2005, o Python começou a se tornar uma alternativa séria para a


computação científica quando o NumPy, um pacote para computação baseada
em array e álgebra linear, foi lançado pela primeira vez. O NumPy combinou
dois pacotes predecessores e, portanto, simplificou todos os esforços de desen-
volvimento em torno da computação científica em um único projeto. Hoje, ele
forma a base de inúmeros pacotes científicos, incluindo o pandas, lançado em
2008 e que é o grande responsável pela ampla adoção do Python no mundo da
ciência de dados e finanças que começou a acontecer depois de 2010. Graças ao
pandas, o Python, juntamente com o R, tornou-se uma das linguagens mais usa-
das para tarefas de ciência de dados, como análise de dados, estatísticas e apren-

A
dizado de máquina.
O fato de o Python e o Excel terem sido inventados há muito tempo não é a única
coisa que eles têm em comum: também são uma linguagem de programação.

R
Embora você provavelmente não fique surpreso ao ouvir isso sobre o Python,
pode necessitar de uma explicação para o Excel, que darei a seguir.
ST
O Excel É uma Linguagem de Programação
Esta seção começa apresentando o Excel como uma linguagem de programação,
que o ajudará a entender por que os problemas de planilhas aparecem regular-
mente nas notícias. Em seguida, veremos algumas práticas recomendadas que
surgiram na comunidade de desenvolvimento de software e podem evitar muitos
O

erros típicos do Excel. Concluiremos com uma breve introdução ao Power Query
e ao Power Pivot, duas ferramentas modernas do Excel que cobrem o tipo de
funcionalidade para a qual usaremos o pandas.
AM

Se você usa o Excel para mais do que sua lista de compras, definitivamente está
usando funções como =SOMA(A1:A4) para somar um intervalo de células. Se pen-
sar um pouco sobre como isso funciona, notará que o valor de uma célula ge-
ralmente depende de uma ou mais células, que podem novamente usar funções
que dependem de uma ou mais células, e assim por diante. Fazer essas chamadas
de função aninhadas não é diferente de como outras linguagens de programa-
ção funcionam, você apenas escreve o código em células em vez de arquivos de
texto. E se isso ainda não o convenceu: no fim de 2020, a Microsoft anunciou a
introdução das funções lambda, que permitem escrever funções reutilizáveis na
própria linguagem de fórmulas do Excel, ou seja, sem precisar depender de uma
linguagem diferente, como o VBA. De acordo com Brian Jones, chefe de produto
do Excel, essa era a peça que faltava para finalmente tornar o Excel uma lin-
guagem de programação “real”.1 Isso também significa que os usuários do Excel
deveriam realmente ser chamados de programadores do Excel!

1 Você pode ler o anúncio das funções lambda no blog do Excel.

CG_PythonForExcel.indb 4 22/12/2023 21:11:54


Etapa por Natalia Curupana - Modificado em: 21 dezembro, 2023 18:27
CG_PythonForExcel_Cap01
Por que Python para Excel? | 5

Há algo especial, porém, sobre os programadores do Excel: a maioria deles são


usuários de negócios ou especialistas de domínio sem educação formal em ciên-
cia da computação. São comerciantes, contadores ou engenheiros, para citar
apenas alguns exemplos. Suas ferramentas de planilhas são projetadas para re-
solver um problema de negócios e muitas vezes ignoram as melhores práticas
no desenvolvimento de software. Como consequência, essas ferramentas muitas
vezes misturam entradas, cálculos e saídas nas mesmas planilhas, podem exigir
a execução de etapas não óbvias para que funcionem corretamente e alterações
críticas são feitas sem qualquer rede de segurança. Em outras palavras, as fer-
ramentas de planilhas carecem de uma arquitetura de aplicativo sólida e geral-

A
mente não são documentadas nem testadas. Às vezes, esses problemas podem
ter consequências devastadoras: se você esquecer de recalcular sua planilha de
trading antes de fazer uma negociação, poderá comprar ou vender o número

R
errado de ações, o que pode fazer com que perca dinheiro. E, se não é apenas seu
próprio dinheiro que você está negociando, poderemos ler sobre isso nas notí-
cias, como veremos a seguir.
ST
Excel no Noticiário
O Excel é um convidado regular nas notícias e, durante a redação deste artigo,
duas novas histórias chegaram às manchetes. A primeira foi sobre o HUGO Gene
Nomenclature Committee, que renomeou alguns genes humanos para que não
fossem mais interpretados pelo Excel como datas. Por exemplo, para evitar que
O

o gene MARCH1 fosse transformado em 1-Mar, ele foi renomeado como MARCHF1.2
Na segunda história, o Excel foi responsabilizado pelo atraso na comunicação
de 16 mil resultados de testes de Covid-19 na Inglaterra. O problema foi causado
porque os resultados do teste foram gravados no formato de arquivo do Excel
AM

mais antigo (.xls), limitado a aproximadamente 65 mil linhas. Isso significava


que conjuntos de dados maiores foram simplesmente cortados além desse limi-
te.3 Embora essas duas histórias mostrem a importância e o domínio contínuos
do Excel no mundo de hoje, provavelmente não há outro “incidente de Excel”
mais famoso do que o London Whale [Baleia de Londres, em tradução livre].
London Whale é o apelido de um trader cujos erros de negociação forçaram o
JP Morgan a anunciar uma perda impressionante de US$6 bilhões em 2012. A
fonte da explosão foi um modelo de valor em risco baseado em Excel que estava
subestimando substancialmente o verdadeiro risco de perder dinheiro em uma
de suas carteiras. O Relatório do JPMorgan Chase & Co. Management Task Force

2 James Vincent, “Scientists rename human genes to stop Microsoft Excel from misreading them
as dates”, The Verge, 6 de agosto de 2020, https://oreil.ly/0qo-n (conteúdo em inglês).
3 Leo Kelion, “Excel: Why using Microsoft’s tool caused COVID-19 results to be lost”, BBC News,
5 de outubro de 2020, https://oreil.ly/vvB6o (conteúdo em inglês).

CG_PythonForExcel.indb 5 22/12/2023 21:11:54


Etapa por Natalia Curupana - Modificado em: 21 dezembro, 2023 18:27
CG_PythonForExcel_Cap01
6 | Python para Excel

Regarding 2012 CIO Losses4 (2013) menciona que “o modelo operava por meio de
uma série de planilhas Excel, que precisavam ser preenchidas manualmente, por
um processo de copiar e colar dados de uma planilha para outra”. Além desses
problemas operacionais, elas tinham um erro lógico: em um cálculo, elas esta-
vam dividindo por uma soma, em vez de por uma média.
Se você quiser ver mais dessas histórias, dê uma olhada em Horror Stories,
uma página da web mantida pelo European Spreadsheet Risks Interest Group
(EuSpRIG).
Para evitar que sua empresa acabe virando notícia com uma história semelhante,

A
daremos uma olhada em algumas das melhores práticas recomendadas a seguir
que tornam seu trabalho com o Excel muito mais seguro.

Melhores Práticas de Programação

R
Esta seção apresentará as melhores práticas de programação mais importantes, in-
cluindo a separação de conceitos, o princípio DRY, testes e controle de versão. Como
veremos, segui-las será mais fácil quando você começar a usar o Python junto do Excel.
ST
Separação de conceitos
Um dos princípios de design mais importantes na programação é a separação de con-
ceitos, às vezes também chamada de modularidade. Isso significa que um conjunto
relacionado de funcionalidades deve ser cuidado por uma parte independente do
programa para que possa ser facilmente substituído sem afetar o restante do aplicati-
O

vo. No nível mais alto, um aplicativo geralmente é dividido nas seguintes camadas:5
• Camada de apresentação
AM

• Camada de negócios
• Camada de dados

Para explicar essas camadas, considere um conversor de moeda simples como o


mostrado na Figura 1-1. Você encontrará o arquivo do Excel currency_converter.
xlsx na pasta xl do material complementar.
É assim que o aplicativo funciona: digite o Valor e a Moeda nas células A4 e B4,
respectivamente, e o Excel converterá em dólares norte-americanos na célula D4.
Muitos aplicativos de planilha seguem esse design e são utilizados pelas empre-
sas todos os dias. Deixe-me dividir o aplicativo em suas camadas:

4 A Wikipédia tem o link para o documento em uma das notas de rodapé em seu artigo sobre
o caso. Disponível em https://en.wikipedia.org/wiki/2012_JPMorgan_Chase_trading_loss#ci-
te_note-35 (conteúdo em inglês).
5 A terminologia é retirada do Guia de Arquitetura de Aplicativos da Microsoft, 2ª edição. Dispo-
nível em https://learn.microsoft.com/en-us/previous-versions/msp-n-p/ff650706(v=pandp.10)
(conteúdo em inglês).

CG_PythonForExcel.indb 6 22/12/2023 21:11:54


Etapa por Natalia Curupana - Modificado em: 21 dezembro, 2023 18:27
CG_PythonForExcel_Cap01
Por que Python para Excel? | 7

Camada de apresentação
É o que você vê e interage, ou seja, a interface do usuário: os valores das
células A4, B4 e D4 junto aos seus rótulos constroem a camada de apre-
sentação do conversor de moeda.

Camada de negócios
Essa camada cuida da lógica específica do aplicativo: a célula D4 define
como o valor é convertido em USD. A fórmula =A4 * PROCV(B4, F4:G11,
2, FALSE) se traduz em Valor vezes Taxa de câmbio.

Camada de dados

A
Como o nome sugere, essa camada cuida do acesso aos dados: a parte
PROCV da célula D4 faz esse trabalho

R
A camada de dados acessa os dados da tabela de câmbio que inicia na célula F3
e funciona como o banco de dados desse pequeno aplicativo. Se você prestou
bastante atenção, provavelmente notou que a célula D4 aparece em todas as três
ST
camadas: esse aplicativo simples mistura as camadas de apresentação, de negó-
cios e de dados em uma única célula.

Camadas de negócios e dados


O
AM

Camada de apresentação “Banco de dados”


Figura 1-1. currency_converter.xlsx

Não é necessariamente um problema para esse conversor de moeda simples, mas,


muitas vezes, o que começa como um pequeno arquivo do Excel se transforma em
um aplicativo muito maior. Como essa situação pode ser melhorada? A maioria
dos recursos profissionais para desenvolvedores do Excel aconselha você a usar
uma planilha separada para cada camada, na terminologia do Excel geralmente

CG_PythonForExcel.indb 7 22/12/2023 21:11:54


Etapa por Natalia Curupana - Modificado em: 21 dezembro, 2023 18:27
CG_PythonForExcel_Cap01
8 | Python para Excel

chamada de entradas, cálculos e saídas. Muitas vezes, isso é combinado com a


definição de um determinado código de cor para cada camada, por exemplo, um
fundo azul para todas as células de entrada. No Capítulo 11, construiremos um
aplicativo real baseado nessas camadas: o Excel será a camada de apresentação,
enquanto as camadas de negócios e de dados serão movidas para o Python, onde
é muito mais fácil estruturar seu código adequadamente.
Agora que você sabe o que significa a separação de conceitos, descobriremos o
que é o princípio DRY!

Princípio DRY

A
O livro O Programador Pragmático, de Hunt e Thomas (Bookman), popularizou
o princípio DRY: don’t repeat yourself [não se repita, em tradução livre]. Nenhum
código duplicado significa menos linhas de código e menos erros, o que facilita

R
a manutenção do código. Se a sua lógica de negócios estiver nas fórmulas da sua
célula, é praticamente impossível aplicar o princípio DRY, pois não haverá um
mecanismo que permita reutilizá-lo em outra pasta de trabalho. Isso, infeliz-
ST
mente, significa que uma maneira comum de iniciar um novo projeto do Excel é
copiar a pasta de trabalho do projeto anterior ou de um modelo.
Se você escreve VBA, a parte mais comum do código reutilizável é uma função.
Uma função dá acesso ao mesmo bloco de código de várias macros, por exem-
plo. Se você tiver várias funções que usa o tempo todo, talvez queira comparti-
lhá-las entre as pastas de trabalho. O instrumento padrão para compartilhar o
O

código VBA entre as pastas de trabalho são os suplementos, mas os suplementos


VBA não possuem uma maneira robusta de distribuí-los e atualizá-los. Embora a
Microsoft tenha introduzido um armazenamento de suplementos internos do
AM

Excel para resolver esse problema, isso só funciona com suplementos baseados
em JavaScript, portanto não é uma opção para os codificadores VBA. Isso signi-
fica que ainda é muito comum usar a abordagem copiar/colar com VBA: iremos
supor que você precise de uma função spline cúbica no Excel. Essa função é uma
maneira de interpolar uma curva com base em alguns pontos em um sistema de
coordenadas e é frequentemente usada por operadores de renda fixa para derivar
uma curva da taxa de juros para todos os vencimentos com base em algumas
combinações conhecidas de vencimento/taxa de juros. Se você pesquisar por
“Spline Cúbica Excel” na internet, não demorará muito até ter uma página de
código VBA que faça o que deseja. O problema com isso é que, muito comumen-
te, essas funções foram escritas por uma única pessoa, provavelmente com boas
intenções, mas sem documentação formal ou teste. Talvez elas funcionem para
a maioria das entradas, mas e os casos extremos? Se você está negociando uma
carteira de renda fixa multimilionária, quer ter algo que sabe que pode confiar.

CG_PythonForExcel.indb 8 22/12/2023 21:11:54


Etapa por Natalia Curupana - Modificado em: 21 dezembro, 2023 18:27
CG_PythonForExcel_Cap01
Por que Python para Excel? | 9

Pelo menos, é isso que você ouvirá de seus auditores internos quando descobri-
rem de onde vem o código.
O Python facilita a distribuição de código usando um gerenciador de pacotes,
como veremos na última seção deste capítulo. Antes de chegarmos lá, no entanto,
continuaremos com os testes, um dos pilares do desenvolvimento de software
sólido.

Testes
Quando você diz a um desenvolvedor do Excel para testar suas pastas de traba-
lho, ele provavelmente realizará algumas verificações aleatórias: clicará em um

A
botão e verá se a macro ainda faz o que deveria fazer ou alterará algumas entra-
das e verificará se a saída parece razoável. No entanto, é uma estratégia arriscada:
o Excel facilita a introdução de erros difíceis de detectar. Por exemplo, você pode

R
substituir uma fórmula por um valor codificado diretamente. Ou se esquecer de
ajustar uma fórmula em uma coluna oculta.
Quando você diz a um desenvolvedor de software profissional para testar seu có-
ST
digo, ele escreve testes de unidade. Como o nome sugere, é um mecanismo para
testar componentes individuais do programa. Por exemplo, os testes de unidade
garantem que uma única função de um programa opere corretamente. A maioria
das linguagens de programação oferece uma maneira de executar testes de uni-
dade automaticamente. A execução de testes automatizados aumentará drastica-
mente a confiabilidade de sua base de código e dará uma segurança razoável de
O

que você não violará nada que funciona atualmente ao editar seu código.
Se você observar a ferramenta de conversão de moeda na Figura 1-1, poderá es-
crever um teste que verifica se a fórmula na célula D4 retorna corretamente USD
AM

105 com as seguintes entradas: 100EUR como valor e 1,05 como taxa de câmbio
EURUSD. Por que isso ajuda? Suponha que você exclua acidentalmente a célula
D4 com a fórmula de conversão e precise reescrevê-la: em vez de multiplicar o
valor pela taxa de câmbio, você divide por ela — afinal, trabalhar com moedas
pode ser confuso. Ao executar o teste acima, você obterá uma falha no teste, pois
100EUR/1,05 não resultará mais em 105USD, como o teste espera. Assim, você
pode detectar e corrigir a fórmula antes de entregar a planilha aos seus usuários.
Praticamente todas as linguagens de programação tradicionais oferecem uma
ou mais estruturas de teste para escrever testes de unidade sem muito esforço —
mas não o Excel. Felizmente, o conceito de testes de unidade é bastante simples e,
ao conectar o Excel com o Python, você obtém acesso às poderosas estruturas de
teste unitário do Python. Embora uma apresentação mais aprofundada dos tes-

CG_PythonForExcel.indb 9 22/12/2023 21:11:54


Etapa por Natalia Curupana - Modificado em: 21 dezembro, 2023 18:27
CG_PythonForExcel_Cap01
10 | Python para Excel

tes de unidade esteja além do escopo deste livro, convido você a dar uma olhada
na postagem em meu blog,6 na qual eu apresento o tópico com exemplos práticos.
Os testes de unidade geralmente são configurados para serem executados auto-
maticamente quando você envia seu código para o sistema de controle de versão.
A próxima seção explica o que são sistemas de controle de versão e por que eles
são difíceis de usar com arquivos do Excel.

Controle de versão
Outra característica dos programadores profissionais é que eles utilizam um sis-
tema de controle de versão ou controle de fonte. Um sistema de controle de versão

A
[em inglês, version control system — VCS] rastreia as alterações em seu código-
-fonte ao longo do tempo, permitindo que você veja quem alterou o quê, quando
e por que, e permite reverter para versões antigas a qualquer momento. O sistema

R
de controle de versão mais popular hoje é o Git. Ele foi originalmente criado
para gerenciar o código-fonte do Linux e, desde então, conquistou o mundo da
programação — até a Microsoft adotou o Git em 2017 para gerenciar o código-
ST
-fonte do Windows. No mundo do Excel, por outro lado, o sistema de controle
de versão de longe mais popular vem na forma de uma pasta na qual os arquivos
são arquivados assim:
currency_converter_v1.xlsx
currency_converter_v2_2020_04_21.xlsx
currency_converter_final_edits_Bob.xlsx
O

currency_converter_final_final.xlsx

Se, ao contrário desse exemplo, o desenvolvedor do Excel segue determinada


convenção no nome do arquivo, não há nada errado com isso. Mas manter um
histórico de versão de seus arquivos localmente impede você de ter acesso a as-
AM

pectos importantes do controle de fonte com uma colaboração mais fácil, revi-
sões dos colegas, processos de aprovação e logs de auditoria. E, se você deseja
tornar suas pastas de trabalho mais seguras e estáveis, não pode ficar de fora
disso. Mais comumente, os programadores profissionais usam o Git junto com
uma plataforma na Web, como GitHub, GitLab, Bitbucket ou Azure DevOps.
Essas plataformas permitem que você trabalhe com os chamados pull requests
ou merge requests. Eles permitem que os desenvolvedores solicitem formalmen-
te que suas alterações sejam mescladas na base de código principal. Um pull
request oferece as seguintes informações:
• Quem é o autor das alterações.
• Quando foram feitas as alterações.

6 
Disponível em https://www.xlwings.org/blog/unittests-for-microsoft-excel (conteúdo em
inglês).

CG_PythonForExcel.indb 10 22/12/2023 21:11:55


Etapa por Natalia Curupana - Modificado em: 21 dezembro, 2023 18:27
CG_PythonForExcel_Cap01

Você também pode gostar