1
resposta

Plotar gráfico à partir de uma tabela de frequencias

Oi gente. A partir do exercício da aula, com amostra de dados da Pinade, criei a tabela de frequencia que me mostra a renda média por sexo e cor autodeclarada dos respondentes da pesquisa.

Agora quero ver essa informação através de um gráfico de barras. Mas, não estou conseguindo plotar um gráfico à partir de uma tabela de frequencias. A tabela de frequencias foi feita com o código:

percentual = pd.crosstab(dados.Sexo,
                         dados.Cor,
                         aggfunc = 'mean',
                         values = dados.Renda)
percentual.rename(index = sexo, inplace = True)
percentual.rename(columns = cor, inplace = True)
percentual

Alguem consegue me ajudar?

1 resposta

Olá Guilherme, tudo bem? Espero que sim!

Desculpe pela demora em retornar.

Quando criamos uma tabela de frequências, os dados não ficam muito adequados para criação de gráficos. As bibliotecas matplotlib e seaborn funcionam melhor com os dados organizados em colunas. Portanto uma tabela que contenha uma coluna com a informação de Sexo e uma coluna com a informação de Cor seria necessária para a construção dos gráficos.

Há uma forma simples de transformar o os dados do formato de uma tabela de frequência para o formato adequado para a utilização do matplotlib e seaborn.

Você pode utilizar o método stack() da bilioteca pandas em conjunto com o reset_index() para transformar as informações em novas colunas:

tabela = pd.DataFrame(percentual.stack().reset_index())
tabela

A tabela que antes tinha o formato:

SexoIndígenaBrancaPretaAmarelaParda
Masculino1081.712925.741603.864758.251659.58
Feminino2464.392109.871134.63027.341176.76

Terá agora o formato:

SexoCor0
0MasculinoIndígena1081.71
1MasculinoBranca2925.74
2MasculinoPreta1603.86
3MasculinoAmarela4758.25
4MasculinoParda1659.58
5FemininoIndígena2464.39
6FemininoBranca2109.87
7FemininoPreta1134.6
8FemininoAmarela3027.34
9FemininoParda1176.76

Agora basta utilizar o código para construir o gráfico:

import seaborn as sns
sns.barplot(data = tabela, y = 0, x = 'Cor', hue = 'Sexo')

Caso queira entender melhor o funcionamento do método stack(), consulte a documentação

Bons estudos!