Bibliotecas

e-Book: EpyDEMIOLOGIA COM PYTHON

No campo da epidemiologia, o uso de dados públicos, como aqueles fornecidos pelo Sistema Único de Saúde (SUS), exige ferramentas que permitam a manipulação, visualização e análise desses dados de forma eficiente. Python oferece diversas bibliotecas que facilitam esse trabalho, sendo as principais Pandas, NumPy, Matplotlib, Seaborn, além de outras complementares que podem ser úteis na análise epidemiológica.

Pandas

Pandas é a principal biblioteca em Python para manipulação de dados, fornecendo estruturas de dados como DataFrame, que são ideais para trabalhar com grandes tabelas de dados epidemiológicos.

Características principais:

  • Manipulação eficiente de tabelas e séries de dados.

  • Suporte para leitura de dados de diversos formatos como CSV, Excel e bases SQL.

  • Funções robustas para limpeza de dados, tratamento de valores ausentes e agregação de informações.

Comandos mais utilizados:

  • pd.read_csv(): Para ler arquivos CSV, o formato comum das bases de dados do SUS.

  • df.describe(): Para obter estatísticas descritivas básicas.

  • df.groupby(): Agrupamento de dados por variáveis, como ano, sexo, região.

  • df.isnull().sum(): Para identificar valores ausentes nas variáveis.

Exemplo:

import pandas as pd

# Leitura de uma base de dados de dengue do SUS
df = pd.read_csv("dados_dengue_2023.csv")

# Exibir as primeiras linhas da tabela
print(df.head())

# Agrupar e contar casos por ano e sexo
casos_por_sexo = df.groupby(['nu_ano', 'sexo']).size()
print(casos_por_sexo)

NumPy

NumPy é uma biblioteca para cálculos matemáticos e manipulação de arrays em Python. Embora seja mais conhecida no campo da computação científica, também é útil em epidemiologia para operações matemáticas de alto desempenho.

Características principais:

  • Suporte a arrays multidimensionais (matrizes), que podem ser úteis para manipulação de grandes conjuntos de dados.

  • Funções matemáticas avançadas e rápidas.

  • Integração perfeita com Pandas e outras bibliotecas.

Comandos mais utilizados:

  • np.array(): Para criar arrays numéricos.

  • np.mean(), np.median(), np.std(): Para calcular média, mediana e desvio padrão de séries de dados.

Exemplo:

import numpy as np

# Cálculo da média de idades dos pacientes
idades = df['idade'].dropna().values  # Remover valores ausentes e converter para array NumPy
media_idades = np.mean(idades)
print(f'Média de idades dos casos notificados: {media_idades}')

Matplotlib

Matplotlib é a principal biblioteca de visualização de dados em Python. Permite criar gráficos estáticos e personalizáveis, úteis para a apresentação de dados epidemiológicos.

Características principais:

  • Criação de gráficos simples como histogramas, scatter plots e gráficos de barras.

  • Totalmente personalizável, permitindo ajustes finos nos gráficos.

  • Integração com Pandas para fácil criação de gráficos a partir de DataFrames.

Comandos mais utilizados:

  • plt.plot(), plt.bar(), plt.hist(): Para criar gráficos de linhas, barras e histogramas.

  • plt.title(), plt.xlabel(), plt.ylabel(): Para adicionar títulos e rótulos aos gráficos.

Exemplo:

import matplotlib.pyplot as plt

# Gráfico de barras de casos por ano
df['nu_ano'].value_counts().sort_index().plot(kind='bar')
plt.title('Número de Casos de Dengue por Ano')
plt.xlabel('Ano')
plt.ylabel('Número de Casos')
plt.show()

Seaborn

Seaborn é uma biblioteca construída sobre o Matplotlib, oferecendo gráficos mais avançados e com melhor estética por padrão. É especialmente útil para visualizações estatísticas, como correlações e distribuições.

Características principais:

  • Visualizações estilizadas por padrão, incluindo gráficos de dispersão, violin plot e heatmaps.

  • Fácil integração com dados categóricos e numéricos.

  • Ideal para análise exploratória de dados.

Comandos mais utilizados:

  • sns.heatmap(): Para criar mapas de calor, útil em análises de correlação.

  • sns.boxplot(): Para análise de distribuição e variabilidade de dados.

  • sns.countplot(): Para contagens de variáveis categóricas.

Exemplo:

import seaborn as sns

# Gráfico de dispersão de casos por faixa etária e sexo
sns.scatterplot(data=df, x='idade', y='casos', hue='sexo')
plt.title('Distribuição de Casos de Dengue por Idade e Sexo')
plt.show()

SciPy

SciPy é uma biblioteca complementar ao NumPy, oferecendo ferramentas para estatísticas avançadas, otimização e integração numérica. Em epidemiologia, SciPy pode ser utilizada para análises estatísticas mais complexas, como testes de hipóteses e regressões.

