Curso
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')
|
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 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')
|
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'])
|
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!
# Incorreto: explodindo colunas duplicadas
df.explode(['Interests','Tools','Interests'])
# Correto: explodindo colunas únicas
df.explode(['Interests','Tools'])
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 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.
import ast
df['Interests'] = df['Interests'].apply(ast.literal_eval)
exploded_df = df.explode('Interests')
print(exploded_df) # Agora funciona
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 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 length
def pad_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'])
|
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.


