Exercícios sobre gráficos



1. Use o comando essencial para gráficos aparecerem no notebook.

In [3]:
%matplotlib inline

2. Carregue o pacote pandas como pd.

In [4]:
import pandas as pd

3. Carregue o pacote matplotlib.pyplot como plt.

In [5]:
import matplotlib.pyplot as plt

4. Carregue o pacote seaborn como sns.

In [6]:
import seaborn as sns

5. Defina o estilo dos gráficos e a paleta de cores.

Dica: use o comando set() do seaborn. Você pode escolher qualquer estilo e qualquer paleta.

In [7]:
sns.set(style='whitegrid', palette='pastel')

6. Carregue os dados da pnad, criando um objeto pnad.

In [8]:
pnad = pd.read_csv('pnad_amostra.csv')

7. Crie um histograma das idades

In [10]:
pnad.idade.plot.hist();

8. Crie um histograma das idades com 30 classes e usando a cor preta.

In [8]:
pnad.idade.plot.hist(30, color='black');

9. Crie um histograma dos rendimentos entre 1000 e 5000 reais.

In [16]:
pnad.query('1000 < rendimento < 5000').rendimento.plot.hist();

10. Crie um novo objeto chamado pnad10, que contenha 10 observações do conjunto de dados.

In [10]:
pnad10 = pnad[:10]

11. Crie um gráfico de barras das idades em pnad10.

In [11]:
pnad10.idade.plot.bar();

12. Repita o mesmo gráfico de barras, mas colorindo as barras de preto.

In [12]:
pnad10.idade.plot.bar(color='black');

13. Repita o mesmo gráfico, mas ordenando as idades (ordem crescente).

In [13]:
pnad10.idade.sort_values().plot.bar();

14. Faça um gráfico de barras horizontais das idades, em ordem descrescente.

In [14]:
pnad10.idade.sort_values(ascending=False).plot.barh();

15. Voltemos a usar os dados da pnad, não pnad10.

Faça um histograma dos rendimentos, com 50 classes e colocando títulos nos dois eixos.

In [15]:
pnad.rendimento.plot.hist(50)
plt.xlabel('rendimentos (R$)')
plt.ylabel('frequência');

16. Refaça o histograma acima dividindo os dados em 100 classes, terminando o eixo x em 5000 e o eixo y em 500.

In [16]:
pnad.rendimento.plot.hist(100)
plt.xlabel('rendimentos (R$)')
plt.ylabel('frequência')
plt.xlim(0, 5000)
plt.ylim(0, 500);

17. Faça um diagrama de dispersão entre idade e rendimento.

In [17]:
pnad.plot.scatter('idade', 'rendimento');

18. Refaça o mesmo diagrama usando a função lmplot( ) do seaborn.

In [19]:
sns.lmplot('idade', 'rendimento', data=pnad);

19. Faça um boxplot do rendimento usando o seaborn.

In [21]:
sns.boxplot('rendimento', data=pnad);

20. Refaça o boxplot acima analisando cada sexo separadamente.

Dica: antes, é preciso transformar a variável sexo em categórica.
Use este comando:

pnad.sexo = pnad.sexo.astype('category')
In [23]:
pnad.sexo = pnad.sexo.astype('category')
sns.boxplot('rendimento', 'sexo', data=pnad);

Exercícios avançados (opcionais)

21. Os outliers estão atrapalhando a visualização. Refaça o gráfico acima mostrando apenas as observações com rendimento menor do que R\$5.000.

In [29]:
pnad2 = pnad.query('rendimento < 5000')
sns.boxplot('rendimento', 'sexo', data=pnad2);

22. Faça boxplots dos rendimentos para cada um dos estados (variável "uf"), incluindo apenas os rendimentos menores do que 5000.

Dica 1: para o gráfico ficar maior, antes do comando do seaborn, use: plt.figure(figsize=(10, 10)).
Dica 2: é preciso transformar uf em uma variável categórica.

In [38]:
plt.figure(figsize=(10, 10))
pnad.uf = pnad.uf.astype('category')
sns.boxplot('rendimento', 'uf', data=pnad.query('rendimento < 5000'), palette='Accent');