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 |
---|
0 | Casa |
1 | Apartamento |
2 | Apartamento |
3 | Casa |
4 | Flat |
5 | Comercial |
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 |
---|
Casa | 2 |
Apartamento | 2 |
Flat | 1 |
Comercial | 1 |
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_propriedade | frequência relativa |
---|
Casa | 2 | 33.3333 |
Apartamento | 2 | 33.3333 |
Flat | 1 | 16.6667 |
Comercial | 1 | 16.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