Blog

Postado em em 7 de agosto de 2021

Integrar Python com Excel e Ler Arquivo com Várias Abas

Nessa aula eu vou te mostrar como você pode integrar Python com Excel para fazer suas análises e ler arquivo com várias abas!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber a planilha que usamos na aula no seu e-mail, preencha:

Resumo

Nessa aula eu vou te mostrar como fazer integração do Python com Excel de duas formas, uma utilizando o Pandas e a outra utilizando o Openpyxl.

Então você vai poder a que melhor se adequa a sua necessidade para poder fazer suas alterações em arquivos de Excel quando for trabalhar com análise de dados.

O que você vai aprender nessa aula:

Como Fazer Integração entre Python e Excel

Você que programa em Python em algum momento já precisou buscar alguma informação ou até mesmo editar um dado no arquivo de Excel, certo?

Pois é, hoje eu vou te mostrar como integrar Python e Excel de duas formas diferentes utilizando a biblioteca Pandas e a biblioteca Openpyxl.

Já vamos te mostrar um exemplo prático utilizando essas duas formas, assim você pode analisar qual é a melhor dependendo da sua necessidade.

Como Integrar Python e Excel

Vamos começar com algumas informações que já estão dentro do arquivo disponível para download.

Nós temos 2 formas de fazer essa integração:

  • Usando o Pandas
    • Mais usada no geral
    • Trata o Excel como uma base de dados
    • Faz o que quiser com o arquivo
    • Pode desfazer a estrutura original do arquivo, caso queira editar
  • Usando o Openpyxl
    • Trata o Excel como uma planilha
    • Edita “como se fosse um VBA”
    • Menos eficiente
    • Mantém mais a estrutura original do arquivo, mas cuidado porque não necessariamente tudo, então é necessário testar

Aqui é uma breve descrição das duas formas que vamos utilizar hoje para que você veja qual vai se adequar melhor a sua necessidade.

Para mostrar essas duas formas nós vamos resolver um desafio, que é o seguinte:

Desafio

  • Temos uma planilha de produtos e serviços. Com o aumento de impostos sobre os serviços, temos que atualiza o preço dos produtos impactados pela mudança
  • Novo multiplicador imposto é de 1.5

Para o primeiro exemplo vamos utilizar o pandas, que é a biblioteca para análise de dados no Python mais utilizada.

# Pandas
import pandas as pd

tabela = pd.read_excel("Produtos.xlsx")
display(tabela)

# Atualizar o multiplicador
tabela.loc[tabela["Tipo"]=="Serviço", "Multiplicador Imposto"] = 1.5

# Fazer a conta do Preço Base Reais
tabela["Preço Base Reais"] = tabela["Multiplicador Imposto"] * tabela["Preço Base Original"]

tabela.to_excel("ProdutosPandas.xlsx", index=False)
Utilizando a biblioteca Pandas

Aqui temos inicialmente a importação da biblioteca pandas seguida da leitura do arquivo em Excel.

Depois utilizamos o display para mostrar a tabela de uma forma mais visual do que o print.

É possível verificar que a planilha nesse caso é simples (para exemplificar melhor), mas o procedimento é o mesmo para planilhas maiores.

Na parte de atualizar o multiplicador nós estamos localizando dentro da planilha, dentro da coluna de Tipo tudo que é igual a Serviço, pois é essa a informação que será atualizada.

Com isso vamos informar que tudo que for Serviço na coluna de Multiplicador Imposto vai receber o valor de 1.5, ou seja, vamos passar de 1.3 para 1.5 de forma automática sem ter que alterar de 1 por 1.

Ou até mesmo ter que fazer essa alteração no próprio Excel, então aqui mesmo já conseguimos fazer esse tratamento de dados.

Feito isso nós vamos multiplicar os valores de Preço Base Original pelo Multiplicador Imposto para poder atualizar a coluna de Preço Base Reais.

Assim teremos os novos valores corretos com o multiplicador de 1.5 ao invés de 1.3.

Tabela após as alterações feitas

Caso queira conferir pode utilizar o display novamente para visualizar a nova tabela e você vai notar que na última linha de código desse bloco nós estamos criando um arquivo de Excel chamado ProdutosPandas.xlsx.

Isso quer dizer que podemos salvar essas alterações em um outro arquivo para não sobrepor as informações que tínhamos anteriormente.

Então conseguimos modificar, atualizar e criar um arquivo com todas as modificações e atualizações necessárias.

Agora vamos para a segunda forma que é utilizando o Openpyxl.

# Openpyxl
from openpyxl import Workbook, load_workbook

