E dição
FCA – Editora de Informática
Av. Praia da Vitória, 14 A – 1000-247 Lisboa
Tel: +351 213 511 448 fca@fca.pt www.fca.pt
d istribuição
Lidel – Edições Técnicas, Lda.
Rua D. Estefânia, 183, R/C Dto. – 1049-057 Lisboa
Tel: +351 213 511 448 lidel@lidel.pt www.lidel.pt
L ivraria
Av. Praia da Vitória, 14 A – 1000-247 Lisboa
Tel: +351 213 541 418 livraria@lidel.pt
Copyright © 2024, FCA – Editora de Informática
® Marca registada da FCA PACTOR Editores, Lda.
ISBN edição impressa: 978-972-722-936-9 1.ª edição impressa: maio de 2024
Paginação: Carlos Mendes
Impressão e acabamento: Cafilesa – Soluções Gráficas, Lda. – Venda do Pinheiro
Depósito Legal n.º 531044/24
Capa: José M. Ferrão – Look-Ahead
Todos os nossos livros passam por um rigoroso controlo de qualidade, no entanto aconselhamos a consulta periódica do nosso site (www.fca.pt) para fazer o download de eventuais correções.
Não nos responsabilizamos por desatualizações das hiperligações presentes nesta obra, que foram verificadas à data de publicação da mesma.
Os nomes comerciais referenciados neste livro têm patente registada.
Reservados todos os direitos. Esta publicação não pode ser reproduzida, nem transmitida, no todo ou em parte, por qualquer processo eletrónico, mecânico, fotocópia, digitalização, gravação, sistema de armazenamento e disponibilização de informação, sítio Web, blogue ou outros, sem prévia autorização escrita da Editora, exceto o permitido pelo CDADC, em termos de cópia privada pela AGECOP –– Associação para a Gestão da Cópia Privada, através do pagamento das respetivas taxas.
© FCA ÍNDICE Prefácio ........................................................................................................................... XI Nota do Autor ................................................................................................................. XIII Sobre o Livro ................................................................................................................... XV CAPÍTULO 1 A Linguagem de Programação Python ............................................................. 1 1.1. Instalação e Funcionamento ......................................................................... 3 1.1.1. Python em Diferentes Sistemas Operativos ..................................... 3 1.1.2. Ambientes de Programação ............................................................. 8 1.2. Fundamentos da Programação em Python 11 1.2.1. Objetos e Tipos de Dados 11 1.2.2. Variáveis ............................................................................................ 19 1.2.3. Controlo ............................................................................................ 22 1.2.4. Funções 28 1.2.5. Decorators 31
Módulos ............................................................................................ 32 1.2.7. Acesso a Ficheiros............................................................................ 33 1.3. Estruturas de Dados 39 1.3.1. Listas 40 1.3.2. Tuplos 41 1.3.3. Dicionários ........................................................................................ 42 1.4. Erros e Exceções .......................................................................................... 45 Exercícios Resolvidos ............................................................................................ 48 Bibliografia 52
1.2.6.
3.2.
Python com Excel VIII CAPÍTULO 2 Introdução às Bibliotecas Científicas ................................................................. 53 2.1. Biblioteca NumPy 55 2.1.1. NumPy Array 56 2.1.2. Indexar Matrizes 59 2.1.3. Funções Universais .......................................................................... 62 2.2. Biblioteca Pandas ......................................................................................... 63 2.2.1. Estruturas de Dados Pandas ............................................................ 64 2.2.2. Indexação e Seleção 70 2.2.3. Concatenação e Junção ................................................................... 73 2.2.4. Funções de Agregação ..................................................................... 79 2.2.5. Pivot Tables 86 Exercícios Resolvidos 87 Bibliografia 94 CAPÍTULO 3 Manipulação de Ficheiros Excel ............................................................................ 95 3.1. Funções Pandas para Excel ......................................................................... 97 3.1.1. Função read_excel ........................................................................... 98 3.1.2. Função to_excel 106 3.1.3. Diferentes Formatos Excel................................................................ 111 3.1.4. Ficheiros CSV ................................................................................... 113 3.1.5. Vantagens e Desvantagens .............................................................. 114
Bibliotecas OpenPyXL e XlsxWriter 115
OpenPyXL 115 3.2.2. XlsxWriter .......................................................................................... 130 3.3. Projeto “Python & Excel I” ............................................................................ 156 Bibliografia ............................................................................................................. 163 CAPÍTULO 4 Automação da Aplicação Excel.............................................................................. 165 4.1. Biblioteca xlwings 167 4.1.1. Objetos Excel.................................................................................... 167 4.1.2. Operações a Ficheiros Excel ............................................................ 169
Comparação com VBA 173
3.2.1.
4.1.3.
4.3.
Índice IX
Excel como Frontend .................................................................................... 174 4.2.1. Excel Add-in ..................................................................................... 174 4.2.2. Função RunPython 176 4.2.3. Distribuição de Projetos 180 4.2.4. Configurações .................................................................................. 182
4.2.
Funções Personalizadas ............................................................................... 184
User Defined Functions 184
xlwings Decorators 186 4.3.3. User Defined Functions Debugging .................................................. 188 4.4. Projeto “Python & Excel II”............................................................................ 189 Bibliografia ............................................................................................................. 192 Considerações Finais 193 Índice Remissivo 195 © FCA
4.3.1.
4.3.2.
PREFÁCIO
Como profissional de retalho com mais de 20 anos de experiência, tenho observado de perto a evolução dos sistemas de IT no desenvolvimento do negócio e no aumento da complexificação do mesmo pelas capacidades que estes sistemas permitem. A sua importância no desenvolvimento do negócio de retalho é, pois, indiscutível e fundamental.
Esses sistemas revolucionaram a forma como as empresas gerem as suas operações, fornecendo uma visão abrangente e em tempo real de todas as facetas do negócio. Desde a gestão de inventário até à análise de vendas e ao acompanhamento do comportamento do cliente, os sistemas de informação proporcionam uma base sólida de dados, que antes não estava disponível de forma rápida e acessível.
Essa transformação permite que os gestores tomem decisões mais fundamentadas e menos baseadas na intuição. Com acesso a dados detalhados e análises precisas, as decisões estratégicas são agora impulsionadas por informações concretas e insights acionáveis. Isso não só aumenta a eficiência operacional e a rentabilidade, como também ajuda as empresas a adaptarem-se mais rapidamente às mudanças no mercado e às demandas dos consumidores.
Além disso, os sistemas de informação capacitaram os retalhistas a adotar uma abordagem mais proativa e orientada para o cliente. Ao compreenderem melhor as preferências e necessidades dos consumidores por meio dos dados, podem personalizar a experiência de compra, melhorar a fidelização e impulsionar o crescimento do negócio a longo prazo.
Em suma, os sistemas de informação mudaram a forma como o retalho é gerido, bem como revolucionaram o modo como as empresas interagem com os seus clientes e se posicionam no mercado competitivo atual.
No presente cenário do retalho, o Python emergiu como uma ferramenta crucial, sendo utilizado pelas equipas de analistas e developers para dar suporte aos compradores e gestores de categoria. Esta colaboração entre diferentes áreas permite navegar, entre outras, nas complexidades do comportamento do consumidor, gestão de inventário e tomada de decisões
© FCA
estratégicas de forma mais eficaz. Ao aproveitar o poder do Python, é possível desbloquear insights acionáveis, otimizar operações e impulsionar o crescimento do negócio.
O Python facilita a análise de dados e a modelação preditiva, permitindo aos compradores e gestores de categoria aprofundar-se nas tendências de vendas, preferências dos clientes e dinâmicas de mercado. Munidos deste conhecimento, podem tomar decisões informadas sobre sortidos de produtos, estratégias de preços e campanhas promocionais, aumentando, assim, a rentabilidade e a satisfação do cliente.
A colaboração entre as equipas de analistas, developers, compradores e gestores de categoria promove uma cultura de inovação e colaboração dentro da organização. Ao partilharem as melhores práticas, desenvolverem soluções personalizadas e aproveitarem as bibliotecas de código aberto, podem autoinspirar-se e explorar novas oportunidades.
Em última análise, a utilização estratégica do Python por parte das equipas tem um efeito de cascata por toda a empresa. Fomenta uma mentalidade orientada para os dados, promove agilidade e alimenta a melhoria contínua, impulsionando a organização a adaptar-se, prosperar e manter-se à frente no dinâmico cenário do retalho.
Contributos como este livro são, portanto, fundamentais para inspirar e formar profissionais de retalho na nova era de gestão.
Python com Excel XII
Nuno Lima Natário Commercial Head Worten
NOTA DO AUTOR
Formei-me em Engenharia Informática pelo Instituto Superior Técnico e, como Engenheiro, o meu trabalho resume-se a resolver problemas e otimizar soluções usando tecnologia. Tenho o hábito de estar constantemente a observar e identificar falhas no que me rodeia e, consequentemente, possíveis soluções para essas falhas, quer no trabalho quer na vida pessoal, tentando explorá-las ao máximo.
Durante o meu mestrado em Computer Science and Engineering, obtive uma bolsa de investigação no Laboratório Nacional de Engenharia Civil (LNEC), no âmbito de um projeto relacionado com a análise dos dados dos transportes públicos de Lisboa. No fim dessa bolsa, quase prossegui para um doutoramento em Sistemas de Informação, mas senti a necessidade de aplicar os meus conhecimentos no ambiente empresarial.
Entrei, então, para a empresa de retalho de eletrónica Worten, como Engenheiro de Dados da área comercial. Desempenhava tarefas sobre múltiplas fontes heterogéneas de dados, tais como ficheiros Excel, CSV, Access, bases de dados relacionais, data warehouses, entre outras, usando variadas ferramentas que permitiam manipular grandes conjuntos de dados. Um dos meus primeiros projetos foi melhorar um antigo processamento de contas feito em Excel e VBA, que demorava algum tempo a executar e era pouco robusto e propenso a falhas, pois, caso alguma coisa corresse mal, era necessário executar o processo todo outra vez. Como já tinha trabalhado com Python noutros projetos, e pelo facto de ser atualmente uma linguagem de programação bastante popular, optei por reconstruir o processo na totalidade, usando essa linguagem e algumas bibliotecas que permitiam interagir com o Excel. O projeto foi bem-sucedido e melhorou bastante o fluxo de trabalho dos colaboradores que utilizavam esse processo.
Surgiram-me, depois, projetos semelhantes, os quais resolvi aplicando as mesmas soluções, identificando um padrão de necessidade na empresa: libertar os colaboradores de tarefas de Excel quotidianas simples, mas demoradas, automatizando-as com Python. E se numa empresa com a dimensão da Worten existia esta necessidade, provavelmente, tal também ocorreria noutras empresas.
Uma vez que a bibliografia sobre este tópico era limitada, decidi partilhar esta prática e o meu conhecimento no livro que agora apresento.
Carlos Lemonde
© FCA
SOBRE O LIVRO
PIPELINE DE DADOS
O termo “data” (do inglês, que significa “dados”) é frequentemente usado de forma genérica, sem sabermos exatamente ao que se refere, em expressões como “big data”, “dataset”, “data science”, “data mining”, entre outras. Costumam ser utilizadas de forma intercambiável, apontando para um significado comum: um agrupamento de informação. Embora todas estas palavras estejam correlacionadas com o facto de usarem dados como paradigma central, definem conceitos distintos. Os dados que usamos, seja no trabalho ou na vida pessoal, podem ser enquadrados em três categorias, consoante o seu nível de organização:
• Dados não estruturados – sem uma organização aparente (e.g., Portable Document Format – PDF, imagens, vídeos, emails);
• Dados semiestruturados – demonstram um padrão (e.g., Excel, Comma-separated Values – CSV, Extensible Markup Language – XML, JavaScript Object Notation – JSON);
• Dados estruturados – definidos por um modelo e formato (e.g., base de dados).
Se visualizarmos uma entidade, seja uma empresa, uma organização ou até mesmo um indivíduo, esta consome informação frequentemente e com variados volumes. Os dados consumidos provêm de fontes heterogéneas e podem ou não ser estruturados. É feito um processamento dos mesmos, para que, no fim, tenham um formato comum e consistente, fornecendo uma visão holística das operações do negócio. A qualidade da integração dos dados e da subsequente análise dos mesmos é essencial para que se tomem as melhores decisões possíveis pela entidade em causa.
A Figura 1 ilustra esta abstração, no caso de uma empresa que processa e analisa os dados de várias fontes, tais como clientes, fornecedores e vendas, e toma decisões com base nesses dados, com o propósito de minimizar os custos e maximizar o lucro.
© FCA
Fontes de dados Dados
Clientes
Fornecedores
Empresa
Extração e transformação Análise
Tomada de decisão
Vendas (POS)
Figura 1
Percurso dos dados numa empresa
Ao longo dos anos, tem havido um crescimento exponencial no volume de dados manuseado pelas empresas, devido, sobretudo, à informatização massiva da nossa sociedade e ao rápido desenvolvimento tecnológico. Por exemplo, o que há uns anos era referido como big data (i.e., grandes volumes de dados) é, atualmente, comum, com empresas e instituições a gerarem um conjunto de dados com milhões de linhas. O termo big data vai-se expandindo, consoante a necessidade de processamento de dados, e as tecnologias de informação que suportam esses dados vão acompanhando a tendência. Existem inúmeras ferramentas para integrar e analisar eficientemente todos estes dados. Em termos de integração e transformação de dados, temos, por exemplo, o Microsoft SQL Server Integration Services (SSIS), o Pentaho Data Integration (PDI) e o Oracle Data Integrator (ODI). Para a análise de dados, temos ferramentas OnLine Analytical Processing (OLAP), que consomem os dados de uma data warehouse, como o Microsoft SQL Server Analysis Services (SSAS) e o Oracle OLAP. Existem também aplicações de visualização de dados, muitas vezes denominadas aplicações de Business Intelligence, por exemplo, o Power BI e o Tableau. Ao longo deste pipeline de dados, onde se encontra, então, a aplicação Microsoft Excel?
MICROSOFT EXCEL
O Microsoft Excel é, principalmente, um software de folhas de cálculo (i.e., spreadsheets), e inicialmente foi usado como tal, fornecendo uma grelha como interface, na qual os utilizadores podem organizar e manipular dados através de células, linhas e colunas, realizando cálculos sobre estes. A aplicação teve, ao longo dos anos, uma evolução significativa em termos de novas funcionalidades e ferramentas disponíveis para o utilizador, portanto, hoje em dia, a sua categorização depende do contexto em que é usada. O Excel pode ser uma
Python com Excel XVI
ferramenta de Business Intelligence, em que os utilizadores criam gráficos, diagramas e tabelas dinâmicas (i.e., pivot tables) para analisar e visualizar os dados. Também pode ser uma ferramenta de integração de dados, graças a funcionalidades como Power Query e Power Pivot, que permitem aos utilizadores importar e transformar os seus dados. O Excel é, ainda, uma ferramenta de automação, com a incorporação do ambiente de programação do Visual Basic for Applications (VBA), que possibilita que os utilizadores desenvolvam scripts e macros para automatizar tarefas repetitivas ou criar funcionalidades.
O Excel, não sendo um sistema de armazenamento de informação tradicional, no sentido de uma base de dados ou uma data warehouse, nem tendo sido sequer projetado para esse propósito, serve muitas vezes como tal, pois os utilizadores armazenam os seus dados de maneira organizada entre um conjunto de ficheiros e folhas de cálculo, estando sujeitos a uma carência quer de uma concorrência robusta, quer de um controlo de acesso restrito. O Excel dispõe de muitas mais capacidades, além das que são aqui mencionadas, e certamente irá disponibilizar outras no futuro. Embora seja uma ferramenta poderosa da Microsoft, pode não oferecer o mesmo nível de escalabilidade e de análise avançada que certas aplicações especializadas em Business Intelligence oferecem. No entanto, o Excel continua a ser uma ferramenta amplamente usada para tarefas relacionadas com dados, quer em empresas, quer em organizações de diferentes setores.
PORQUÊ PYTHON COM EXCEL?
Muitas empresas ainda têm grande parte dos seus dados armazenada em ficheiros Excel, com processos antigos de VBA a desempenharem as tarefas quotidianas para o normal funcionamento das empresas. Porém, são cada vez menos os profissionais com conhecimento suficiente em VBA para alterar ou inovar esses processos. Python, em contrapartida, é uma linguagem de programação de uso geral e tem vindo a tornar-se bastante popular nas últimas duas décadas, com cerca de 15 milhões de programadores em todo o mundo (em 2022). Foi criada pelo holandês Guido van Rossum, no início dos anos 90 do século xx, como descendente da linguagem de programação ABC, assente nos seguintes princípios:
• Legibilidade (readibility) – a sua sintaxe promove uma leitura fácil e intuitiva do código;
• Simplicidade (simplicity) – a linguagem Python prioriza a simplicidade e a clareza através de uma sintaxe descomplicada, permitindo uma aprendizagem rápida por parte dos iniciantes;
• Versatilidade (versatility) – com Python, podemos desenvolver desde simples scripts até aplicações complexas de grande escala.
Sobre o Livro XVII
© FCA
O crescimento da utilização desta linguagem de programação deveu-se também ao facto de haver uma grande comunidade de programadores que estão constantemente a contribuir com novas bibliotecas e funcionalidades, criando, assim, um ecossistema rico de desenvolvimento. A linguagem de programação Python tem tido um grande reconhecimento nas áreas de análise de dados e de inteligência artificial, tornando-se numa das ferramentas cruciais da computação científica. A estrutura tabular do Excel e a sua capacidade de armazenar, analisar e visualizar dados combinam naturalmente com as funcionalidades científicas da linguagem Python.
ORGANIZAÇÃO DO LIVRO
Uma compreensão da organização do conteúdo do livro é fundamental para maximizar a aprendizagem em cada capítulo. Segue-se uma descrição geral de como o livro está estruturado:
CAPÍTULO 1: A LINGUAGEM DE PROGRAMAÇÃO PYTHON
Apresentação da linguagem de programação Python, percorrendo os respetivos fundamentos e funcionalidades específicas, que vão permitir ao leitor desenvolver programas em Python que interajam com Excel. O final do capítulo apresenta um conjunto de exercícios (com soluções) para o leitor consolidar os conhecimentos que adquiriu.
CAPÍTULO 2: INTRODUÇÃO ÀS BIBLIOTECAS CIENTÍFICAS
Introdução às bibliotecas científicas NumPy e Pandas, utilizadas na construção de processos de integração e análise de dados. Ao longo do capítulo, é introduzido um ecossistema de estruturas de dados cruciais na manipulação eficiente dos dados, de entre as quais as matrizes NumPy, Series e DataFrames. O leitor poderá aplicar os conhecimentos que obteve, completando os exercícios no final do capítulo.
CAPÍTULO 3: MANIPULAÇÃO DE FICHEIROS EXCEL
Este capítulo ensina o leitor a ler, escrever e criar ficheiros Excel, usando as bibliotecas Pandas, OpenPyXL e XlsxWriter, com a particularidade de estas manipularem os ficheiros diretamente em disco, não sendo necessária a presença da aplicação Excel, pelo que funcionam em qualquer sistema que suporte a linguagem Python, incluindo Windows, macOS e Linux.
Python com Excel XVIII
No final do capítulo, é apresentado ao leitor um projeto completo, que inclui a extração, transformação e visualização de dados de um caso prático.
CAPÍTULO 4: AUTOMAÇÃO DA APLICAÇÃO EXCEL
Apresentação da biblioteca xlwings, focada na automação da própria aplicação Excel, sendo necessário que o leitor tenha a aplicação instalada localmente. O leitor vai aprender a criar programas interativos semelhantes ao VBA, desde executar um script Python, através de um botão numa página Excel, até à criação de User Defined Functions (UDF) em Python. O capítulo termina com um segundo projeto completo de um caso prático.
PÚBLICO-ALVO
O principal público-alvo consiste em profissionais e alunos das áreas das tecnologias de informação, gestão e engenharia que pretendem desenvolver competências na área do desenvolvimento de software relacionado com a integração e o processamento de dados, utilizando a linguagem Python. É recomendável ter conhecimentos básicos de programação, mas estes não são necessários para tirar o máximo proveito deste livro, pois é proporcionada ao leitor uma aprendizagem gradual das competências, numa linguagem clara e precisa.
O livro foi elaborado a pensar, por um lado, em profissionais técnicos e alunos de engenharia que queiram trazer o formato Excel para as suas competências avançadas de programação e, por outro lado, em profissionais da área da gestão e contabilidade, que utilizam diariamente o Excel e desejam automatizar as suas tarefas, mesmo sem terem um conhecimento técnico prévio.
MATERIAL DE APOIO
Todos os ficheiros referidos ao longo do livro, juntamente com o material de apoio e o código-fonte dos projetos, estão disponíveis para download no site da editora, em www.fca.pt
SOFTWARE UTILIZADO
O presente livro foi escrito durante o ano de 2023 e aborda várias tecnologias e bibliotecas que estão em constante desenvolvimento. A sintaxe da linguagem Python e as funções das
Sobre o Livro XIX
© FCA
bibliotecas utilizadas poderão sofrer alterações ou até mesmo ser descontinuadas (do inglês “deprecated”). A Tabela 1 indica as versões das principais ferramentas utilizadas neste livro.
Tabela 1
Versões das ferramentas utilizadas
Linguagens de Programação
BIBLIOGRAFIA
Loureiro, H. (2005). Excel macros & VBA. FCA. McKinney, W. (2022). Python for data analysis. O’Reilly Media, Inc. Python Software Foundation. (n.d.). Python docs https://www.python.org/doc/ Vaisman, A., & Zimányi, E. (2014). Data warehouse systems: Design and implementation. Springer.
Python com Excel XX
Versões Python 3.9.12 VBA 7.1
Versões Microsoft Excel 16.0 Visual Studio Code 1.79.1
Versões NumPy 1.24.3 Pandas 1.5.2 OpenPyXL 3.0.10 XlsxWriter 3.1.0 xlwings 0.29.1
Aplicações
Bibliotecas
3 MANIPULAÇÃO DE FICHEIROS EXCEL
INTRODUÇÃO
Após consolidados os fundamentos de programação Python e as suas bibliotecas científicas, apresentamos, neste capítulo, um conjunto de ferramentas que vão permitir ao leitor aceder e modificar ficheiros Excel através de programas simples, sem a necessidade de ter a aplicação Excel instalada. O presente capítulo aprofunda os conhecimentos da biblioteca Pandas, com a apresentação das suas funções para ler e escrever ficheiros Excel, e depois introduz as bibliotecas OpenPyXL e XlsxWriter, que vêm complementar o Pandas em funcionalidades do Excel que este tem em falta.
3.1. FUNÇÕES PANDAS PARA EXCEL
A biblioteca Pandas contém um conjunto de funções de alto nível para ler e escrever informação tabular de vários tipos de ficheiros, conhecida como a interface input/output (I/O API).
A Tabela 3.1 resume esse conjunto de funções e o tipo de ficheiros que cada uma suporta.
Tabela 3.1
Funções de leitura e escrita da biblioteca Pandas
Tipo de Dados
Texto
Formato Função de Leitura Função de Escrita
CSV read_csv to_csv
TXT de largura fixa read_fwf –
JSON read_json to_json
HTML read_html to_html
LaTeX – to_latex
XML read_xml to_xml
clipboard read_clipboard to_clipboard (continua)
© FCA
(continuação)
Tipo de Dados
Formato Função de Leitura Função de Escrita
Excel read_excel to_excel
ODF read_excel –
HDF5 read_hdf to_hdf
Feather read_feather to_feather
Parquet read_parquet to_parquet
Binário
SQL
ORC read_orc to_orc
Stata read_stata to_stata
SAS read_sas –
SPSS read_spss –
Python Pickle read_pickle to_pickle
SQL read_sql to_sql
Google BigQuery read_gbq to_gbq
Estas funções têm parâmetros em comum e outros mais específicos para o tipo de dados que processam. No caso da operação de leitura, devolvem um objeto Pandas, tipicamente uma DataFrame; no caso da escrita, transformam a informação contida numa DataFrame. O uso da maior parte destas funções está fora do âmbito deste livro, sendo que se poderá aceder a informação adicional sobre este tópico na documentação da biblioteca Pandas, em https:// Pandas.pydata.org/docs/. Esta secção vai focar-se nas funções read_excel e to_excel, que, como os nomes indicam, servem, respetivamente, para ler e escrever ficheiros Excel. Também serão abordadas as funções read_csv e to_csv nesta secção, pelo facto de os ficheiros com a extensão .csv serem usados na aplicação Excel.
3.1.1. FUNÇÃO READ_EXCEL
A biblioteca Pandas dispõe de uma função para ler ficheiros Excel, a função read_excel, que suporta os ficheiros do tipo .xls, .xlsx, .xlsm, .xlsb, .odf, .ods e .odt. Esta função recebe o nome de um ficheiro Excel existente e devolve o seu conteúdo sob a forma de uma DataFrame.
OPERAÇÃO DE LEITURA
Como exemplo, usaremos o ficheiro “funcionários.xlsx”, que descreve os dados de funcionários de uma empresa fictícia. A Figura 3.1 mostra algumas linhas desse documento.
Python com Excel 98
Figura 3.1
Amostra do ficheiro “funcionários.xlsx”
Sendo o Pandas a biblioteca a usar, temos de importar o seu módulo: import Pandas as pd
Se o ficheiro estiver localizado no diretório do programa Python, só temos de indicar o seu nome na função read_excel, com a extensão no parâmetro io. Caso contrário, teríamos de colocar o caminho completo do ficheiro:
df = pd.read_excel(io=‘funcionários.xlsx’)
O resultado é uma DataFrame com as mesmas colunas da tabela do Excel, mas com índices próprios a começar em 0 (Figura 3.2).
Figura 3.2
DataFrame resultante da função read_excel
O ficheiro que usámos tem uma tabela bem estruturada que começa na primeira célula – A1. Porém, na realidade, isso nem sempre acontece, e a informação contida nos ficheiros pode estar bastante desorganizada. Se a tabela no ficheiro “funcionários.xlsx” estivesse posicionada noutra célula, por exemplo, na célula B4, obteríamos, ao executar da mesma forma a função read_excel, uma DataFrame sem leitura útil para o utilizador, exemplificado pela Figura 3.3.
Manipulação de Ficheiros Excel 99
© FCA
4 AUTOMAÇÃO DA APLICAÇÃO EXCEL
INTRODUÇÃO
Neste percurso de aprendizagem, vimos que tarefas comuns em ficheiros Excel podem ser automatizadas correndo algumas linhas de código Python juntamente com as bibliotecas Pandas, OpenPyXL e XlsxWriter. Neste capítulo, damos um passo em frente e abordamos como manipular a própria aplicação Excel, em vez de escrevermos (ou lermos) diretamente os ficheiros Excel. Começamos por introduzir a biblioteca xlwings, capaz deste tipo de automação. Depois, demonstramos como usar o Excel como interface gráfica de um programa Python. Por fim, explicamos como criar funções Python para serem chamadas dentro do próprio Excel.
4.1. BIBLIOTECA XLWINGS
Uma das características do xlwings é poder servir como substituição direta do VBA, permitindo interagir com a aplicação Excel usando Python, quer em Windows, quer em macOS.
A biblioteca xlwings requer, no mínimo, a versão 3.8 do Python e pode ser instalada pelo ambiente Anaconda, como temos vindo a fazer com as outras bibliotecas:
pip install xlwings # ou
conda install xlwings
4.1.1.
OBJETOS EXCEL
A estrutura hierárquica dos objetos Excel, abordada no Capítulo 3 e apresentada pela Figura 3.21, é igualmente aplicada pela biblioteca xlwings na sua representação dos objetos Excel.
A Tabela 4.1 descreve esses objetos e respetivas classes do xlwings. Ao contrário das outras bibliotecas Python para Excel, o xlwings permite manipular diretamente a aplicação Excel, daí esta biblioteca ter uma representação abstrata da instância do Excel: xw.App
© FCA
Tabela 4.1
Objetos Excel em xlwings
Objeto Excel Classe xlwings
Aplicação App
Livro (Workbook) Book
Página (Worksheet) Sheet
Células (Range) Range
Descrição
Corresponde a uma instância da aplicação Excel e contém uma coleção de livros Excel.
Representa um livro Excel e contém uma coleção de páginas.
Representa uma página Excel e permite o acesso às células que a compõem.
Representa uma célula ou um intervalo de células.
O seguinte código exemplifica um percurso ao longo desta hierarquia de objetos Excel e imprime a representação textual dos objetos acedidos:
import xlwings as xw
# abrir uma instância do Excel, cria logo um livro Excel app = xw.App() print(app.books)
>> Books([<Book [Book1]>])
# aceder ao livro Excel wb = app.books[0] print(wb.sheets)
>> Sheets([<Sheet [Book1]Sheet1>])
# aceder a uma folha de cálculo ws = wb.sheets[0]
# aceder e editar valores nas células
ws.range(“A1”).value = [[0,1],[2,3]] print(ws.range(“A1:B2”))
>> <Range [Book1]Sheet1!$A$1:$B$2>
Neste exemplo, acedemos ao livro Excel através do objeto App, que está no topo da hierarquia. No entanto, podemos criar ou aceder a um Workbook chamando diretamente a classe Book:
# cria um novo livro Excel wb = xw.Book()
# acede a um livro Excel existente wb = xw.Book(r”Documentos\vendas.xlsx”)
O objeto App é particularmente útil quando queremos abrir várias instâncias do Excel e distribuir tarefas entre as mesmas ou quando precisamos que a aplicação execute em background,
Python com Excel 168