1
resposta

[Projeto] 09 Desafio: trabalhando em outros contextos

preciso lista dentro de uma célula, não conseguimos fazer cálculos. O método explode "explode" essa lista, transformando cada elemento em uma nova linha, mas mantendo as informações das outras colunas repetidas para dar contexto.

Resolução:
vou tratar a coluna de clientes e valores, transformando-os em números reais para análise.

vendas online
Lemos a base de dados no desafio anterior, agora podemos avançar nas transformações desses dados. Então, o novo desafio do projeto 1 será dividido em algumas metas:

Remover os dados em listas dentro do DataFrame;
Verificar os tipos de dados;
Identificar colunas numéricas;
Transformar a coluna numérica para o tipo numérico.

import pandas as pd
import numpy as np

1. Carregar e normalizar (repetindo etapa 1 para contexto)

df_vendas = pd.read_json('dados_vendas_clientes.json')
df_vendas = pd.json_normalize(df_vendas['dados_vendas'])

2. Remover os dados em listas (Explode)

Precisamos explodir as colunas que possuem listas

colunas_listas = ['Cliente', 'Valor da compra']
df_vendas = df_vendas.explode(colunas_listas)

3. Resetar o índice (opcional, mas recomendado após explode)

df_vendas.reset_index(drop=True, inplace=True)

4. Transformar para tipo numérico

Primeiro removemos o "R$ " e trocamos a vírgula pelo ponto

df_vendas['Valor da compra'] = df_vendas['Valor da compra'].apply(lambda x: x.replace('R$ ', '').replace(',', '.'))

Agora convertemos para float

df_vendas['Valor da compra'] = df_vendas['Valor da compra'].astype(np.float64)

print(df_vendas.info()) # Verificar tipos de dados
display(df_vendas.head())

Projeto desafio 2: administração de condomínios
Lemos a base de dados no desafio anterior, agora podemos avançar nas transformações desses dados. Então, da mesma forma que o projeto 1, o desafio do projeto 2 está listado em algumas metas:

Remover os dados em listas dentro do DataFrame;
Verificar os tipos de dados;
Identificar colunas numéricas;
Transformar a coluna numérica para o tipo numérico.

Administração de Condomínios esta tratando listas estão nas datas e nos valores dos aluguéis.

1. Carregar e normalizar

df_locacao = pd.read_json('dados_locacao_imoveis.json')
df_locacao = pd.json_normalize(df_locacao['dados_locacao'])

2. Remover os dados em listas (Explode)

colunas_listas_loc = ['datas_combinadas_pagamento', 'datas_de_pagamento', 'valor_aluguel']
df_locacao = df_locacao.explode(colunas_listas_loc)
df_locacao.reset_index(drop=True, inplace=True)

3. Transformar para tipo numérico (Tratando a string "$ 1000,0 reais")

df_locacao['valor_aluguel'] = df_locacao['valor_aluguel'].apply(
lambda x: x.replace('$ ', '').replace(' reais', '').replace(',', '.')
)

Convertendo para float

df_locacao['valor_aluguel'] = df_locacao['valor_aluguel'].astype(np.float64)

print(df_locacao.info()) # Verificar tipos de dados
display(df_locacao.head())

1 resposta

Ei! Tudo bem, Moacir?

Seu projeto está muito bem estruturado, parabéns por praticar! O uso do explode() foi certeiro, você explicou bem o porquê dele e aplicou exatamente como se espera em cenários reais com dados aninhados. Isso é um ponto bem importante em manipulação de dados.

Uma sugestão de melhoria: ao invés de usar apply com lambda, teste usar métodos vetorizados do Pandas (str.replace), que são mais performáticos.

Está se saindo muito bem, continue assim! Em caso de dúvidas, não deixe de compartilhar no fórum.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!