1
resposta

[Bug] Erro na solução sugerida

Na seguinte linha de código: "dados['descricao_vizinhanca'] = dados['descricao_vizinhanca'].str.lower()"

Ao aplicar esse método sobre a coluna 'descrição_vizinhança' os valores resultantes são 'NaN'(not a number), isso porque a aplicação do método .str nesse caso é sobre uma lista de listas, não sobre uma única lista. O que impacta diretamente nas demais linhas da resolução, que estariam corretas, se essa primeira linha estivesse correta.

para resolver isso eu tive que percorrer a lista elemento a elemento e fazer a conversão de cada lista para minusculas por vez:

def to_lowercase(lst):

    if isinstance(lst, list):
        return [str(item).lower() for item in lst]
    return lst

dataf['descricao_vizinhanca'] = dataf['descricao_vizinhanca'].apply(to_lowercase)
1 resposta

Oi Lucas, tudo bem?

O dados['descricao_vizinhanca'] é uma série do nosso dataframe dados, e nesse momento ele ainda não contém listas. Abaixo mostro como está essa série antes e após aplicar o código dados['descricao_vizinhanca'] = dados['descricao_vizinhanca'].str.lower():

  • Antes:

DataFrame do Pandas com uma coluna chamada descricao_vizinhanca. A coluna contém descrições de bairros, e a captura mostra alguns exemplos com texto truncado. No canto inferior direito, é indicado que o DataFrame tem 3.818 linhas e uma coluna. Em seguida, o usuário usou o comando type(dados['descricao_vizinhanca']), que retornou que o tipo de dado dessa coluna é pandas.core.series.Series.

  • Após:

 código dados['descricao_vizinhanca'] = dados['descricao_vizinhanca'].str.lower(). Em seguida, o comando dados['descricao_vizinhanca'] foi chamado para exibir o conteúdo atualizado dessa coluna. O DataFrame resultante mostra a coluna descricao_vizinhanca com descrições de bairros em letras minúsculas. A tabela possui 3.818 linhas e uma coluna, e o tipo de dado é object

Ela só será transformada em listas no momento da tokenização, no código dados['descricao_vizinhanca'] = dados['descricao_vizinhanca'].str.split(). Aqui, o texto é transformado em uma lista de palavras (tokens), separando cada palavra com base nos espaços.

captura de tela do código dados['descricao_vizinhanca'] = dados['descricao_vizinhanca'].str.split() dados.head()

Caso no seu código, a disposição do dataframe esteja diferente, recomendo reiniciar a sessão e executar os códigos novamente.

Espero ter esclarecido.

Qualquer dúvida, não hesite em compartilhar no fórum.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado