Olá pessoal,
Como alguém com experiência prévia em R, estou bastante acostumado com a velocidade de carregamento de arquivos .xlsx
através do pacote readxl
. Recentemente, ao trabalhar com um arquivo grande no Python (pandas.read_excel
), estranhei o tempo consideravelmente maior para leitura do mesmo tipo de arquivo:
import pandas as pd
import time
t0 = time.perf_counter()
emissoes_gases = pd.read_excel(
"dados/1-SEEG10_GERAL-BR_UF_2022.10.27-FINAL-SITE.xlsx",
sheet_name="GEE Estados"
)
t1 = time.perf_counter()
elapsed = t1 - t0
print(f"Tempo total: {elapsed:.3f} s")
Tempo com pandas.read_excel
(engine padrão):
$ python teste.py
Tempo total: 42.017 s
Enquanto no R, usando readxl
, o mesmo arquivo foi carregado bem mais rápido:
library(readxl)
t0_carga <- Sys.time()
emissoes_gases <-
read_excel("dados/1-SEEG10_GERAL-BR_UF_2022.10.27-FINAL-SITE.xlsx",
sheet = "GEE Estados")
t1_carga <- Sys.time()
tempo_total_carga <- t1_carga - t0_carga
print(tempo_total_carga)
$ Rscript teste.R
Time difference of 5.053 secs
Isso me chamou atenção, já que vinha de um ambiente mais rápido nesse aspecto. Porém, isso me motivou a investigar alternativas dentro do ecossistema Python — e encontrei uma solução.
A alternativa performática: calamine
Instalei a biblioteca python-calamine
, que é uma interface Python para o motor Rust calamine
, usado para ler planilhas de forma muito eficiente.
Basta especificar o parâmetro engine="calamine"
na função pd.read_excel()
:
# Instalei primeiro:
pip install python-calamine
import pandas as pd
import time
t0 = time.perf_counter()
emissoes_gases = pd.read_excel(
"dados/1-SEEG10_GERAL-BR_UF_2022.10.27-FINAL-SITE.xlsx",
sheet_name="GEE Estados",
engine="calamine"
)
t1 = time.perf_counter()
print(f"Tempo total: {t1 - t0:.3f} s")
Resultado final:
$ python teste_calamine.py
Tempo total: 7.176 s
Agora o desempenho ficou bem próximo do que eu via no R, o que ajuda a manter a produtividade dentro do Python.
Considerações
O objetivo dessa postagem não é dizer que o R é melhor que o Python, ou vice-versa, mas sim compartilhar minha experiência inicial e uma solução prática que pode ser útil para quem também lida com grandes planilhas Excel no dia a dia.