1
resposta

Dúvida

Bom dia. Estou analisando um conjunto de dados e estou com uma dúvida para fazer uma porcentagem dentro de um "pandas.core.frame.DataFrame ", gerado pelo codigo abaixo:

tab_freq_mat_cor = pd.crosstab(dados['marital.status'], dados.race)
tab_freq_mat_cor

nesta tabela gerada acima, eu tenho como indices o status matrimonial das pessoas e como colunas a raça (cor) .

selecao = tab_freq_mat_cor['White']
selecao

quando eu faço a seleção acima, eu vejo somente a coluna "white" e seus respectivos números de ocorrências..

eu gostaria de colocar a coluna da seleção acima em porcentagem, de acordo com a raça BRANCA .. tipo , qual a porcentagem de brancos casados em relação ao numero total de brancos?

ou qual a porcentagem de negros divorciados em relação a quantidade total de negros..?

eu consigo normalizar a tab_freq_cor em relação ao número total de pessoas de todas as raças da forma abaixo:

tab_freq_mat_cor = pd.crosstab(dados['marital.status'], dados.race, normalize = True).round(4)*100
tab_freq_mat_cor

mas eu gostaria de normalizar em relação a quantidade total de CADA RAÇA...

tem como fazer isso?

Obrigado

1 resposta

Oii Eder! Tudo bem contigo?

Peço desculpas pela demora em dar um retorno.

Utilizando o método crosstab, existem 3 formas de fazer a normalização dos dados. Quando normalize = 'all' ou normalize = True seus dados serão normalizados de acordo com todos os valores da sua tabela. Se normalize = 'index', seus dados serão normalizados de acordo com cada linha e caso normalize = 'columns' os dados serão normalizados em relação a cada coluna.

Como seu objetivo é normalizar os dados de acordo com as raças, que estão separadas por colunas no seu dataframe, acredito que onormalize = 'columns' seria o mais ideal no seu caso, ficando assim:

tab_freq_mat_cor = pd.crosstab(dados['marital.status'], dados.race, normalize = 'columns').round(4)*100
tab_freq_mat_cor

Espero que tenha te ajudado!

Qualquer dúvida estarei por aqui :)

Bons estudos!