Dominando o método .explode() do pandas: guia completo
Aprenda tudo sobre o método .explode() do pandas: colunas únicas e múltiplas, como lidar com dados aninhados e armadilhas comuns — com exemplos práticos de Python.
No universo da manipulação de dados com o pandas, o método .explode() é um recurso valioso quando trabalhamos com listas em DataFrames. Este tutorial é um manual para dominar o .explode(), desde o funcionamento básico até aplicações avançadas e erros comuns.
A resposta rápida: veja como o .explode() funciona
Se você quer ir direto ao ponto, leia apenas esta seção. O .explode() foi feito para expandir os elementos de uma coluna com valores em formato de lista em várias linhas, transformando cada item da lista em uma linha separada. Por exemplo, vamos usar o seguinte DataFrame df para ilustrar o processo:
ID
Interests
1
['Python', 'Data Science']
2
['Machine Learning', 'AI']
O método .explode() vai expandir os elementos da coluna Interests, assim:
# Explode the Interests column
exploded_df = df.explode('Interests')Tecnologia
ID
Interests
1
Python
1
Data Science
2
Machine Learning
2
AI
O que é o método .explode() do pandas?
O .explode() simplifica o tratamento de dados aninhados, como listas ou tuplas, dentro de DataFrames do pandas. Ao converter cada elemento de uma estrutura semelhante a lista em uma linha separada, o .explode() facilita o acesso aos dados e os deixa prontos para análise.
Como o .explode() funciona?
A funcionalidade do .explode() é poderosa e direta, com foco na facilidade de uso e eficiência em tarefas de manipulação de dados.
Column: indica a coluna com entradas em formato de lista a serem “explodidas”.
ignore_index: quando definido como True, redefine o índice para inteiros sequenciais, ajudando a preservar a integridade do DataFrame após a explosão. O padrão é False.
Duas formas de usar o .explode() do pandas
Explodindo uma única coluna no pandas
O caso mais comum é explodir uma única coluna, expandindo cada entrada em formato de lista em linhas individuais. Na seção da resposta rápida, vimos exatamente isso. Vamos retomar o exemplo. Temos o DataFrame df, com IDs de pessoas e seus interesses de aprendizado. Como você pode ver, os interesses estão em listas.
ID
Interests
1
['Python', 'Data Science']
2
['Machine Learning', 'AI']
O .explode() vai transformar os elementos da coluna Interests em linhas individuais, assim:
# Explode the Interests column
exploded_df = df.explode('Interests')Tecnologia
ID
Interests
1
Python
1
Data Science
2
Machine Learning
2
AI
Este método é especialmente útil para colunas com dados categóricos ou múltiplos atributos por observação.
Explodindo múltiplas colunas no pandas
Também é comum precisar explodir várias colunas no mesmo DataFrame. Isso é útil quando múltiplas colunas contêm estruturas tipo lista que precisam ser descompactadas simultaneamente. Vamos adicionar a coluna Tools ao df para ilustrar:
ID
Interests
Tools
1
['Python', 'Data Science']
['Pandas', 'NumPy']
2
['Machine Learning', 'AI']
['Scikit-learn', 'TensorFlow']
Para explodir múltiplas colunas, basta passar a lista de colunas desejadas:
# Explode the Interests & Tools columns
exploded_df = df.explode(['Interests','Tools'])Tecnologia
ID
Interests
Tools
1
Python
Pandas
1
Data Science
NumPy
2
Machine Learning
Scikit-learn
2
AI
TensorFlow
Esse uso é especialmente útil quando você trabalha com várias colunas que contêm listas. Dito isso, existem algumas armadilhas ao usar o .explode(), que veremos a seguir.
Erros comuns ao usar o .explode() do pandas e como resolver
Explodir colunas duplicadas
Um erro frequente ao usar o .explode() é, sem querer, repetir a mesma coluna na lista de colunas a explodir. Reforce sempre: garanta que a lista de colunas é composta apenas por nomes únicos!
Muitas vezes, algumas linhas do seu DataFrame podem ser strings que parecem listas. Tentar explodir uma coluna com strings no formato "['Python', 'AI']" não terá efeito, pois o .explode() espera objetos realmente semelhantes a listas, não strings que parecem listas. Veja um exemplo do problema e a solução. Imagine que df tenha os seguintes valores:
ID
Interests
1
"['Python', 'Data Science']"
2
"['Machine Learning', 'AI']"
Como você vê, a coluna Interests contém strings que parecem listas. Usar .explode() em Interests não mudaria nada, pois os valores são strings únicas. Para corrigir, converta os valores de Interests em listas de fato.
Ao trabalhar com DataFrames do pandas, é comum se deparar com linhas em que as estruturas tipo lista nas colunas escolhidas para explodir têm comprimentos diferentes. Essa discrepância pode gerar dados desalinhados ou incompletos após usar o .explode() em múltiplas colunas. Por exemplo, imagine que df seja assim:
ID
Interests
Tools
1
['Python', 'Data Science']
['Pandas']
2
['Machine Learning']
['Scikit-learn', 'TensorFlow']
Note que as colunas Interests e Tools têm listas com comprimentos diferentes. Usar .explode() nessas colunas como estão gerará erro, pois as colunas precisam ter o mesmo número de valores nas listas. Para corrigir, você pode preencher as listas com None usando uma função customizada, como abaixo:
# Function to pad lists to the same lengthdefpad_lists(row):
max_len =max(len(row['Interests']),len(row['Tools']))
row['Interests']+=[None]*(max_len -len(row['Interests']))
row['Tools']+=[None]*(max_len -len(row['Tools']))return row
# Apply the padding function to each row
df = df.apply(pad_lists, axis=1)# Now, safely explode both columns
df.explode(['Interests','Tools'])Tecnologia
ID
Interests
Tools
1
Python
Pandas
1
Data Science
None
2
Machine Learning
Scikit-learn
2
None
TensorFlow
Considerações finais
Em resumo, o .explode() é muito útil para descompactar elementos de listas em linhas de um DataFrame do pandas. Para continuar aprendendo pandas, confira estes recursos:
Adel é educador de ciência de dados, palestrante e evangelista da DataCamp, onde lançou vários cursos e treinamentos ao vivo sobre análise de dados, aprendizado de máquina e engenharia de dados. Ele é apaixonado pela disseminação das habilidades e da alfabetização de dados nas organizações e pela interseção entre tecnologia e sociedade. Ele tem um mestrado em ciência de dados e análise de negócios. Em seu tempo livre, você pode encontrá-lo passeando com seu gato Louis.
Use o Python Pandas e selecione colunas de DataFrames. Siga nosso tutorial com exemplos de código e aprenda diferentes maneiras de selecionar seus dados hoje mesmo!
Explore a análise de dados com Python. Os DataFrames do Pandas facilitam a manipulação de seus dados, desde a seleção ou substituição de colunas e índices até a remodelagem dos dados.
Aprenda a dividir listas Python com técnicas como slicing, compreensão de listas e itertools. Descubra quando usar cada método para um tratamento ideal dos dados.
No universo da manipulação de dados com o pandas, o método
.explode()é um recurso valioso quando trabalhamos com listas em DataFrames. Este tutorial é um manual para dominar o .explode(), desde o funcionamento básico até aplicações avançadas e erros comuns.A resposta rápida: veja como o
.explode()funcionaSe você quer ir direto ao ponto, leia apenas esta seção. O .explode() foi feito para expandir os elementos de uma coluna com valores em formato de lista em várias linhas, transformando cada item da lista em uma linha separada. Por exemplo, vamos usar o seguinte DataFrame df para ilustrar o processo:
ID
Interests
1
['Python', 'Data Science']
2
['Machine Learning', 'AI']
O método
.explode()vai expandir os elementos da colunaInterests, assim:ID
Interests
1
Python
1
Data Science
2
Machine Learning
2
AI
O que é o método
.explode()do pandas?O
.explode()simplifica o tratamento de dados aninhados, como listas ou tuplas, dentro de DataFrames do pandas. Ao converter cada elemento de uma estrutura semelhante a lista em uma linha separada, o .explode() facilita o acesso aos dados e os deixa prontos para análise.Como o
.explode()funciona?A funcionalidade do
.explode()é poderosa e direta, com foco na facilidade de uso e eficiência em tarefas de manipulação de dados.Column: indica a coluna com entradas em formato de lista a serem “explodidas”.ignore_index: quando definido comoTrue, redefine o índice para inteiros sequenciais, ajudando a preservar a integridade do DataFrame após a explosão. O padrão éFalse.Duas formas de usar o
.explode()do pandasExplodindo uma única coluna no pandas
O caso mais comum é explodir uma única coluna, expandindo cada entrada em formato de lista em linhas individuais. Na seção da resposta rápida, vimos exatamente isso. Vamos retomar o exemplo. Temos o DataFrame
df, com IDs de pessoas e seus interesses de aprendizado. Como você pode ver, os interesses estão em listas.ID
Interests
1
['Python', 'Data Science']
2
['Machine Learning', 'AI']
O
.explode()vai transformar os elementos da colunaInterestsem linhas individuais, assim:ID
Interests
1
Python
1
Data Science
2
Machine Learning
2
AI
Este método é especialmente útil para colunas com dados categóricos ou múltiplos atributos por observação.
Explodindo múltiplas colunas no pandas
Também é comum precisar explodir várias colunas no mesmo DataFrame. Isso é útil quando múltiplas colunas contêm estruturas tipo lista que precisam ser descompactadas simultaneamente. Vamos adicionar a coluna
Toolsaodfpara ilustrar:ID
Interests
Tools
1
['Python', 'Data Science']
['Pandas', 'NumPy']
2
['Machine Learning', 'AI']
['Scikit-learn', 'TensorFlow']
Para explodir múltiplas colunas, basta passar a lista de colunas desejadas:
ID
Interests
Tools
1
Python
Pandas
1
Data Science
NumPy
2
Machine Learning
Scikit-learn
2
AI
TensorFlow
Esse uso é especialmente útil quando você trabalha com várias colunas que contêm listas. Dito isso, existem algumas armadilhas ao usar o
.explode(), que veremos a seguir.Erros comuns ao usar o
.explode()do pandas e como resolverExplodir colunas duplicadas
Um erro frequente ao usar o
.explode()é, sem querer, repetir a mesma coluna na lista de colunas a explodir. Reforce sempre: garanta que a lista de colunas é composta apenas por nomes únicos!Explodir strings que parecem listas
Muitas vezes, algumas linhas do seu DataFrame podem ser strings que parecem listas. Tentar explodir uma coluna com strings no formato
"['Python', 'AI']"não terá efeito, pois o.explode()espera objetos realmente semelhantes a listas, não strings que parecem listas. Veja um exemplo do problema e a solução. Imagine quedftenha os seguintes valores:ID
Interests
1
"['Python', 'Data Science']"
2
"['Machine Learning', 'AI']"
Como você vê, a coluna
Interestscontém strings que parecem listas. Usar.explode()emInterestsnão mudaria nada, pois os valores são strings únicas. Para corrigir, converta os valores deInterestsem listas de fato.Comprimentos diferentes em múltiplas colunas
Ao trabalhar com DataFrames do pandas, é comum se deparar com linhas em que as estruturas tipo lista nas colunas escolhidas para explodir têm comprimentos diferentes. Essa discrepância pode gerar dados desalinhados ou incompletos após usar o
.explode()em múltiplas colunas. Por exemplo, imagine quedfseja assim:ID
Interests
Tools
1
['Python', 'Data Science']
['Pandas']
2
['Machine Learning']
['Scikit-learn', 'TensorFlow']
Note que as colunas
InterestseToolstêm listas com comprimentos diferentes. Usar.explode()nessas colunas como estão gerará erro, pois as colunas precisam ter o mesmo número de valores nas listas. Para corrigir, você pode preencher as listas comNoneusando uma função customizada, como abaixo:ID
Interests
Tools
1
Python
Pandas
1
Data Science
None
2
Machine Learning
Scikit-learn
2
None
TensorFlow
Considerações finais
Em resumo, o
.explode()é muito útil para descompactar elementos de listas em linhas de um DataFrame do pandas. Para continuar aprendendo pandas, confira estes recursos: