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

Duvida no count() e mean()

Não entendi porque tem que usar o count() para criar a variável label, porque esta não é apenas para criar os rótulos das colunas? Na minha opinião, o count() deveria ser usado apenas na variável valores.

label = grupo2.count().index

Fiquei com a mesma dúvida na aula "Mais sobre gráficos", não entendi porque ele usou o mean() para criar a variável label referente a esta aula:

grupo = dados.groupby('Tipo')['Valor']
label = grupo.mean().index
valores = grupo.mean().values
g4.bar(label, valores)
g4.set_title('Valor Médio por Tipo')
5 respostas

Olá Janderson! Olha eu aqui de novo hehe

area = plt.figure()
g1 = area.add_subplot(1, 2, 1)
g2 = area.add_subplot(1, 2, 2)
grupo1 = dados.groupby('Tipo Agregado')['Valor']
label = grupo1.count().index
valores = grupo1.count().values
g1.pie(valores, labels = label, autopct='%1.1f%%')
g1.set_title('Total de Imóveis por Tipo Agregado')
grupo2 = dados.groupby('Tipo')['Valor']
label = grupo2.count().index
valores = grupo2.count().values
g2.pie(valores, labels = label, autopct='%1.1f%%', explode = (.1, .1, .1, .1, .1))
g2.set_title('Total de Imóveis por Tipo')

A prática é isolar em variáveis distintas e utilizar cada uma quando necessário. Por exemplo:

label = grupo1.count().index
valores = grupo1.count().values

Em labelé utilizado .index ou seja, os índices, neste caso tratam-se das fatias em cima dos tipos existentes.

Já em valores são salvos os valores de cada fatia da torta.

A ideia que precisa ficar clara, é a necessidade de se isolar uma ação no df para uma execução específica sempre que necessário. Na limpeza dos dados é muito comum essa utilização gerando um df novo ao final.

Pois nem sempre utilizaremos a função na base toda.

Espero ter ajudado e qualquer coisa se ainda permanecer a dúvida é só retornar aqui!

Sim, entendi. Dessa forma, pode-se usar a variável em outros DataFrames porque ela não está "amarrada". É isso?

solução!

Para tentar deixar um pouco mais claro, observe esse código (Palhinha do meu próximo artigo):

5 - Renomear as Colunas.
Podemos alterar os nomes das colunas e deixá-los mais claros através do rename

df = df.rename(columns={"Tipo":"Tipo_Imóvel", "Valor":"Valor_Aluguel"})

df.head(5)

Tipo_Imóvel    Bairro    Quartos    Vagas    Suites    Area    Valor_Aluguel    Condominio    IPTU
0    Quitinete    Copacabana    1    0    0    40    1700.0    500.0    60.0
1    Casa    Jardim Botânico    2    0    1    100    7000.0    NaN    NaN
2    Conjunto Comercial/Sala    Barra da Tijuca    0    4    0    150    5200.0    4020.0    1111.0
3    Apartamento    Centro    1    0    0    15    800.0    390.0    20.0
4    Apartamento    Higienópolis    1    0    0    48    800.0    230.0    NaN

6- Dropar as linhas duplicadas.
Aqui determinamos um novo nome para o nosso dataset e então fizemos a retirada das linhas duplicadas encontradas pelo drop_duplicates()

df_novo = df.drop_duplicates()
Agora ao utilizar o comando shape novamente podemos visualizar que existiam 32960 linhas antes do comando e agora 31800.

df_novo.shape
(31800, 9)

Com o count() podemos verificar a contagem de dados não-nulos em nosso dataset. Ficando claro que possuímos dados faltantes nas colunas Valor_Aluguel, Condomínio e IPTU.

df_novo.count()
Tipo_Imóvel      31800
Bairro           31800
Quartos          31800
Vagas            31800
Suites           31800
Area             31800
Valor_Aluguel    31783
Condominio       27851
IPTU             21914
dtype: int64

Aqui utilizando a função ``ìnull()e também asum()``` podemos ao mesmo tempo ter acesso aos dados faltantes que mencionei acima e a soma deles em uma resposta só!

df_novo.isnull().sum()
Tipo_Imóvel         0
Bairro              0
Quartos             0
Vagas               0
Suites              0
Area                0
Valor_Aluguel      17
Condominio       3949
IPTU             9886
dtype: int64

Quando utilizamos o dropna retiramos todos os dados faltantes do nosso dataset. Sem essas linhas que poderiam gerar problemas em nossas análises, o dataset passa a ter 20371 linhas agora.

df_novo.dropna(inplace=True)
df_novo

    Tipo_Imóvel    Bairro    Quartos    Vagas    Suites    Area    Valor_Aluguel    Condominio    IPTU
0    Quitinete    Copacabana    1    0    0    40    1700.0    500.0    60.0
2    Conjunto Comercial/Sala    Barra da Tijuca    0    4    0    150    5200.0    4020.0    1111.0
3    Apartamento    Centro    1    0    0    15    800.0    390.0    20.0
6    Apartamento    Cachambi    2    0    0    50    1300.0    301.0    17.0
9    Conjunto Comercial/Sala    Centro    0    3    0    695    35000.0    19193.0    3030.0
...    ...    ...    ...    ...    ...    ...    ...    ...    ...
32953    Apartamento    Méier    2    0    0    70    900.0    490.0    48.0
32955    Quitinete    Centro    0    0    0    27    800.0    350.0    25.0
32956    Apartamento    Jacarepaguá    3    1    2    78    1800.0    800.0    40.0
32957    Apartamento    São Francisco Xavier    2    1    0    48    1400.0    509.0    37.0
32959    Conjunto Comercial/Sala    Centro    0    0    0    250    6500.0    4206.0    1109.0
20371 rows × 9 columns

Como podemos observar agora ele está limpo de dados faltantes!

Eu utilizei o isolamento de variáveis e neste ponto tenho o primeiro df original df e o novo df_novo que foi resultado da limpeza do primeiro.

Assim posso tanto utilizar outras coisas no "df sujo" quanto no "df limpo".

Ficou mais claro?

Sim, ficou bem mais claro. Obrigado pela atenção.

Que bom =)

Quando precisar, estamos aqui!

Abs