Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

pd.json_normalize e df.explode()

No curso anterior da formação Python, "Pandas transformacao e manipulacao de dados" usamos os comandos dados = pd.json_normalize(dados['info_moveis'])

para arrumar um arquivo json em linhas e colunas. Mas algumas colunas continham listas. Para abrir as listas em novas colunas, utilizamos o comando dados = dados.explode(colunas[3:]) so ha listas a partir da quarta coluna.

Nessa aula do curso "Pandas: limpeza e tratamento de dados", utilizamos apenas o comando pd.json_normalize(json_bruto) para transformar em colunas.

Entendi que para transformar dicionários em colunas usamos o comando pd.json_normalize() e para transformar listas em colunas usamos df.explode() É esse o funcionamento????

2 respostas
solução!

Oi Ceilton, tudo certinho?

Você está indo bem com a sua compreensão dos métodos pd.json_normalize() e df.explode(). Vou explicar a diferença entre os dois:

  • pd.json_normalize()

Esse método é usado para converter estruturas JSON complexas (com várias camadas) em uma tabela simples (DataFrame). Ele é usado quando temos dados em formato de dicionário dentro de outro dicionário e quer que cada chave desses dicionários vire uma coluna na tabela. Por exemplo:

```python
import pandas as pd

json_data = {
    'id_cliente': '1399-UBQIU',
    'Churn': 'nao',
    'cliente': {'genero': 'masculino', 'idoso': 0, 'parceiro': 'nao'},
    'Telefone': {'servico_telefone': 'sim', 'varias_linhas': 'nao'},
    'Internet': {'servico_internet': 'DSL', 'Seguranca_online': 'nao'}
}

df = pd.json_normalize(json_data)
print(df)
```

Isso vai criar uma tabela onde cada detalhe do JSON vira uma coluna:

```
  id_cliente Churn cliente.genero  cliente.idoso cliente.parceiro Telefone.servico_telefone Telefone.varias_linhas Internet.servico_internet Internet.Seguranca_online
0  1399-UBQIU   nao     masculino             0              nao                     sim                   nao                      DSL                      nao
```
  • df.explode() Esse método é usado quando você tem listas dentro de colunas e quer transformar cada item da lista em uma linha nova. Por exemplo:

    import pandas as pd
    
    data = {
        'id_cliente': ['1399-UBQIU', '0002-ORFBO'],
        'Churn': ['nao', 'sim'],
        'servicos': [['internet', 'telefone'], ['internet']]
    }
    
    df = pd.DataFrame(data)
    df_exploded = df.explode('servicos')
    print(df_exploded)
    

Isso vai criar uma tabela onde cada serviço da lista vira uma linha separada:

```
  id_cliente Churn   servicos
0  1399-UBQIU   nao  internet
0  1399-UBQIU   nao  telefone
1  0002-ORFBO   sim  internet
```

Portanto, o método pd.json_normalize() é utilizado para transformar dicionários aninhados em colunas de uma tabela, facilitando a manipulação e análise dos dados. Já o método df.explode() é usado para transformar itens de uma lista em linhas separadas, permitindo que cada elemento da lista ocupe uma linha individual no DataFrame.

Espero ter ajudado.

Qualquer dúvida, compartilhe no fórum.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Obrigado...