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

[Dúvida] É possível separar os dados de Problemas_Saude?

Olá, queria saber se é possível normalizar a coluna "Problemas_saude" separando os problemas em colunas com True e False ou Sim e Não para conter ou não o problema.

2 respostas
solução!

Oi, Amanda! tudo bem?

Dá pra fazer sim!

Uma das formas seria iterar sobre os problemas únicos para criar as novas colunas.

Ficaria assim o código:

import pandas as pd

# Transformando o dicionário em um DataFrame do pandas
df = pd.DataFrame(dados_dict["Pacientes"])

# Iterando sobre os problemas únicos para criar as novas colunas
for problema in set(problema for sublist in df["Problemas_saude"] for problema in sublist):
    df[problema] = df["Problemas_saude"].apply(lambda x: problema in x)

# Removendo a coluna original "Problemas_saude"
df.drop(columns=["Problemas_saude"], inplace=True)

df

Vou explicar o código passo a passo:

  • Transformação do Dicionário em um DataFrame Pandas: Usamos o pd.DataFrame() para converter a lista de dicionários dados_dict["Pacientes"] em um DataFrame Pandas:
df = pd.DataFrame(dados_dict["Pacientes"])
  • Iteração sobre os Problemas Únicos: Iteramos sobre os problemas de saúde únicos presentes na coluna "Problemas_saude". Fazemos isso utilizando um conjunto (set comprehension) que extrai todos os problemas únicos de todas as listas presentes na coluna "Problemas_saude".
for problema in set(problema for sublist in df["Problemas_saude"] for problema in sublist):
  • Criação das Novas Colunas: Para cada problema de saúde único, criamos uma nova coluna no DataFrame. Utilizamos a função apply() para aplicar uma função lambda a cada elemento da coluna "Problemas_saude". Esta função lambda verifica se o problema está presente na lista de problemas de um determinado paciente e retorna True ou False.
df[problema] = df["Problemas_saude"].apply(lambda x: problema in x)
  • Remoção da Coluna Original "Problemas_saude": Depois de criarmos as novas colunas para cada problema de saúde, removemos a coluna original "Problemas_saude" do DataFrame, já que não é mais necessária.
df.drop(columns=["Problemas_saude"], inplace=True)
  • Exibição do DataFrame Resultante: Por fim, exibimos o DataFrame resultante, que agora possui as colunas separadas para cada problema de saúde, representadas por valores True ou False, indicando a presença ou ausência do problema para cada paciente.

Se precisar de mais detalhes ou tiver outras perguntas, estou à disposição para ajudar!

Bacana! Obrigada pela explicação, deu pra entender muito bem.