planilha = load_workbook("Produtos.xlsx")

aba_ativa = planilha.active

for celula in aba_ativa["C"]:
	if celula.value == "Serviço":
		linha = celula.row
		aba_ativa[f"D{linha}"] = 1.5

planilha.save("ProdutosOpenPy.xlsx")

Nós vamos ter praticamente o mesmo procedimento, mas como informei logo no início, o openpyxl vai funcionar como se fosse VBA.

Inicialmente vamos carregar a planilha, em seguida vamos ativar uma aba específica (nesse caso só temos uma).

E por fim nós vamos utilizar a estrutura de repetição For para verificar todas as células da coluna C.

Dentro dessa estrutura temos a função If que vai verificar se o conteúdo dessa célula é Serviço, em caso positivo vamos pegar o valor da linha e em seguida alterar o valor da célula C + número da linha para 1.5.

Nesse caso em específico não precisamos multiplicar as duas colunas para atualizar os valores, pois o próprio arquivo já tem uma fórmula que faz isso, então não será necessário visto que estamos alterando diretamente no arquivo.

Caso precise fazer esse cálculo é só seguir o mesmo procedimento da estrutura for passando por todas as linhas para fazer essa multiplicação.

Ler Arquivo em Excel com Várias Abas no Python

Nessa aula eu vou te mostrar como você pode ler arquivo em Excel com várias abas para obter exatamente as informações que deseja!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Resumo

Nessa aula eu vou te mostrar como você pode ler arquivo em Excel no Python, mas não é um arquivo qualquer.

É aquele arquivo que tem várias abas, que tem tabelas que não estão logo no início da planilha, que tem mais de uma tabela na mesma aba.

Vou abordar todas essas opções para que você saiba como ler qualquer uma dessas tabelas independentemente de como elas estão dispostas no seu arquivo em Excel.

O que vamos aprender nessa aula para ler arquivo em Excel com várias abas:

Ler Arquivo em Excel com Várias Abas

Para poder ler arquivo Excel no Python nós vamos utilizar a famosa Biblioteca Pandas no Python. Se você ainda não conhece ou sabe muito pouco dessa biblioteca, nós temos um post mais completo sobre ela, basta clicar aqui para acessá-lo!

Com o Pandas Python vamos conseguir fazer a leitura e importação dessas informações para dentro do Python e fazer todos os tratamentos necessários para sua análise de dados.

Mas nessa aula nosso objetivo é te mostrar como você vai ler arquivo Excel no Python em diferentes situações.

Antes de começar a ler planilha específica no Python você precisa ter a biblioteca do Pandas instalada e importá-la para poder usar!

Isso é bem simples, para instalar basta ir até o prompt Anaconda (se estiver utilizando o Jupyter) ou ir ao terminal e digitar pip install pandas.

Para importar vamos utilizar o comando import pandas as pd. Esse pd é para substituir os comandos, então ao invés de sempre ter que escrever pandas só vamos precisar escrever pd para utilizar os comandos dessa biblioteca.

LEITURA PADRÃO

df = pd.read_excel("arquivo.xlsx")
display(df)
Leitura padrão

Aqui temos o código para fazer a leitura padrão de um arquivo em Excel no Pandas Python!

É possível notar que nesse caso temos apenas uma tabela, que é a tabela da primeira aba, então mesmo importando o arquivo que tem várias abas temos apenas uma única tabela.

LEITURA DE ABA ESPECÍFICA (PELO NOME)

df = pd.read_excel("arquivo.xlsx", sheet_name="Planilha2")
display(df)
Leitura de aba específica (pelo nome da aba)

Aqui nós estamos utilizando o sheet_name para indicar qual é o nome da aba que vamos extrair as informações.

Então você já pode começar a ser mais específico para obter exatamente as informações que deseja dentro de um arquivo.

Viu como ler planilha específica no Python é bem simples? Basta informar qual é o nome da planilha (aba) que deseja extrair as informações para começar seu tratamento de dados.

LEITURA DE ABA ESPECÍFICA (PELO ÍNDICE)

df = pd.read_excel("arquivo.xlsx", sheet_name=1)
display(df)
Leitura de aba específica (pelo índice da aba)

Muita das vezes os nomes das abas podem ser diferentes ou até serem modificados, então é útil que você possa também obter as informações que precisa através do índice da aba.

Nesse caso estamos pegando a aba com índice 1, que significa que estamos pegando a segunda aba, pois dentro do Python essas contagens de índices começam em 0.

Então 0 seria a primeira aba e 1 seria a segunda aba. Dessa forma mesmo que o nome da aba mude nós vamos continuar pegando as informações da segunda aba!

