Extraindo dados do IBGE

[1]:
import pandas as pd
from pysus.online_data import IBGE

import ipywidgets as widgets
%matplotlib inline

Listando Grupos de dados

O IBGE disponibiliza dados de várias pesquisas sobre diferentes assuntos. Podemos descobrir o que está disponível antes de baixar os dados.

[3]:
ag = IBGE.list_agregados()
ag
Fetching Data groupings from https://servicodados.ibge.gov.br/api/v3/agregados?
[3]:
id nome agregados
0 D5 Áreas Urbanizadas [{'id': '8418', 'nome': 'Áreas urbanizadas, Lo...
1 CL Cadastro Central de Empresas [{'id': '1732', 'nome': 'Dados gerais das empr...
2 CA Censo Agropecuário [{'id': '1278', 'nome': 'Agroindústria rural n...
3 ME Censo Comum do Mercosul, Bolívia e Chile [{'id': '2059', 'nome': 'Domicílios e Populaçã...
4 CD Censo Demográfico [{'id': '1301', 'nome': 'Área e Densidade demo...
... ... ... ...
62 VS Produção da Extração Vegetal e da Silvicultura [{'id': '5930', 'nome': 'Área total existente ...
63 PO Produção de Ovos de Galinha [{'id': '915', 'nome': 'Número de informantes,...
64 IO Produto Interno Bruto dos Municípios [{'id': '599', 'nome': 'Índice de Gini do prod...
65 XE Projeção da População [{'id': '7362', 'nome': 'Esperança de vida ao ...
66 SI Sistema Nacional de Pesquisa de Custos e Índic... [{'id': '33', 'nome': 'Custo de projeto m², po...

67 rows × 3 columns

Vamos dar uma olhada nos conjuntos de dados (chamados «agregados») disponíveis dentro da categoria de «Censo Demográfico».

[4]:
pd.DataFrame(ag[ag.id=='CM'].agregados.iloc[0])
[4]:
id nome
0 479 Chefes de domicílios particulares permanentes ...
1 798 Domicílios particulares ocupados por sexo da p...
2 482 Domicílios particulares permanentes por sexo d...
3 580 Domicílios particulares permanentes, População...
4 579 Domicílios particulares permanentes, População...
5 797 Domicílios recenseados por espécie de domicílio
6 319 Média de moradores por domicílio particular pe...
7 553 Média de moradores por domicílio particular pe...
8 481 Média de moradores por domicílio particular pe...
9 552 Média de moradores por domicílio particular pe...
10 476 Pessoas de 4 anos ou mais de idade por frequên...
11 473 Pessoas de 4 anos ou mais de idade por grupos ...
12 477 Pessoas de 4 anos ou mais que frequentam escol...
13 484 Pessoas não residentes no município de residên...
14 478 Pessoas não residentes no município de residên...
15 794 População recenseada por situação do domicílio...
16 793 População residente
17 305 População residente em domicílios particulares...
18 475 População residente por grupos de idade, sexo ...
19 472 População residente por idade, forma de declar...
20 480 População residente por relação com o chefe do...

Novamente para projeções populacionais

[5]:
pd.DataFrame(ag[ag.id=='XE'].agregados.iloc[0])
[5]:
id nome
0 7362 Esperança de vida ao nascer e Taxa de mortalid...
1 7360 Indicadores implícitos na projeção da população
2 7358 População, por sexo e idade
3 7365 Proporção de pessoas, por grupo de idade
4 7363 Taxa específica de fecundidade, por grupo de i...

Extraindo dados

Antes de baixar os dados, pode ser útil olhar para os metadados do conjunto de dados que estamos interessados.

[6]:
opts= [(r.nome, int(r.id)) for r in pd.DataFrame(ag[ag.id=='CM'].agregados.iloc[0]).itertuples()]
ds = widgets.Dropdown(
    options=opts,
    value=475,
    description='Number:',
)
display(ds)
IBGE.metadados(ds.value)
[6]:
{'id': 475,
 'nome': 'População residente por grupos de idade, sexo e situação',
 'URL': 'http://sidra.ibge.gov.br/tabela/475',
 'pesquisa': 'Contagem da População ',
 'assunto': 'Pessoas',
 'periodicidade': {'frequencia': 'anual', 'inicio': 1996, 'fim': 1996},
 'nivelTerritorial': {'Administrativo': ['N102',
   'N1',
   'N10',
   'N2',
   'N8',
   'N9',
   'N6',
   'N3'],
  'Especial': [],
  'IBGE': []},
 'variaveis': [{'id': 93,
   'nome': 'População residente',
   'unidade': 'Pessoas',
   'sumarizacao': []},
  {'id': 1000093,
   'nome': 'População residente - percentual do total geral',
   'unidade': '%',
   'sumarizacao': []}],
 'classificacoes': [{'id': 58,
   'nome': 'Grupo de idade',
   'sumarizacao': {'status': True, 'excecao': []},
   'categorias': [{'id': 0, 'nome': 'Total', 'unidade': None, 'nivel': 0},
    {'id': 1140, 'nome': '0 a 4 anos', 'unidade': None, 'nivel': 1},
    {'id': 1141, 'nome': '5 a 9 anos', 'unidade': None, 'nivel': 1},
    {'id': 1142, 'nome': '10 a 14 anos', 'unidade': None, 'nivel': 1},
    {'id': 1143, 'nome': '15 a 19 anos', 'unidade': None, 'nivel': 1},
    {'id': 1144, 'nome': '20 a 24 anos', 'unidade': None, 'nivel': 1},
    {'id': 1145, 'nome': '25 a 29 anos', 'unidade': None, 'nivel': 1},
    {'id': 1146, 'nome': '30 a 34 anos', 'unidade': None, 'nivel': 1},
    {'id': 1147, 'nome': '35 a 39 anos', 'unidade': None, 'nivel': 1},
    {'id': 1148, 'nome': '40 a 44 anos', 'unidade': None, 'nivel': 1},
    {'id': 1149, 'nome': '45 a 49 anos', 'unidade': None, 'nivel': 1},
    {'id': 1150, 'nome': '50 a 54 anos', 'unidade': None, 'nivel': 1},
    {'id': 1151, 'nome': '55 a 59 anos', 'unidade': None, 'nivel': 1},
    {'id': 1152, 'nome': '60 a 64 anos', 'unidade': None, 'nivel': 1},
    {'id': 1153, 'nome': '65 a 69 anos', 'unidade': None, 'nivel': 1},
    {'id': 3244, 'nome': '70 anos ou mais', 'unidade': None, 'nivel': 1},
    {'id': 3245, 'nome': 'Idade ignorada', 'unidade': None, 'nivel': 1}]},
  {'id': 2,
   'nome': 'Sexo',
   'sumarizacao': {'status': True, 'excecao': []},
   'categorias': [{'id': 0, 'nome': 'Total', 'unidade': None, 'nivel': 0},
    {'id': 4, 'nome': 'Homens', 'unidade': None, 'nivel': 1},
    {'id': 5, 'nome': 'Mulheres', 'unidade': None, 'nivel': 1}]},
  {'id': 1,
   'nome': 'Situação do domicílio',
   'sumarizacao': {'status': True, 'excecao': []},
   'categorias': [{'id': 0, 'nome': 'Total', 'unidade': None, 'nivel': 0},
    {'id': 1, 'nome': 'Urbana', 'unidade': None, 'nivel': 1},
    {'id': 2, 'nome': 'Rural', 'unidade': None, 'nivel': 1}]}]}
[7]:
IBGE.lista_periodos(475)
[7]:
id literals
0 1996 [1996]
[8]:
IBGE.localidades_por_agregado(475, nivel='N3')
[8]:
id nome nivel
0 11 Rondônia {'id': 'N3', 'nome': 'Unidade da Federação'}
1 12 Acre {'id': 'N3', 'nome': 'Unidade da Federação'}
2 13 Amazonas {'id': 'N3', 'nome': 'Unidade da Federação'}
3 14 Roraima {'id': 'N3', 'nome': 'Unidade da Federação'}
4 15 Pará {'id': 'N3', 'nome': 'Unidade da Federação'}
5 16 Amapá {'id': 'N3', 'nome': 'Unidade da Federação'}
6 17 Tocantins {'id': 'N3', 'nome': 'Unidade da Federação'}
7 21 Maranhão {'id': 'N3', 'nome': 'Unidade da Federação'}
8 22 Piauí {'id': 'N3', 'nome': 'Unidade da Federação'}
9 23 Ceará {'id': 'N3', 'nome': 'Unidade da Federação'}
10 24 Rio Grande do Norte {'id': 'N3', 'nome': 'Unidade da Federação'}
11 25 Paraíba {'id': 'N3', 'nome': 'Unidade da Federação'}
12 26 Pernambuco {'id': 'N3', 'nome': 'Unidade da Federação'}
13 27 Alagoas {'id': 'N3', 'nome': 'Unidade da Federação'}
14 28 Sergipe {'id': 'N3', 'nome': 'Unidade da Federação'}
15 29 Bahia {'id': 'N3', 'nome': 'Unidade da Federação'}
16 31 Minas Gerais {'id': 'N3', 'nome': 'Unidade da Federação'}
17 32 Espírito Santo {'id': 'N3', 'nome': 'Unidade da Federação'}
18 33 Rio de Janeiro {'id': 'N3', 'nome': 'Unidade da Federação'}
19 35 São Paulo {'id': 'N3', 'nome': 'Unidade da Federação'}
20 41 Paraná {'id': 'N3', 'nome': 'Unidade da Federação'}
21 42 Santa Catarina {'id': 'N3', 'nome': 'Unidade da Federação'}
22 43 Rio Grande do Sul {'id': 'N3', 'nome': 'Unidade da Federação'}
23 50 Mato Grosso do Sul {'id': 'N3', 'nome': 'Unidade da Federação'}
24 51 Mato Grosso {'id': 'N3', 'nome': 'Unidade da Federação'}
25 52 Goiás {'id': 'N3', 'nome': 'Unidade da Federação'}
26 53 Distrito Federal {'id': 'N3', 'nome': 'Unidade da Federação'}

Para baixar os dados depois de escolher o conjunto de dados, podemos usar a classe FetchData, que irá buscar os dados e disponibilizá-los tanto em formato JSON quanto em Dataframe, conforme exemplificado abaixo.

[19]:
ds = IBGE.FetchData(475,periodos=1996,variavel=93,localidades='N3[all]',
                              classificacao='58[all]|2[4,5]|1[all]',view='flat')
ds.JSON[0]
Fetching https://servicodados.ibge.gov.br/api/v3/agregados/475/periodos/1996/variaveis/93?localidades=N3[all]&classificacao=58[all]|2[4,5]|1[all]&view=flat
[19]:
{'NC': 'Nível Territorial (Código)',
 'NN': 'Nível Territorial',
 'D1C': 'Unidade da Federação (Código)',
 'D1N': 'Unidade da Federação',
 'D2C': 'Ano (Código)',
 'D2N': 'Ano',
 'D3C': 'Variável (Código)',
 'D3N': 'Variável',
 'D4C': 'Grupo de idade (Código)',
 'D4N': 'Grupo de idade',
 'D5C': 'Sexo (Código)',
 'D5N': 'Sexo',
 'D6C': 'Situação do domicílio (Código)',
 'D6N': 'Situação do domicílio',
 'MC': 'Unidade de Medida (Código)',
 'MN': 'Unidade de Medida',
 'V': 'Valor'}
[17]:
ds.to_dataframe()
[17]:
NC NN D1C D1N D2C D2N D3C D3N D4C D4N D5C D5N D6C D6N MC MN V
0 Nível Territorial (Código) Nível Territorial Unidade da Federação (Código) Unidade da Federação Ano (Código) Ano Variável (Código) Variável Grupo de idade (Código) Grupo de idade Sexo (Código) Sexo Situação do domicílio (Código) Situação do domicílio Unidade de Medida (Código) Unidade de Medida Valor
1 3 Unidade da Federação 11 Rondônia 1996 1996 93 População residente 0 Total 4 Homens 0 Total 45 Pessoas 633594
2 3 Unidade da Federação 11 Rondônia 1996 1996 93 População residente 0 Total 4 Homens 1 Urbana 45 Pessoas 380119
3 3 Unidade da Federação 11 Rondônia 1996 1996 93 População residente 0 Total 4 Homens 2 Rural 45 Pessoas 253475
4 3 Unidade da Federação 11 Rondônia 1996 1996 93 População residente 0 Total 5 Mulheres 0 Total 45 Pessoas 595712
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2750 3 Unidade da Federação 53 Distrito Federal 1996 1996 93 População residente 3245 Idade ignorada 4 Homens 1 Urbana 45 Pessoas 1073
2751 3 Unidade da Federação 53 Distrito Federal 1996 1996 93 População residente 3245 Idade ignorada 4 Homens 2 Rural 45 Pessoas 94
2752 3 Unidade da Federação 53 Distrito Federal 1996 1996 93 População residente 3245 Idade ignorada 5 Mulheres 0 Total 45 Pessoas 1381
2753 3 Unidade da Federação 53 Distrito Federal 1996 1996 93 População residente 3245 Idade ignorada 5 Mulheres 1 Urbana 45 Pessoas 1286
2754 3 Unidade da Federação 53 Distrito Federal 1996 1996 93 População residente 3245 Idade ignorada 5 Mulheres 2 Rural 45 Pessoas 95

2755 rows × 17 columns

Usando o endpoint SIDRA

O IBGE também possui uma API mais simples em https://api.sidra.ibge.gov.br que o PySUS também acessa através de uma função simples. Abaixo temos a tabela 200, que é uma amostra da população residente. A classificação 2 é o sexo, do qual estou buscando todas as categorias: total, Homens e Mulheres. O nível territorial 6 é o município.

[4]:
df = IBGE.get_sidra_table(200,territorial_level=6,classification=2, categories='all')
df
Requesting data from https://apisidra.ibge.gov.br/values/t/200/n6/all/c2/all
[4]:
NC NN D1C D1N D2C D2N D3C D3N D4C D4N D5C D5N D6C D6N MC MN V
0 Nível Territorial (Código) Nível Territorial Município (Código) Município Sexo (Código) Sexo Ano (Código) Ano Variável (Código) Variável Situação do domicílio (Código) Situação do domicílio Grupo de idade (Código) Grupo de idade Unidade de Medida (Código) Unidade de Medida Valor
1 6 Município 1100015 Alta Floresta D'Oeste - RO 0 Total 2010 2010 93 População residente 0 Total 0 Total 45 Pessoas 24392
2 6 Município 1100015 Alta Floresta D'Oeste - RO 4 Homens 2010 2010 93 População residente 0 Total 0 Total 45 Pessoas 12656
3 6 Município 1100015 Alta Floresta D'Oeste - RO 5 Mulheres 2010 2010 93 População residente 0 Total 0 Total 45 Pessoas 11736
4 6 Município 1100023 Ariquemes - RO 0 Total 2010 2010 93 População residente 0 Total 0 Total 45 Pessoas 90353
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
16691 6 Município 5222302 Vila Propício - GO 4 Homens 2010 2010 93 População residente 0 Total 0 Total 45 Pessoas 2689
16692 6 Município 5222302 Vila Propício - GO 5 Mulheres 2010 2010 93 População residente 0 Total 0 Total 45 Pessoas 2456
16693 6 Município 5300108 Brasília - DF 0 Total 2010 2010 93 População residente 0 Total 0 Total 45 Pessoas 2570160
16694 6 Município 5300108 Brasília - DF 4 Homens 2010 2010 93 População residente 0 Total 0 Total 45 Pessoas 1228880
16695 6 Município 5300108 Brasília - DF 5 Mulheres 2010 2010 93 População residente 0 Total 0 Total 45 Pessoas 1341280

16696 rows × 17 columns

Suponha que quiséssemos apenas um município, Balneário Rincão (SC): Infelizmente, para este não há dados disponíveis, portanto, há um na coluna Valor. Tente outro município.

[11]:
single = IBGE.get_sidra_table(200,territorial_level=6, geocode=4220000,period='last',classification=2, categories='all')
single
Requesting data from https://apisidra.ibge.gov.br/values/t/200/n6/4220000/p/last/c2/all
[11]:
NC NN D1C D1N D2C D2N D3C D3N D4C D4N D5C D5N D6C D6N MC MN V
0 Nível Territorial (Código) Nível Territorial Município (Código) Município Ano (Código) Ano Sexo (Código) Sexo Variável (Código) Variável Situação do domicílio (Código) Situação do domicílio Grupo de idade (Código) Grupo de idade Unidade de Medida (Código) Unidade de Medida Valor
1 6 Município 4220000 Balneário Rincão (SC) 2010 2010 0 Total 93 População residente 0 Total 0 Total 45 Pessoas ...
2 6 Município 4220000 Balneário Rincão (SC) 2010 2010 4 Homens 93 População residente 0 Total 0 Total 45 Pessoas ...
3 6 Município 4220000 Balneário Rincão (SC) 2010 2010 5 Mulheres 93 População residente 0 Total 0 Total 45 Pessoas ...
[ ]: