Pular para conteúdo

Primeiros passos

O Observatório de Pernambuco é a base de dados estatísticos da Condepe/Fidem, a Agência Estadual de Planejamento e Pesquisas de Pernambuco. Ele reúne séries do IBGE, dos ministérios da Saúde, da Educação, do Trabalho e da Fazenda, da Justiça Eleitoral, de órgãos estaduais e de outras fontes, para os 185 municípios de Pernambuco e para o Estado. A consulta pelo navegador fica em https://cf.pe.gov.br/observatorio.

Todas as fontes são publicadas no mesmo formato longo — uma observação por linha, 15 colunas —, e por isso meia dúzia de funções dá conta de todas:

Função Para quê
condepe_catalog() o que existe: as fontes, com tema, período e tamanho
condepe_indicators() os indicadores de uma fonte
condepe_series() a série de um indicador, filtrada por município e ano
condepe_data() uma fonte inteira
condepe_localities() os municípios e seus códigos IBGE

O que existe

condepe_catalog() devolve uma linha por fonte. A relação completa, por eixo e tema, está em Fontes do Observatório.

cat = condepe.condepe_catalog()

cat[["id_fonte", "tema", "indicadores", "ano_inicio", "ano_fim"]].head(8)
                           id_fonte                tema  indicadores  ano_inicio  ano_fim
0          sidra_populacao_estimada          Demografia            1        2001     2026
1               sidra_pib_municipal                 PIB            7        2002     2023
2                  sidra_censo_2022          Demografia            3        2022     2022
3              sidra_area_densidade  Posição e Extensão            2        2010     2010
4                         sidra_pam        Agropecuária          243        2020     2025
5                 sidra_ppm_rebanho        Agropecuária           10        2020     2025
6           sidra_ppm_origem_animal        Agropecuária            9        2020     2025
7  sidra_registro_civil_nascimentos          Demografia            1        2020     2024

O catálogo é versionado; a versão e a citação a usar acompanham o resultado:

print(cat.attrs["version"])

print(cat.attrs["citation"])
2026-11-06_182408
Fontes originais indicadas em cada série (coluna fonte_original); dados coletados, padronizados e organizados pela Condepe/Fidem no Observatório de Pernambuco, versão 2026-11-06_182408, https://cf.pe.gov.br/observatorio.

Quantas fontes há em cada eixo, e quantos indicadores:

cat.groupby("eixo").agg(fontes=("id_fonte", "size"), indicadores=("indicadores", "sum"))
                fontes  indicadores
eixo                               
Economia            26        89374
Infraestrutura       3           39
Social              45        15062
Território           9         9384

Para achar uma fonte por assunto, filtre o catálogo como qualquer tabela:

cat.loc[cat["tema"] == "Saúde", ["id_fonte", "descricao"]]
                        id_fonte                                        descricao
