Eu tenho um arquivo grande de planilha (.xlsx) que estou processando usando pandas python. Acontece que eu preciso de dados de duas guias nesse arquivo grande. Uma das guias possui uma tonelada de dados e a outra são apenas algumas células quadradas.
Quando uso pd.read_excel () em qualquer planilha, parece-me que o arquivo inteiro foi carregado (não apenas a planilha em que estou interessado). Portanto, quando eu uso o método duas vezes (uma vez para cada planilha), efetivamente preciso que toda a pasta de trabalho seja lida duas vezes (mesmo que esteja usando apenas a planilha especificada).
Estou usando errado ou é apenas limitado dessa maneira?
Obrigado!
Respostas:
Tente
pd.ExcelFile
:Conforme observado por @HaPsantran, todo o arquivo do Excel é lido durante a
ExcelFile()
chamada (não parece haver uma maneira de contornar isso). Isso evita que você precise ler o mesmo arquivo sempre que quiser acessar uma nova planilha.Observe que o
sheet_name
argumento parapd.read_excel()
pode ser o nome da planilha (como acima), um número inteiro especificando o número da planilha (por exemplo, 0, 1, etc), uma lista de nomes ou índices da planilha ouNone
. Se uma lista for fornecida, ele retornará um dicionário onde as chaves são os nomes / índices da planilha e os valores são os quadros de dados. O padrão é simplesmente retornar a primeira planilha (ou seja,sheet_name=0
).Se
None
for especificado, todas as planilhas serão retornadas, como um{sheet_name:dataframe}
dicionário.fonte
sheet_name
e nãosheetname
. Não percebi que essa era a parte descontinuada, porque ainda estava trabalhando no método read_excel, mas não no método de análise.Existem 3 opções:
Leia todas as folhas diretamente em um dicionário ordenado.
Obrigado @ihightower por apontá-lo e @toto_tico por apontar o problema da versão.
Leia a primeira planilha diretamente no dataframe
Leia o arquivo do Excel e obtenha uma lista de folhas. Depois escolha e carregue as folhas.
Leia todas as folhas e guarde-as em um dicionário. O mesmo que o primeiro, mas mais explícito.
Atualização: Obrigado @toto_tico por apontar o problema da versão.
fonte
df_sheet_map = pd.read_excel(file_fullpath, sheetname=None)
isso tenha as planilhas em um dicionário automaticamente .. e acesse a planilha como dataframe assim:df_sheet_map['house']
Você também pode usar o índice para a planilha:
dará a primeira planilha. para a segunda planilha:
fonte
Você também pode especificar o nome da planilha como um parâmetro:
fará o upload apenas da planilha
"sheet_name"
.fonte
por padrão, leia a primeira planilha da pasta de trabalho.
leia a folha específica da pasta de trabalho e
leia todas as planilhas do excel para o panda dataframe como um tipo de OrderedDict significa quadros de dados aninhados, todas as planilhas como quadros de dados coletados no dataframe e seu tipo é OrderedDict.
fonte
Sim, infelizmente, ele sempre carregará o arquivo completo. Se você estiver fazendo isso repetidamente, provavelmente é melhor extrair as folhas para separar os CSVs e depois carregar separadamente. Você pode automatizar esse processo com o d6tstack, que também adiciona recursos adicionais, como verificar se todas as colunas são iguais em todas as planilhas ou vários arquivos do Excel.
Veja exemplos do d6tstack Excel
fonte
Se você salvou o arquivo do Excel na mesma pasta que o seu programa python (Endereçamento Relativo), basta mencionar o número da planilha e o nome do arquivo. Sintaxe = pd.read_excel (Nome do arquivo, SheetNo) Exemplo:
fonte