Detecção de doenças cardiovasculares: análise exploratória utilizando Python

Cardiovascular Disease Dataset

Robson Serafim
comunidadeds
Published in
6 min readJul 18, 2022

--

Acredito que o objetivo final da ciência de dados sempre será gerar retorno para a sociedade. Assim, a utilização dessa ciência em campos da área da saúde é um tema extremamente importante e possui diversas leituras e utilizações relevantes para a sociedade. Diante disso, ao estudar mais a fundo a área de EDA (Exploratory Data Analysis), decidi buscar uma fonte de dados na área da saúde para criar um projeto de data science.

Encontrei no kaggle uma fonte de dados relevante que relaciona fatores de risco e doenças cardiovasculares. Diante do fato de que, segundo a Organização Mundial de Saúde (OMS), as doenças cardiovasculares são a principal causa de mortes no mundo, levando a óbito cerca de 17.7 milhões de pessoas todos os anos, escolhi esse dataset para elaborar uma análise exploratória.

O dataset utilizado se chama Cardio Vascular Disease dataset e possui 70.000 observações e apresenta 12 características distintas, tais como idade, sexo, pressão arterial, níveis de colesterol, níveis de glicose, fumante ou não fumante etc. A variável-alvo se chama cardio e recebe o valor “0” quando o paciente é saudável e o valor “1” quando o paciente apresenta doença cardiovascular.

1. Descrição dos dados:

A tabela abaixo foi criada para caracterizar as variáveis que encontraremos ao longo do dataset:

Tabela 1: descrição das variáveis

Como dito, o dataset possui 70.000 linhas e 12 colunas, sendo elas divididas nas variáveis descritas acima. A descrição do dataset afirma que todos os valores do conjunto de dados foram coletados no momento do exame.

2. Analisando os dados:

A primeira etapa para elaborar um projeto de ciência de dados é analisar o conjunto de dados que temos em mão, assim primeiramente importei todas as bibliotecas que serão utilizadas. Na sequência, os primeiros registros dos dados, bem como sua dimensão e o método .info() para descobrir os tipos de variáveis do dataset, quantidade e se há variáveis nulas:

3. Preparação dos dados:

Ao analisar as variáveis é possível perceber alguns pontos que podem ser aperfeiçoados antes da análise exploratória. Primeiro, para facilitar a interpretação dos dados, vamos alterar a variável age que está em dias para anos.

Posteriormente incluímos a coluna do Índice de Massa Corpórea (IMC), que é caracterizado por definir o índice de adiposidade no corpo (peso / altura²). A relação do IMC com doenças cardiovasculares é amplamente discutido na área da saúde e, por isso, resolvemos analisar essa correlação em nosso dataset. Por último, retiramos a coluna ID por não achar relevante para os estudos.

Ao olhar com mais detalhe a distribuição dos dados foi possível observar alguns valores que podem ser classificados como outliers que poderão prejudicar as futuras análises.

Estatística descritiva das variáveis

Por exemplo, o mínimo da variável height é 55 cm e o mínimo da variável weight está como 10kg, o que não condiz com o mínimo da variável age que é 29 anos. Outra variável que precisaremos tratar são os pares entre pressão sistólica (ap_hi) e pressão diastólica (ap_lo). Existem pressões negativas, o que é impossível e a máxima em valores na casa dos milhares. Para corrigir os outliers do dataset criamos uma função baseada na abordagem de Intervalo Interquartil (IQR):

Função para remover outliers pelo Intervalo Interquartil

4. Análise exploratória:

Após o tratamento dos dados, o dataset para estudo de análise exploratória apresentou o formato de 65.708 linhas e 12 colunas. A primeira análise realizada partiu da seguinte hipótese: é possível afirmar que quanto maior a idade, maior a chance de desenvolver doenças cardíacas?

O histograma acima demonstra que a distribuição da idade presente no dataset. O boxplot ao lado confronta os intervalos de idade perante a variável target “cardio e confirma a hipótese de que o grupo que apresenta doença cardiovascular possui, na média, maior idade do que o grupo saudável. Através do boxplot também é possível observar que os nosso dados são de uma população já mais velha, pois somente 25% dela possui menos de 48 anos.

Ainda, no histograma abaixo é possível identificar que a partir dos 55 anos a quantidade de pacientes que apresentam doenças cardiovasculares é maior do que a de pacientes saudáveis.

Código:

Saída:

Count Age x Target

A segunda hipótese do projeto foi explorar se há alguma relação entre gênero e a presença de doença cardiovascular. No dataset existem 42.800 dados de mulheres, nos quais 21.708 apresentam doença cardiovascular e 21.092 são saudáveis. Nos dados do gênero masculino, 11.624 possuem doença cardiovascular e 11.284 não possuem, com um total de 22.908 pacientes homens. Aparentemente não há relação entre gênero e a presença de doença cardiovascular.

Gender x Target

Assim, continuou-se a análise ao agrupar os dados por gênero frente a variável target para a criação de um gráfico em que é possível confirmar que de fato não há uma relação direta entre gênero e a presença de doença cardiovascular:

Código:

Saída:

Posteriormente, devido as variáveis cholesterol e gluc possuírem 03 níveis de medição entre os seus dados (normal (1), acima do normal (2) e muito acima do normal (3) ), resolveu-se explorar se há uma correlação direta entre tais níveis e a presença de doença cardiovascular. Para tanto, realizou-se o agrupamento das variáveis escolhidas frente a média da variável cardio, conforme os gráficos abaixo:

Assim, os gráficos demonstram que há uma clara tendência em que quanto maior o nível de colesterol ou glicose maior a chance do paciente apresentar doenças cardiovasculares.

Por último, após as análises elaboradas, abaixo demonstro as correlações entre todas as variáveis presentes no dataset, através do HeatMap:

Conclusão

Como dito, as doenças cardiovasculares é a principal causa de mortes no mundo e, só no Brasil, matam pelo menos 400.000 pessoas todo ano (OMS), o que mostra a importância de se utilizar data Science como ferramenta para gerar análises e conclusões preciosas sobre um assunto tão importante.

A análise exploratória aqui demonstrada teve como objetivo fornecer insights sobre diferentes variáveis relacionadas a presença de doenças cardíacas nos pacientes analisados.

Como próximos passos, o objetivo será realizar novas análises, como por exemplo a relação entre a pressão sistólica e diastólica e algumas análises com o IMC. E, ainda, elaborar modelos de machine learning que possam ser utilizados neste dataset, gerando insights ainda mais poderosos e expandir a utilização do projeto.

Caso tenha interesse em explorar o notebook completo desse projeto, segue o link do projeto em meu github!

--

--