Exercício Prático:
Considere um DataFrame dados
com as seguintes variáveis:
Sexo: codificado como 0 para Masculino e 1 para Feminino.
Cor: codificada com os seguintes valores:
- 0: Indígena
- 2: Branca
- 4: Preta
- 6: Amarela
- 8: Parda
- 9: Sem declaração
Renda: representando a renda mensal em reais.
Construa uma tabela de distribuição de frequências cruzada para as variáveis "Sexo" e "Cor", e em seguida, crie a tabela de percentuais normalizados. Após isso, calcule a renda média para cada grupo de "Sexo" e "Cor".
Resolução Didática:
Passo 1: Criar um dicionário para as variáveis "Sexo" e "Cor"
Vamos transformar os valores numéricos em strings utilizando dicionários para facilitar a visualização.
sexo = {0: 'Masculino', 1: 'Feminino'}
cor = {0: 'Indígena', 2: 'Branca', 4: 'Preta', 6: 'Amarela', 8: 'Parda', 9: 'Sem declaração'}
Passo 2: Construir a tabela de frequências cruzada
Agora, usaremos o método pd.crosstab()
para cruzar as variáveis "Sexo" e "Cor". Isso nos dará uma tabela de contagem de cada combinação.
frequencia = pd.crosstab(dados.Sexo, dados.Cor)
frequencia.rename(index=sexo, columns=cor, inplace=True)
frequencia
Explicação:
- O
pd.crosstab()
cria uma tabela que cruza as categorias de "Sexo" nas linhas e "Cor" nas colunas, contando quantas vezes cada combinação aparece. - Renomeamos as categorias com os dicionários para que a tabela seja mais legível.
Passo 3: Criar a tabela de percentuais
Vamos agora normalizar a tabela, criando uma distribuição percentual.
percentual = pd.crosstab(dados.Sexo, dados.Cor, normalize=True) * 100
percentual.rename(index=sexo, columns=cor, inplace=True)
percentual
Explicação:
- O parâmetro
normalize=True
normaliza os valores, convertendo-os em percentuais. - Multiplicamos por 100 para expressar os percentuais em uma escala de 0 a 100%.
Passo 4: Calcular a renda média por "Sexo" e "Cor"
Agora, vamos calcular a média da renda para cada combinação de "Sexo" e "Cor" usando o método aggfunc='mean'
dentro de .crosstab()
.
renda_media = pd.crosstab(dados.Sexo, dados.Cor, aggfunc='mean', values=dados.Renda)
renda_media.rename(index=sexo, columns=cor, inplace=True)
renda_media
Explicação:
- Utilizamos a função
mean
para calcular a média da coluna "Renda" para cada cruzamento entre "Sexo" e "Cor". - Assim, podemos analisar qual grupo tem a maior ou menor renda média.
Resultados:
- Tabela de Frequências: mostra a quantidade de indivíduos em cada grupo.
- Tabela de Percentuais: ilustra a proporção que cada grupo representa em relação ao total.
- Renda Média: permite analisar disparidades salariais entre os grupos.