🎉 SEMANA DO CONSUMIDOR

Últimos dias para comprar os cursos com 50% de desconto

Ver detalhes

Postado em em 6 de julho de 2024

Entenda o método explode do Pandas, uma ferramenta que vai te ajudar bastante na hora de fazer suas análises de dados no Python!

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 por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Entendendo o Método Explode do Pandas

Na aula de hoje, vamos falar sobre o método explode do Pandas, que é muito útil para análises de dados em Python.

É muito comum recebermos bases de dados em que uma coluna contém dados dispostos em estruturas semelhantes as listas do Python.

Para lidar com esses casos, podemos utilizar o método explode para transformar esses dados agrupados em uma única célula em várias linhas.

Visualizando a Base de Dados

No material disponível para download, você encontrará a base de dados que utilizaremos ao longo desta aula.

Nela, temos informações fictícias que simulam como uma empresa de desenvolvimento de software organiza seus contratos, com detalhes sobre o cliente, as fases (planejamento, desenvolvimento e teste), as horas contratadas e as taxas para cada fase.

Podemos visualizar esses dados gerando o DataFrame com o Pandas e verificando as informações presentes.

import pandas as pd

BASE = "./dados/dados.csv"

dados = pd.read_csv(BASE)

dados
Visualizando a Base de Dados

Observe que as fases de desenvolvimento, assim como as horas gastas em cada uma e as taxas cobradas, estão organizadas em estruturas semelhantes as listas do Python.

Essas informações seriam melhor compreendidas e visualizadas se estivessem em linhas distintas.

Analisando as Informações Iniciais

Antes de partirmos para o método explode, que é o foco principal desta aula, precisamos analisar as informações iniciais presentes no DataFrame e verificar quais ajustes podem ser necessários antes de aplicarmos o método.

dados.info()
Analisando as Informações Iniciais

A princípio, podemos destacar alguns problemas. O primeiro deles é que a coluna data_pedido está sendo reconhecida como um object (texto) e não como um tipo data.

Além disso, as colunas horas e taxas_horarias também estão sendo reconhecidas como texto e não como valores numéricos. Dessa forma, não conseguimos usar esses dados para realizar operações numéricas e agregações.

Portanto, antes de utilizarmos o método explode, precisaremos fazer alguns ajustes no nosso DataFrame.

Transformando Strings em Listas

Apesar da disposição e estrutura muito semelhante às listas do Python, os dados apresentados nas colunas fases, horas e taxas_horarias não são uma lista, mas sim uma string.

Podemos confirmar isso exibindo a primeira linha da coluna fases e o tipo dessa coluna:

print(dados.loc[0, "fases"])
type(dados.loc[0, "fases"])

Transformando Strings em Listas

Ou seja, por mais que pareçam listas, esses dados estão sendo reconhecidos pelo Pandas como strings, o que impacta diretamente na aplicabilidade de certos métodos, como o explode.

Para solucionar esse problema, vamos criar um loop for que irá percorrer cada uma dessas colunas: fases, horas e taxas_horarias.

Para cada coluna, o código definirá uma lista chamada remover contendo os símbolos [, ], e um espaço em branco.

Em seguida, para cada um desses símbolos, utilizaremos o método str.replace para remover o símbolo da coluna.

Após remover os caracteres indesejados, o código dividirá o conteúdo da coluna em listas, usando o método split e a vírgula como delimitador.

# transformando as colunas fases, horas e taxas_horarias em listas para explode
for coluna in ["fases", "horas", "taxas_horarias"]:

    # remover colchetes e aspas
    remover = ["[", "]", "'", " "]

    # substituir os caracteres por vazio
    for simbolo in remover:
        dados[coluna] = dados[coluna].str.replace(simbolo, "")

    # transformar a coluna em lista
    dados[coluna] = dados[coluna].str.split(",")

dados

Ao final, o DataFrame resultante será visualmente semelhante ao que tínhamos, mas as colunas fases, horas e taxas_horarias serão listas de strings e estarão prontas para aplicarmos o método explode.

DataFrame Gerado
dados.info()

DataFrame Info
print(dados.loc[0, "fases"])
type(dados.loc[0, "fases"])
Dados como Lista

Observe que agora temos nossos dados efetivamente transformados em listas e podemos aplicar o método explode.

Método Explode no Pandas

O método explode é utilizado para realizar a expansão das informações nas colunas designadas. Ou seja, podemos transformar as colunas em que temos listas como valores e dividir os elementos dessas listas em linhas separadas.

Para esse método, basta informarmos as colunas que desejamos expandir, nesse caso as colunas fases, horas e taxas_horarias.

dados_expandido = dados.explode(["fases", "horas", "taxas_horarias"])
dados_expandido
Método Explode no Pandas

Com isso, temos os resultados da lista separados em diversas linhas, repetindo os dados das outras colunas que não continham listas, para que o DataFrame fique completo com todas as informações.

Para mais detalhes sobre o método explode, você pode conferir a documentação oficial aqui:

Ajustando os Tipos de Dados

Se verificarmos as informações desse DataFrame resultante, veremos que, apesar de toda a transformação feita, os dados presentes nele ainda são reconhecidos como objects, ou seja, textos.

dados_expandido.info()
Verificando os dados

Como vimos na aula sobre Otimizar DataFrames, um dos principais pontos é ajustarmos os dados para que eles sejam reconhecidos e utilizados de forma correta.

Por isso, usaremos a função to_datetime para converter a coluna data_pedido em uma coluna de data.

# transformando a coluna data_pedido em datetime
dados_expandido["data_pedido"] = pd.to_datetime(dados_expandido["data_pedido"], format="%Y-%m")

Além disso, podemos utilizar a função to_numeric para converter os dados das colunas horas e taxas_horarias em valores numéricos.

# transformando as colunas horas e taxas_horarias em numéricas
for coluna in ["horas", "taxas_horarias"]:
    dados_expandido[coluna] = pd.to_numeric(dados_expandido[coluna])

dados_expandido
DataFrame Final
dados_expandido.info()
Informações dos dados convertidos

Converter esses dados de object para datetime e int nos permite uma manipulação mais eficiente e assertiva dos dados. A partir disso, você pode construir e realizar suas análises normalmente.

Conclusão – Entendendo o Método Explode do Pandas

Nessa aula, você aprendeu como utilizar o método explode do Pandas, uma ferramenta muito útil para fazer análises de dados com Python.

Para utilizar esse método, é necessário que os dados contidos na coluna sejam uma lista, tupla ou array. Caso contrário, será preciso primeiro fazer a conversão desses dados.

Com isso, você aprendeu todos os procedimentos necessários para transformar os dados em listas no seu DataFrame e aplicar o método explode. Isso te proporcionará uma manipulação e análise mais efetiva das informações.

Hashtag Treinamentos

Para acessar outras publicações de Ciência de Dados, clique aqui!


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

Posts mais recentes da Hashtag Treinamentos

Diego Monutti

Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.