2
respostas

Projeto do curso

Bom dia Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Conforme a imagem, quando chega na parte do projeto que pede para fazer um cruzamento entre sexo e cor, dá muitos erros. Utilizei o replace para trocar os dados conforme dicionário disponível, e na hora de usar o crosstab dá erro, não aparece mensagem de erro, mas a forma como os dados são apresentados é obviamente errada. Atribui esse erro ao fato das colunas chamadas serem object(não tenho certeza se é isso), e não consigo mudar o tipo com astype(). Não sei mais como proceder, se alguém puder ajudar, agradeço.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Boas Danival! Tudo bem? Espero que sim!

De forma geral, não é um problema que as colunas tenham o dtype Object strings por padrão são objetos para o pandas.

Eu não consegui identifcar o erro pelos prints que você mandou, então irei passo à passo para gerar as tabelas de frequência.

Primeiro, vou usar a função map para trocar os valores numéricos para strings:

sexo = {
    0: 'Feminino',
    1:"Masculino"
}
dados.Sexo = dados.Sexo.map(sexo)
Para a variável sexo, e:
cores = {
    0:'Indígena',
    2: 'Branca',
    4: 'Preta',
    6: 'Amarela',
    8: 'Parda',
    9: 'Sem declaração'
}

dados.Cor = dados.Cor.map(cores)
Agora, nosso dataframe está da seguinte forma:
UFSexoIdadeCorAnos de EstudoRendaAltura
011Feminino23Parda128001.60381
111Masculino23Branca1211501.73979
211Masculino35Parda158801.76044
311Feminino46Branca635001.78316
411Masculino47Parda91501.69063
Para realizar a tabela de frequência, vou usar o código:
cruzamento = pd.crosstab(dados.Sexo, dados.Cor)
cruzamento
Que resulta em:
SexoAmarelaBrancaIndígenaPardaPreta
Feminino23522194256250635502
Masculino1179621101108622889
E para a de porcentagens:
porcentagem = pd.crosstab(dados.Sexo, dados.Cor, normalize=True)
porcentagem

que resulta em:

SexoAmarelaBrancaIndígenaPardaPreta
Feminino0.00305830.2888340.00333160.3261710.0716033
Masculino0.001522640.1252080.001314420.1413590.0375976

Espero ter ajudado! Caso o erro persista, peço que disponibilize o notebook. Bons estudos!

Acho q com o replace o resultado é o mesmo, mas com o replace o notebook surtou, fiz o mesmo sem tratar as variáveis, funcionou normalmente, depois vou tentar o map para ver.