Assim estamos selecionando abas do Excel no Python de acordo com o índice que pode ser mais fácil do que inserir o nome caso ele seja alterado com frequência.

SELECIONANDO AS COLUNAS PELO ÍNDICE

df = pd.read_excel("arquivo.xlsx", sheet_name="Planilha3", usecols=[5,6])
display(df)
Selecionando colunas pelo índice

Como você deve ter notado, na aba Planilha3 do nosso arquivo em Excel nós temos 2 tabelas, e nesse caso estamos selecionando as informações da segunda, que estão nas colunas 5 e 6 (novamente o índice começa do 0).

Então aqui estamos selecionando colunas do Excel no Python pelo seu número, que seriam as colunas F e G.

SELECIONANDO AS COLUNAS PELO NOME

df = pd.read_excel("arquivo.xlsx", sheet_name="Planilha3", usecols="A,C:D")
display(df)
Selecionando colunas pelo nome da coluna

Da mesma forma que fizemos a seleção das abas pelo índice e pelo nome, nós podemos fazer o mesmo em relação as colunas do Excel.

Então podemos tanto selecioná-las pelo índice quanto pelo próprio nome da coluna que nem fazemos dentro do Excel.

OBS: Nesse caso você vai notar que temos várias informações escrito NaN isso quer dizer que não temos valores nessas células. E se você observar de fato nas colunas C e D não temos nenhuma informação.

BUSCANDO TODAS AS INFORMAÇÕES DE UM ARQUIVO

df = pd.read_excel("arquivo.xlsx", sheet_name=None)
display(df)
display(df['Planilha1'])
Buscando todas as informações de um arquivo

Aqui nós temos uma maneira para obter todas as informações que um arquivo possui, então com o mesmo código que já utilizamos, você pode notar que o Python vai mostrar todas as tabelas que temos com um “nome”.

Em seguida basta utilizar esse nome para identificar qual dessas tabelas vamos trazer para dentro do Python para fazer o tratamento/análise de dados.

Essa parte é bem interessante, pois você vai conseguir visualizar todas as informações que têm no arquivo como um todo e não somente de uma única aba.

Dessa forma você vai poder ver essas informações e escolher exatamente a informação que precisa extrair para sua análise!

BUSCAR INFORMAÇÕES FORA DA CÉLULA A1

df = pd.read_excel("arquivo.xlsx", sheet_name=3, skiprows=7, usecols=[6,7])
display(df)
Ler Arquivo em Excel com Várias Abas

É bem comum todas as tabelas começarem pela célula A1 do Excel, mas é possível que alguns casos você encontre tabelas que estão deslocadas e para isso esse simples código vai te auxiliar.

Aqui temos duas seleções que já utilizamos anteriormente, a seleção da aba pelo índice e a seleção de colunas.

O que é novo é o skiprows que se você traduzir seria como “pular linha”, ou seja, o Python vai ignorar essas linhas na hora de ler essa informação.

Dessa forma vai desconsiderar 7 linhas que é exatamente a quantidade de linhas vazias que temos acima da tabela e vai considerar a partir da oitava linha.

Como já temos a especificação das colunas vamos obter a tabela exatamente como precisamos para fazer o tratamento de dados.

BUSCANDO APENAS INFORMAÇÕES DESEJADAS

df = pd.read_excel("arquivo.xlsx", sheet_name=4, nrows=11)
display(df)
Ler Arquivo em Excel com Várias Abas

Esse exemplo é bem parecido com o exemplo anterior, só que aqui vamos estar limitando a quantidade de informações que vamos extrair.

Nessa aba por exemplo temos duas tabelas uma embaixo da outra, e queremos pegar a penas a primeira, só que precisamos limitar a quantidade linhas, caso contrário o Python vai trazer as duas tabelas juntas.

Isso quer dizer que ele vai trazer as duas tabelas juntas como se fossem uma única tabela, e dessa forma ficaria mais difícil sua análise de dados.

Conclusão

Nessa aula eu te mostrei como fazer a integração do Python com o Excel de duas formas distintas utilizando o Pandas e o Openpyxl.

E ainda te mostrei como ler arquivos em Excel com várias abas para que você consiga trabalhar com o arquivo Excel completo, podendo pegar qualquer uma das planilhas.

Agora você já pode fazer suas análises de dados e tratamento de dados utilizando esses dois métodos para trabalhar com os arquivos em Excel junto com o Python!

Como toda programação requer prática é importante que você pratique com o arquivo que deixamos disponível e arquivos pessoais também para garantir que fixou o conteúdo!

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?