Criando tabelas e gráficos manualmente

Nem sempre temos acesso ao conjunto de dados que gerou determinada tabeça ou gráfico de um texto que estamos lendo.
Nesses casos é preciso inserir os dados um a um.

Aqui vamos reconstruir alguns gráficos e tabelas da Síntese de Indicadores Sociais, 2016, do IBGE.

In [16]:
%matplotlib inline
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style='whitegrid', palette='Accent')

Tabela 2 (p. 19) - Natureza da união conjugal, segundo o sexo

In [2]:
dados = {
    'sexo': ['total', 'homens', 'mulheres'],
    'viviam_total': [56.3, 58.8, 54.1],
    'viviam_casamento': [36.5, 38.1, 35.1],
    'viviam_uniao': [19.8, 20.7, 19],
    'nao_viviam_ja': [18.3, 12.1, 23.9],
    'não_viviam_nunca': [25.4, 29.1, 22]
}
In [6]:
df = pd.DataFrame(dados)
In [7]:
df.columns
Out[7]:
Index(['nao_viviam_ja', 'não_viviam_nunca', 'sexo', 'viviam_casamento',
       'viviam_total', 'viviam_uniao'],
      dtype='object')
In [9]:
df = df.loc[:, ['sexo', 'viviam_total', 'viviam_casamento', 'viviam_uniao', 'nao_viviam_ja', 'não_viviam_nunca']]
In [10]:
df
Out[10]:
sexo viviam_total viviam_casamento viviam_uniao nao_viviam_ja não_viviam_nunca
0 total 56.3 36.5 19.8 18.3 25.4
1 homens 58.8 38.1 20.7 12.1 29.1
2 mulheres 54.1 35.1 19.0 23.9 22.0
In [19]:
df.plot.barh('sexo', width=.7)
plt.legend(bbox_to_anchor=(1,1));

Gráfico 4.7 (p.62). Taxa de frequência líquida ao ensino superior.

In [59]:
dados = {
    'categoria':['total', 'homem', 'mulher', 'branca', 'preta_ou_parda'],
    '2005':[11.4, 9.8, 13, 17.8, 5.5],
    '2015':[18.4, 15.4, 21.7, 26.5, 12.8]
}

df = pd.DataFrame(dados)

df = df.loc[:, ['categoria', '2005', '2015']]

ax = df.plot.bar('categoria', width=.7)
plt.xticks(rotation='0')
plt.xlabel('')
plt.ylim(0, 35)

for p in ax.patches:
    ax.annotate(str(p.get_height()), xy=(p.get_x(), p.get_height() + .5 ), size=10)

# versão rigorosa    
#     ax.annotate("%.1f" % p.get_height(), (p.get_x() + p.get_width() / 2., p.get_height()), 
#                 ha='center', va='center', xytext=(0, 10), textcoords='offset points', size=8);