O que aprendemos com o Titanic? Uma análise de Data Science

Todo mundo conhece essa linda história de amor: Jack e Rose, um amor impossível em um navio romântico que ultrapassa as amarras de classes sociais e preconceitos.

Mas o maior e mais seguro transatlântico do mundo, que demorou longos 4 anos para ser construído, naufragou tragicamente no dia 14 de abril de 1912.

Segundo levantamentos, 1.514 pessoas morreram na tragédia, mas o acidente serviu para determinar uma série de padrões de segurança posteriores, como a presença de botes e de coletes salvas vidas suficientes para todos os tripulantes do navio.

O Nanodegree em Fundamentos de Data Science I, da Udacity tem como proposta de conclusão de curso, a análise dos dados do Titanic e nos instiga e a entender melhor quem foram os sobreviventes e quais são os seus perfis, este artigo portanto, foi baseado no trabalho desenvolvido a partir do Nanodegree (que são minicursos em determinada área da computação, oferecidos pela Udacity).

Mas o que é Data Science mesmo?

Estamos na era da informação, geramos dados e lidamos com dados, 24 horas por dia, mesmo que você não perceba. O seu like em uma foto de um amigo vira um dado, o seu checking no Instagram vira um dado, a sua compra no cartão de crédito também vira um dado.

A medida que os dados se multiplicam, estamos aprendendo cada vez mais a lidar com eles, entendendo como coletar, organizar e analisar tudo isso. Nos últimos anos, a Data Science ou Ciência de Dados, fez de tudo, desde prever o preço das ações até evitar incêndios domésticos.

O Cientista de Dados é o profissional do futuro! O Harvard Business Review referiu-se a ele como “a profissão mais sexy do século XXI”. E não é apenas sexy, paga-se muito bem, segundo o site Love Mondays, no Brasil, o salário gira entre R$ 9.000 a R$27.000 reais, o que já da para comprar o pão com manteiga, nutella e caviar de cada dia né?

E o que o Cientista de Dados faz?

O Cientista de Dados essencialmente faz descobertas enquanto navega pelos dados, ele é responsável por:

  • Limpar, extrair, transformar e carregar dados de vários bancos, formatos e fontes de dados;
  • Usar técnicas de análise exploratória de dados para identificar relações significativas, padrões ou tendências de um complexo conjunto de dados;
  • Classificar dados não rotulados ou prever o futuro com estatística aplicada e algoritmos de machine learning;
  • Comunicar análises e descobertas por meio de visualizações de dados eficazes

E faremos exatamente tudo isso neste tutorial, então se você se interessou pela profissão, dá uma olhada no passo-a-passo ai.

Dados Utilizados

Neste projeto, iremos utilizar o dataset (o conjunto de dados) disponibilizado pelo pessoal da Udacity e a partir dai vamos levantar algumas perguntas e respondê-las observando o padrão dos dados disponíveis. Importante ressaltar que infelizmente não temos dados sobre todos os passageiros, temos dados apenas de 891 pessoas presentes no Titanic. O dataset completo utilizado pode ser visto neste link aqui.

Mãos a obra!

Para a realização deste projeto, utilizamos a linguagem Python na versão 3.6.6, se você não possui o Python instalado em sua máquina, aconselho fortemente a utilizar o ambiente Anaconda, pois torna a instalação fácil e intuitiva. Você pode fazer o download aqui.

Instalando bibliotecas

Este projeto utiliza apenas três bibliotecas, para instalá-las, abra o seu prompt de comando e digite:

pip install numpy
pip install pandas
pip install matplotlib

Importando as bibliotecas

Agora insira no topo do seu código Python as bibliotecas que serão utilizadas:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

Lendo o dataset

O dataset são os arquivos disponibilizados sobre os passageiros do Titanic, é a partir da análise dele que a “mágica” acontece e conseguimos tirar conclusões sobre o que de fato ocorreu no dia da tragédia.

O dataset disponibilizado tem quase a mesma estrutura de uma planilha do excel, com linhas e colunas. O tipo do arquivo é o CSV ou Comma-separated values, que seriam Valores Separados por Vírgula, porque é exatamente assim que ele funciona, você distingue que o valor pertence a diferentes colunas porque a vírgula está ali separando uns dos outros.

Para ler o dataset, vamos executar o comando abaixo:

titanic = pd.read_csv('titanic-data-6.csv')

Lembrando que o seu arquivo “titanic-data-6.csv” deve estar salvo exatamente na mesma pasta do seu código em Python, ok?

Para exibir os registros e ver os nossos dados, executamos o comando:

titanic.head()
Visualização do Dataset

Observando variáveis disponíveis:

Survived (Sobreviveu): 0 = Não, 1 = Sim
Pclass (Classe): Classe de ingresso 1 = 1º, 2 = 2º, 3 = 3º
Sex (Sexo): Sexo do passageiro
Age (Idade): Idade em anos
Sibsp: Quantidade de irmãos / cônjuges a bordo do Titanic
Parch: Quantidade de pais / crianças a bordo do Titanic
Ticket (Bilhete): Número do bilhete de embarque
Fare (Tarifa): Tarifa paga pelo Passageiro
Cabin (Cabine): Número de cabine
Embarked (Embarque): Porto de Embarque (C = Cherbourg, Q=Queenstown, S = Southampton)

