Bibliotecas
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
= pd.read_csv("dados_dengue_2023.csv")
df
# Exibir as primeiras linhas da tabela
print(df.head())
# Agrupar e contar casos por ano e sexo
= df.groupby(['nu_ano', 'sexo']).size()
casos_por_sexo 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
= df['idade'].dropna().values # Remover valores ausentes e converter para array NumPy
idades = np.mean(idades)
media_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
'nu_ano'].value_counts().sort_index().plot(kind='bar')
df['Número de Casos de Dengue por Ano')
plt.title('Ano')
plt.xlabel('Número de Casos')
plt.ylabel( 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
=df, x='idade', y='casos', hue='sexo')
sns.scatterplot(data'Distribuição de Casos de Dengue por Idade e Sexo')
plt.title( 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
= df[df['sexo'] == 'M']['idade'].dropna()
idade_homem = df[df['sexo'] == 'F']['idade'].dropna()
idade_mulher
= stats.ttest_ind(idade_homem, idade_mulher)
t_stat, p_value 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
'const'] = 1 # Adicionar constante para o modelo
df[= sm.Logit(df['obito'], df[['const', 'idade', 'hospitalizacao']])
model = model.fit()
result
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
= bd.read_table('br_ms_sus_internacoes', 'internacoes_hospitalares')
df 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
= SIH.download('SP', 2023)
df_sih 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
= pd.read_csv("dados_sus.csv")
df 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:
Acesse o DATASUS TabNet.
Selecione a base de dados de interesse.
Exporte os dados em formato CSV e, em seguida, use
Pandas
para análise.