1
resposta

Porque não foi preciso fazer aquele tratamento da lista dentro do dataset?

Anteriormente foi necessário realizar um tratamento no dataset, pois a coluna items era uma lista de itens, então durante a construção do dataframe ele criava uma linha para cada item nessa lista. Resolvemos isso mudando a orientação da construção do dataframe e depois transpondo ele.

Porque dessa vez o dataframe foi criado corretamente sem a necessidade de um tratamento?

1 resposta

Olá Marcos! Tudo bem contigo?

Peço desculpas pela demora em dar um retorno.

Na verdade, o professor também faz o tratamento, mas de outra forma.

Se você observar na parte "6.2 Rotina de Scraping", vai perceber que dentro do for anuncio in anuncios ele faz esse tratamento de uma forma mais direta.

Primeiro, ele salva os itens na lista "acessorios" e depois passa essa lista para a chave "items" do dicionário "card", por meio da linha card['items'] = acessorios. Após isso, ele passa esse dicionário "card" para a lista "cards", estruturando assim uma lista de dicionários. Como os dados já estão estruturados em uma lista de dicionários, ao passarmos eles para o pd.DataFrame eles já são organizados da mesma forma que foram colocados na lista.

De forma geral, se queremos que nossos dados permaneçam com uma mesma estrutura, ao passarmos eles para um DataFrame, basta colocarmos eles em uma lista antes de criarmos a tabela. E foi exatamente isso que o professor fez nesse segundo tratamento.

Se quiséssemos aplicar esse tipo de tratamento naquele dataset anterior, também funcionaria da mesma forma. Observe:

card = {'category': 'USADO',
 'description': 'Ano 1993 - 55.286 km',
 'items': [' 4 X 4',
  ' Câmera de estacionamento',
  ' Controle de tração',
  ' Sensor de estacionamento'],
 'location': 'Belo Horizonte - MG',
 'motor': 'Motor 1.8 16v',
 'name': 'LAMBORGHINI AVENTADOR',
 'value': 'R$ 338.000'}

dataset = pd.DataFrame([card])
dataset

Resultado:

categorydescriptionitemslocationmotornamevalue
0USADOAno 1993 - 55.286 km[' 4 X 4', ' Câmera de estacionamento', ' Controle de tração', ' Sensor de estacionamento']Belo Horizonte - MGMotor 1.8 16vLAMBORGHINI AVENTADORR$ 338.000

Assim, fica ainda mais simples do que fazer daquela outra forma que foi apresentada durante a aula.

Apenas a nível de curiosidade, esse mesmo tratamento também é válido para dicionários de dicionários. Observe um exemplo:

card2 = {1 : {'tp': 26, 'fp': 112},
2 : {'tp': 26, 'fp': 91},
3 : {'tp': 23, 'fp': 74}}

dataset2 = pd.DataFrame([card2])
dataset2

Resultado:

123
0{'tp': 26, 'fp': 112}{'tp': 26, 'fp': 91}{'tp': 23, 'fp': 74}

Assim, ao passarmos os dados dentro de uma lista para um DataFrame, eles ficarão estruturados no DataFrame da mesma forma que encontram-se na lista.

Espero que tenha tirado sua dúvida.

Qualquer outra dúvida estou à disposição para ajudar. Bons estudos!