64                   datasus_sim  Óbitos por residência (total, infantis, por ...
65                datasus_sinasc  Nascidos vivos por residência (sexo, parto, ...
66  datasus_mortalidade_infantil  Taxa de mortalidade infantil (óbitos de meno...
67      datasus_estabelecimentos    Estabelecimentos de saúde por tipo de unidade
68         datasus_profissionais  Vínculos de profissionais de saúde por ocupa...
69                datasus_leitos  Leitos existentes, SUS e contratados por tip...
70          datasus_equipamentos  Equipamentos de saúde em uso: total e grupos...
71               datasus_equipes  Equipes de saúde ativas em dezembro, total e...
72           datasus_internacoes  Internações hospitalares do SUS: mensais por...

Os indicadores de uma fonte

A coluna natureza diz como somar no tempo: estoque é uma foto (população, leitos em dezembro) e não se soma entre anos; fluxo é o que aconteceu no período (nascimentos, internações) e se soma.

condepe.condepe_indicators("datasus_mortalidade_infantil")
                                    indicador_base                 unidade natureza  mensal  \
0  Taxa de mortalidade infantil (por mil nascid...  Por mil nascidos vivos  estoque   False   

   observacoes  localidades  ano_inicio  ano_fim  
0         1480          185        2017     2024

Uma série

condepe_series() filtra uma fonte por indicador e, se pedido, por código IBGE — 7 dígitos para município, "26" para o Estado — e por ano. A população do Recife (2611606):

recife = condepe.condepe_series(
    "sidra_populacao_estimada",
    "Populacao residente estimada",
    code="2611606",
    years=range(2010, 2027),
)

recife[["nm_municipio", "ano", "valor", "unidade"]]
   nm_municipio   ano      valor  unidade
0        Recife  2011  1546516.0  Pessoas
1        Recife  2012  1555039.0  Pessoas
2        Recife  2013  1599513.0  Pessoas
3        Recife  2014  1608488.0  Pessoas
4        Recife  2015  1617183.0  Pessoas
5        Recife  2016  1625583.0  Pessoas
6        Recife  2017  1633697.0  Pessoas
7        Recife  2018  1637834.0  Pessoas
8        Recife  2019  1645727.0  Pessoas
9        Recife  2020  1653461.0  Pessoas
10       Recife  2021  1661017.0  Pessoas
11       Recife  2024  1587707.0  Pessoas
12       Recife  2025  1588376.0  Pessoas
13       Recife  2026  1588983.0  Pessoas

O IBGE não publica estimativa municipal em ano de Censo nem no seguinte (2010, 2022, 2023): esses anos simplesmente não aparecem — ausência nunca vira zero.

Os códigos IBGE ficam em condepe_localities():

loc = condepe.condepe_localities()

loc[loc["nm_municipio"].str.contains("Petrolina|Caruaru|Garanhuns")]
    cd_municipio_ibge nm_municipio
45            2604106      Caruaru
67            2606002    Garanhuns
126           2611101    Petrolina

Séries mensais

Fontes mensais trazem o período duas vezes: em mes e no rótulo completo, indicador ("… [MM/AAAA]"). Filtre por indicador_base, o rótulo sem o período:

suape = condepe.condepe_series(
    "porto_suape_carga", "Porto de Suape - Carga bruta total", years=2026
)

suape[["ano", "mes", "indicador", "valor", "unidade"]]
    ano  mes                                     indicador       valor unidade
0  2026    1  Porto de Suape - Carga bruta total [01/2026]  2193515.44       t
1  2026    2  Porto de Suape - Carga bruta total [02/2026]  2084475.15       t
2  2026    3  Porto de Suape - Carga bruta total [03/2026]  2223491.77       t
3  2026    4  Porto de Suape - Carga bruta total [04/2026]  2360768.32       t
4  2026    5  Porto de Suape - Carga bruta total [05/2026]  2403537.67       t
5  2026    6  Porto de Suape - Carga bruta total [06/2026]  2445490.37       t
6  2026    7  Porto de Suape - Carga bruta total [07/2026]  2363978.30       t
7  2026    8  Porto de Suape - Carga bruta total [08/2026]  2726020.02       t
8  2026    9  Porto de Suape - Carga bruta total [09/2026]  2453353.05       t

Uma fonte inteira e as colunas

condepe_data() devolve a fonte completa. As 15 colunas mantêm os nomes com que o Observatório publica, para que todo resultado possa ser rastreado até os arquivos oficiais:

nasc = condepe.condepe_data("datasus_sinasc")

list(nasc.columns)
['cd_municipio_ibge', 'nm_municipio', 'ano', 'mes', 'indicador', 'indicador_base', 'valor', 'unidade', 'natureza', 'id_fonte', 'eixo', 'tema', 'assunto', 'fonte_original', 'arquivo_origem']
Coluna Significado
cd_municipio_ibge, nm_municipio código IBGE (7 dígitos; "26" é o Estado) e nome
ano, mes ano; mês nas séries mensais (vazio nas demais)
indicador, indicador_base rótulo completo (com [MM/AAAA] se mensal) e rótulo sem o período
valor, unidade, natureza valor, unidade, estoque ou fluxo
id_fonte, eixo, tema, assunto a fonte e seu lugar no catálogo
fonte_original, arquivo_origem órgão de origem e o arquivo ou a consulta de onde o valor veio

Para passar ao formato largo (um indicador por coluna), use pivot:

partos = nasc[(nasc["ano"] == 2024) & nasc["indicador_base"].str.contains("Total|Parto")]

partos.pivot(index="nm_municipio", columns="indicador_base", values="valor").head()
indicador_base         Nascidos vivos por ocorrência - Total  \
nm_municipio                                                   
Abreu e Lima                                             8.0   
Afogados da Ingazeira                                 1913.0   
Afrânio                                                133.0   
Agrestina                                              500.0   
Alagoinha                                               14.0   

indicador_base         Nascidos vivos por residência - Parto cesáreo  \
nm_municipio                                                           
Abreu e Lima                                                   499.0   
Afogados da Ingazeira                                          348.0   
Afrânio                                                        143.0   
Agrestina                                                      221.0   
Alagoinha                                                       68.0   

indicador_base         Nascidos vivos por residência - Parto vaginal  \
nm_municipio                                                           
Abreu e Lima                                                   536.0   
Afogados da Ingazeira                                          164.0   
Afrânio                                                         86.0   
Agrestina                                                      113.0   
Alagoinha                                                       86.0   

indicador_base         Nascidos vivos por residência - Total  
nm_municipio                                                  
Abreu e Lima                                          1037.0  
Afogados da Ingazeira                                  512.0  
Afrânio                                                229.0  
Agrestina                                              334.0  
Alagoinha                                              154.0

Cache, espelho e falhas

Os arquivos são baixados uma vez por versão do catálogo e guardados em condepe_cache_dir(), conferidos pelo SHA-256 publicado no catálogo; quando sai uma versão nova, os arquivos antigos são apagados. O próprio catálogo vale por seis horas (refresh=True consulta de novo).

Os dados vêm do endereço canônico, https://cf.pe.gov.br/observatorio/dados/atual/. Se ele não responder, o pacote lê os mesmos arquivos do espelho no Hugging Face, mlkwy/observatorio-pernambuco. Se nenhum responder, levanta condepe.HttpError; um arquivo que não confere com o SHA-256 publicado levanta condepe.IntegrityError.

Citação e licença

Os dados são publicados sob CC BY 4.0: cite a Condepe/Fidem e a versão (condepe_catalog().attrs["citation"]).