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

Como contar os valores 0 quartos separados?

Fiquei curioso com o exercício proposto e fui tentar contar. O professor usou o metodo include_lowest = True para incluir na contagem de 1 e 2 quartos os registros de 0 quartos e obteve uma diferença de 11074 para 11231 ou seja 157 registros a mais.

Eu por outro lado fiz minha mudança na linha de parametros que vou informar ao cut, a classes incluindo um valor menor que zero como adiante:

classes = [-1,0,2,4,6,100]

labels = ['0 quartos','1 e 2 quartos','3 e 4 quartos','5 e 6 quartos','7 ou mais']
quartos = pd.cut(dados['Quartos'], classes, labels = labels)
pd.value_counts(quartos)

mas meu resultado foi de 159 registros e não 157, como segue:

1 e 2 quartos    11250
3 e 4 quartos     9681
5 e 6 quartos      686
0 quartos          159
7 ou mais           50
Name: Quartos, dtype: int64

A que se deve essa diferença?

3 respostas

Olá, Daniel! Tudo bom? Espero que sim

Ótima solução também, já que estamos trabalhando com a garantia que somente o número 0 será registrado e não existe possibilidade de ter outros valores no mesmo intervalo é válido utilizar a solução.

O parâmetro include_lowest = True é utilizado porque o método pd.cut() não considera o menor valor da lista, nesse caso o zero "0".

Testei a sua solução utilizando o DataFrame disponibilizado na Atividade 01 da aula 08, disponível através do link e os resultados foram:

classes = [-1, 0, 2, 4, 6, 100]

quartos = pd.cut(dados.Quartos, classes)
quartos.value_counts()
(0, 2]      11074
(2, 4]       8094
(4, 6]        470
(-1, 0]       157
(6, 100]       36
Name: Quartos, dtype: int64

Computando a diferença:

11231 - 11074
>>> 157

O mesmo valor apresentado no subintervalo (-1, 0]. Ambas as soluções apresentaram o mesmo resultado, tanto a inclusão do lowest_true == True quanto a lista com elemento menor que zero.

Verifique se não aconteceu alguma inserção de ruído nos dados ou algum pré-processamento não foi feito durante os passos anteriores.

Se ainda tiver alguma dúvida, estou por aqui. Ótimos estudos e grande abraço!

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

Também achei que pudesse ser isso e fui tentar rodar só duas células, uma importa os dados que estavam sendo tratados, a outra faz nosa distribuição de frequencias. Assim não pego nada pronto do restante das aulas.

Parece uma ótima ideia né? Infelizmente os resultados mudam muito drasticamente. Rodei:

import pandas as pd

dados = pd.read_csv('/content/drive/MyDrive/Alura/aluguel_residencial_sem_outliers.csv', sep=';')
dados = dados[dados['Tipo agregado'] =='Apartamento']
dados = dados.fillna({'Quartos': 0})
dados.head(5)

recebi tudo certinho ao que parece Insira aqui a descrição dessa imagem para ajudar na acessibilidadeentão rodei nosso já conhecido:

classes = [-1,0,2,4,6,100]

labels = ['0 quartos','1 e 2 quartos','3 e 4 quartos','5 e 6 quartos','7 ou mais']
quartos = pd.cut(dados['Quartos'], classes, labels=labels)
pd.value_counts(quartos)

e para minha, sua nossa grande surpresa:


1 e 2 quartos    10345
3 e 4 quartos     7160
0 quartos          153
5 e 6 quartos       77
7 ou mais            1
Name: Quartos, dtype: int64

Então vou concluir que sim, é algo no tratamento e no banco de dados e não no método. Não vou rever as aulas todas e repetir tudo pra descobrir esse caso especifico. Se você não tiver mais nenhum comentário sobre é só dar um ok que marco como solucionado.

solução!

Quantos aos resultados realmente pode ser alguma coisa no tratamento.

Mas o método que você apresentou funciona perfeitamente, analisando pra um mesmo DataFrame é super válido.

Quanto ao uso do DataFrame disponibilizado, se sentir que os dados começarem a divergir muito você pode optar por baixar o conteúdo da aula e utilizar somente o DataFrame do conteúdo, sem necessitar abrir os notebooks das aulas.

Qualquer dúvida, só chamar. Grande abraço!