Fazendo Perguntas:

Observando os dados, me vieram em mente as seguintes questões:

  1. Qual foi a porcentagem dos passageiros sobreviventes?

2. Qual era a faixa etária dos passageiros que estavam no Titanic?

3. A partir desta faixa etária, mais crianças ou mais adultos sobreviveram?

Observe que todas as nossas perguntas estão relacionadas a idade, por isso, para ter um processamento mais eficiente, podemos limpar o nosso dataset, deletando todas as colunas de dados que não serão utilizadas.

Limpando os dados

O processo de limpeza de dados, é muito simples, observamos que não vamos precisar das colunas: Ticket, Pclass, Cabin, Fare, PassengerID, SibSp, portanto vamos removê-las com o comando:

#Funcao responsavel por remover as colunas passadas por parâmetro
def remove(colunas):
    for i in range(0, len(colunas)):
        titanic.drop([colunas[i]],axis = 1, inplace = True)
    return titanic.head()
#Colunas a serem removidas
colunas = ['Pclass','Fare','Ticket','Cabin','PassengerId','SibSp']
#Chama a funcao e passa o parâmetro das colunas a serem removidas
remove(colunas)

Agora estamos com o dataset limpo e pronto para buscar nossas respostas, vamos lá!

1. Qual foi a porcentagem dos passageiros sobreviventes?

Dentro os dados dos nossos 891 passageiros, quantos sobreviveram?

Para descobrir executamos o comando abaixo:

#Cria um mapa indicando os Sobreviventes e Não Sobreviventes
titanic['Not Survived'] = titanic['Survived'].map({0:1,1:0})
#Conta os valores encontrados de sobreviventes e não sobreviventes e exibe na tela
print('Sobreviventes     :', titanic['Survived'].value_counts()[1])
print('Não Sobreviventes :', titanic['Survived'].value_counts()[0])
#Gera o grafico
titanic['Survived'].value_counts().plot.pie(colors=('tab:red', 'tab:blue'),title='Qual a porcentagem dos passageiros sobreviventes?',fontsize=13, shadow=True,startangle=90,autopct='%1.1f%%',
labels=('Não sobreviventes','Sobreviventes'),
figsize=(5,5)).set_ylabel('')

A saída após o rodar o código será:

2. Qual era a faixa etária dos passageiros que estavam no Titanic?

Para responder esta pergunta vamos gerar um histograma, que é um gráfico que indica a frequência de cada uma das faixas etárias.

#Gera histograma de frequencia de idade
plt.figure();
titanic_idade.hist(column='Age', color=('blue'), alpha=0.8, bins=10, figsize=(10,4))
plt.title('Faixa Etária dos Passageiros')
plt.xlabel('Idade')
plt.ylabel('Frequência')

A saída após o rodar o código será:

E assim concluímos que a faixa etária com maior número de passageiros, girava ali entre 20 a 40 anos.

3. A partir desta faixa etária, mais crianças ou mais adultos sobreviveram?

Considerando a maior idade brasileira, de 18 anos, dividimos os dados em dois grupos: os de crianças com indivíduos menores de 18 anos e adultos com indivíduos maiores de 18 anos.

#Divide os dados em grupos de criancas e adultos
titanic_idade['Crianca_Adulto'] = 0
titanic_idade.loc[titanic_idade[titanic_idade['Age'] < 18].index, 'Crianca_Adulto'] = 'Crianças'
titanic_idade.loc[titanic_idade[titanic_idade['Age'] >= 18].index, 'Crianca_Adulto'] = 'Adulto'

E agora geramos o gráfico, correspondente:

#Gera grafico de sobrevivencia de criancas e adultos
titanic_idade.groupby('Crianca_Adulto')['Survived'].mean().plot.barh(title='4.3. Média de Sobrevivência', figsize=(10,2.5),                                                               color=('tab:green','tab:blue')).set_ylabel(''),plt.xlabel('')

A saída após o rodar o código será:

E sim, conforme previsto as crianças foram prioridade no momento da retirada do navio e temos muito mais crianças sobreviventes do que adultos.

Agora é sua vez!

Neste projeto percebemos que apenas 38,4 % das pessoas sobreviveram ao Titanic, falando de números absolutos foram 342 pessoas que sobreviveram, em universo de 891 pessoas.

Identificamos que as crianças foram protegidas e tiveram uma chance de sobrevivência muito superior aos adultos, na faixa de 0,56 de sobrevivência para as crianças e 0,37 para os adultos.

Seria possível obter outros pontos de vista e insights interessantes, analisando dados como: sexo, classe, faixa etária, entre outras informações.

E ai será que os amigos da Rose, da primeira classe sobreviveram mais do que os amigos do Jack? Será que mulheres e crianças foram mesmo prioridade?

Faça suas próprias perguntas e divirta-se descobrindo informações interessantes “vasculhando” os dados!

Este projeto completo, pode ser encontrado aqui: https://github.com/suzanasvm/TitanicUdacity

 

 

 

Leia também

Deixe uma resposta

O seu endereço de e-mail não será publicado.