Características principais:

  • Testes estatísticos, como t-tests e análise de variância.

  • Ferramentas para álgebra linear e otimização.

  • Extensa coleção de funções científicas.

Comandos mais utilizados:

  • scipy.stats.ttest_ind(): Para realizar um teste t de duas amostras independentes.

  • scipy.stats.pearsonr(): Para calcular o coeficiente de correlação de Pearson.

Exemplo:

from scipy import stats

# Teste t para comparar a idade média entre sexos
idade_homem = df[df['sexo'] == 'M']['idade'].dropna()
idade_mulher = df[df['sexo'] == 'F']['idade'].dropna()

t_stat, p_value = stats.ttest_ind(idade_homem, idade_mulher)
print(f'Testatística: {t_stat}, Valor-p: {p_value}')

Statsmodels

Statsmodels é uma biblioteca focada em análise estatística e econométrica. Ela é particularmente útil em análises epidemiológicas que envolvem regressão logística, modelos de sobrevivência e séries temporais.

Características principais:

  • Implementação de modelos estatísticos como regressão linear, regressão logística e modelos de séries temporais.

  • Fácil integração com Pandas e saída detalhada de resultados estatísticos.

Comandos mais utilizados:

  • sm.OLS(): Para realizar uma regressão linear.

  • sm.Logit(): Para regressão logística.

Exemplo:

import statsmodels.api as sm

# Regressão logística para prever o desfecho (óbito/não óbito) com base na idade e hospitalização
df['const'] = 1  # Adicionar constante para o modelo
model = sm.Logit(df['obito'], df[['const', 'idade', 'hospitalizacao']])
result = model.fit()

print(result.summary())

Base dos dados

A biblioteca basedosdados oferece acesso a conjuntos de dados públicos do Brasil, incluindo muitos dados de saúde relacionados ao SUS. Essa biblioteca facilita o acesso a bases de dados através de consultas SQL, simplificando o download e a análise de grandes volumes de informações.

Características principais:

  • Acesso a várias bases públicas de dados, incluindo saúde, educação e economia.

  • Permite realizar consultas SQL diretamente na base de dados sem necessidade de baixar arquivos CSV.

  • Suporte para integração com Google Cloud BigQuery.

Comandos mais utilizados:

  • bd.read_table(): Para carregar uma tabela diretamente em um DataFrame Pandas.

  • bd.get_dataset(): Para acessar metadados e descrições dos conjuntos de dados disponíveis.

Exemplo:

import basedosdados as bd

# Carregar dados de internações hospitalares do SUS diretamente no Python
df = bd.read_table('br_ms_sus_internacoes', 'internacoes_hospitalares')
print(df.head())

pySUS

O pySUS é uma biblioteca que fornece uma interface em Python para acessar e tratar dados do SUS, especialmente os arquivos fornecidos pelo DATASUS, como o Sistema de Informação de Mortalidade (SIM) e o Sistema de Informações Hospitalares (SIH).

Características principais:

  • Acesso e extração de dados de arquivos DBF do DATASUS.

  • Ferramentas para tratar e limpar os dados específicos de sistemas de saúde, como SIH, SINASC e SIM.

  • Automatiza a conversão de arquivos em formatos legíveis (DBF para CSV ou Pandas DataFrame).

Comandos mais utilizados:

  • download(): Para baixar dados do DATASUS em formato DBF.

  • convert_dbf(): Para converter arquivos DBF em DataFrames.

Exemplo:

from pysus.online_data import SIH

# Baixar dados de internações hospitalares do SIH por região e ano
df_sih = SIH.download('SP', 2023)
print(df_sih.head())

SGB (Sistema de Gestão de Bibliotecas de Saúde)

Não é uma biblioteca Python propriamente dita, mas o Sistema de Gestão de Bases de Dados (SGB) é uma plataforma desenvolvida pela Fiocruz que facilita o acesso e a visualização de bases de dados públicas de saúde. A partir desta plataforma, você pode baixar bases de dados em formatos como CSV para posterior análise em Python.

Recursos:

  • Acesso a bases de dados relacionadas à saúde pública, incluindo dados do SUS.

  • Ferramentas para visualização e exportação de dados.

Exemplo:

import pandas as pd

# Leitura de dados do SUS exportados em CSV
df = pd.read_csv("dados_sus.csv")
print(df.head())

Outras Alternativas

Além dessas bibliotecas, há várias bases de dados públicas do Ministério da Saúde disponíveis para download diretamente, como o TabNet, que permite gerar tabelas personalizadas de diversas fontes de dados de saúde e exportá-las para análise em Python. Essas bases podem ser manipuladas facilmente com bibliotecas como Pandas.

Exemplo de download de dados via TabNet:

  1. Acesse o DATASUS TabNet.

  2. Selecione a base de dados de interesse.

  3. Exporte os dados em formato CSV e, em seguida, use Pandas para análise.