Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Value_counts(): Como printar duas colunas, uma com a contagem e outra com o percentual

Na aula Tabelas de frequencia do curso Python Pandas, ele ensinou como gerar o percentual no value_counts() utilizando o normalize=True, porém ele substitui o valor da quantidade de frequencia

Teria como ficar as duas informações na mesma tabela?

dados_listings.value_counts(subset='imovel_tipos_propriedade', normalize=True)
1 resposta
solução!

Olá, Rodrigo! Tudo bom? Espero que sim!

Você pode fazer as duas operações de maneira separada, usar o método to_frame() para transformar um dos resultados em um DataFrame, e criar uma nova coluna com o DataFrame que restou.

Vamos lá:


import pandas as pd
dict_imoveis = {'imovel_tipos_propriedade': ['Casa', 'Apartamento', 'Apartamento',
                                     'Casa', 'Flat', 'Comercial']}

df = pd.DataFrame(dict_imoveis)
df
imovel_tipos_propriedade
0Casa
1Apartamento
2Apartamento
3Casa
4Flat
5Comercial

Supomos que vamos escolher primeiro o DataFrame com a contagem dos valores como base, então:

df_counts = df['imovel_tipos_propriedade'].value_counts().to_frame()
df_counts
imovel_tipos_propriedade
Casa2
Apartamento2
Flat1
Comercial1

Agora que já temos a contagem, podemos preparar a informação com os percentuais:

df_proportions = df['imovel_tipos_propriedade'].value_counts(normalize=True) * 100
df_proportions
Casa           33.333333
Apartamento    33.333333
Flat           16.666667
Comercial      16.666667
Name: imovel_tipos_propriedade, dtype: float64

E agora, basta criar uma nova coluna com essa informação. Pois o DataFrame e essa nova Series possuem o mesmo formato, então é possível atribuir a Series como uma nova coluna do nosso DataFrame de base:

df_counts['frequência relativa'] = df_proportions
df_counts
imovel_tipos_propriedadefrequência relativa
Casa233.3333
Apartamento233.3333
Flat116.6667
Comercial116.6667

E pronto, temos o DataFrame com as duas informações. Você pode modularizar isso em uma função e criar um método para fazê-lo mais rapidamente. Mas hoje, o value_counts() opta por um ou outro quando setamos o parâmetro normalize=True.

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!

Não é necessário fechar o tópico, outras pessoas podem ser ajudadas por ele :D