Xa tendes os datos limpos e preparados! Agora é momento de ir máis aló e descubrir patróns ocultos dentro do dataset do Titanic.
A análise exploratoria permítenos entender como as variables están relacionadas entre si e que impacto poden ter .
Visualizarás os datos para atopar tendencias, analizarás as correlacións entre variables e identificarás patróns clave que axuden ao modelo a facer predicións.
Cadernos de programación listos? Continuamos!
Para realizar estas actividades, podes executar de novo o caderno de programación da actividade 2 para ter o dataset preparado, ou descargar o arquivo cos datos limpos e escalados (csv - 95303 B) e usalo de novo dataset, eu escollín esta segunda opción por comodidade. Abro un novo caderno de programación en Colab, e cargo o novo dataset.Tes o programa na actividade 1.
📈 Paso 1: Visualización de datos clave
Para identificar distribucións e posibles tendencias, usaremos seaborn e matplotlib para visualizar os datos.
import seaborn as sns
import matplotlib.pyplot as plt
# Crear o histograma de Idade
plt.figure(figsize=(12,6))
ax = sns.histplot(df['Age'], bins=30, kde=True,color="brown")
# Engadir etiquetas con valores en cada barra
for p in ax.patches:
ax.annotate(f'{int(p.get_height())}',
(p.get_x() + p.get_width() / 2., p.get_height()),
ha='center', va='center', fontsize=10, color='black')
plt.title("Distribución das idades no Titanic")
plt.xlabel("Idade")
plt.ylabel("Número de Pasaxeiros")
plt.show()
👉 Tarifas:
Código Python: Distribución das tarifas
# Crear o histograma de Tarifas
plt.figure(figsize=(14,6))
ax = sns.histplot(df['Fare'], bins=30, kde=True , color="yellow")
# Engadir etiquetas con valores en cada barra
for p in ax.patches:
ax.annotate(f'{int(p.get_height())}',
(p.get_x() + p.get_width() / 2., p.get_height()),
ha='center', va='center', fontsize=10, color='black')
plt.title("Distribución das Tarifas no Titanic")
plt.xlabel("Tarifa")
plt.ylabel("Número de Pasaxeiros")
plt.show()
👉 Sexos:
Código Python: Distribución por sexos
plt.figure(figsize=(8,6))
ax = sns.countplot(x=df["Sex_male"],color="red")
# Engadir etiquetas
for p in ax.patches:
ax.annotate(f'{p.get_height()}', (p.get_x() + p.get_width() / 2., p.get_height()),
ha='center', va='center', fontsize=12, color='black')
plt.title("Distribución por Sexos no Titanic")
plt.xlabel("Sexo: False:Mulleres True=homes")
plt.ylabel("Número de Pasaxeiros")
plt.show()
👉 Clase:
Código Python:Distribución por clases
plt.figure(figsize=(8,6))
ax = sns.countplot(x=df["Pclass"],color="purple")
# Engadir etiquetas
for p in ax.patches:
ax.annotate(f'{p.get_height()}', (p.get_x() + p.get_width() / 2., p.get_height()),
ha='center', va='center', fontsize=12, color='black')
plt.title("Distribución por clases no Titanic")
plt.xlabel("Clase")
plt.ylabel("Número de Pasaxeiros")
plt.show()
💡Preguntas para reflexionar:
Hai grupos de idade que predominan na distribución? Crees que iso puido influír na supervivencia? Os menores aparecen en gran número ou son unha minoría? Como podería afectar isto ás súas posibilidades de sobrevivir? As persoas maiores representan unha parte significativa do total? Cres que a idade afectou as súas opcións de salvación?
Ves moita variabilidade nos prezos dos billetes? Cres que iso podería estar relacionado co acceso aos botes salvavidas? Os billetes máis caros eran frecuentes ou só estaban dispoñibles para un pequeno grupo? Que implicacións pode ter iso na supervivencia? Crees que os pasaxeiros con tarifas máis altas tiveron máis oportunidades de salvarse? Por que?
O número de homes e mulleres no barco estaba equilibrado ou había unha diferenza notable? Nesa época seguíuse a regra de "mulleres e nenos primeiro", como crees que esta distribución pode estar relacionada coa taxa de supervivencia? Consideras que o sexo foi un factor clave na supervivencia ou cres que outras variables tiveron maior impacto?
Que clase tiña máis pasaxeiros? Crees que isto puido influír na taxa de supervivencia? Se os pasaxeiros de terceira clase eran maioría, cres que iso afectou a súa capacidade para salvarse? Como? As persoas de primeira clase tiñan mellores condicións a bordo, podería iso estar vinculado cunha maior taxa de supervivencia?
❓ Paso 2: Correlación entre datos clave e supervivencia
Primeiro ides analizar cada variable por separado respecto á supervivencia para comprender a súa influencia de maneira illada.
Código Python: Heatmap variables clave e supervivencia
# Definir as variables que queremos analizar
variables = ["Pclass", "Fare", "Age","Sex_male"]
fig, axes = plt.subplots(1, 4, figsize=(15, 5)) # Distribución horizontal dos gráficos
# Xerar os heatmaps individuais
for i, var in enumerate(variables):
corr_matrix = df[["Survived", var]].corr() # Matriz de correlación entre supervivencia e a variable
ax = axes[i] # Posición do gráfico
sns.heatmap(corr_matrix, annot=True, cmap="coolwarm", fmt=".2f", linewidths=0.5, ax=ax)
ax.set_title(f"Correlación entre {var} e Supervivencia", fontsize=12)
plt.tight_layout()
plt.show()
💡 Preguntas para reflexionar:
Que patróns observas nas correlacións entre as variables e a supervivencia? Son as relacións débiles ou fortes?
Que significa que unha correlación sexa negativa? Como afecta iso á interpretación dos datos?
Existe unha relación entre o prezo do billete e a supervivencia? Por que cres que isto ocorre?
Como influíu o xénero na taxa de supervivencia? Que normas sociais poderían estar relacionadas con esta tendencia?
Que indica a relación entre a idade e a supervivencia? Era a idade realmente un factor decisivo?
Segundo os datos, que grupo tiña maior probabilidade de sobrevivir? Como podes explicalo?
Antes de ver os datos, que pensabas sobre os factores que afectaban a supervivencia? Coinciden cos resultados da análise?
Hai algunha correlación que che sorprenda? Por que?
A correlación indica causalidade? Por que é importante ter en conta outras variables antes de sacar conclusións definitivas?
Que outras variables cres que poderían influír na taxa de supervivencia, pero que non aparecen nestes heatmaps?
❓ Paso 3: Correlación entre varios datos clave e supervivencia
Chegados a este punto, entenderás que a tarifa e a clase, están moi relacionadas. Imos ver agora as correlacións entre 2 variables clave e a supervivencia. Aínda que a idade demostrou non ser un factor determinante, imos ver a correlación coas outras igualmente, para seguir analizando os datos.
Código Python: Correlación de supervivencia coas variables 2 a 2
# Definir as combinacións de variables
correlacions = [
["Pclass", "Sex_male", "Survived"],
["Age", "Pclass", "Survived"],
["Sex_male", "Age", "Survived"]
]
# Configurar unha paleta de cores personalizada
color_palettes = ["coolwarm", "magma", "viridis"] # Paletas de cores diferentes
# Crear múltiples heatmaps
fig, axes = plt.subplots(1, 3, figsize=(18, 6)) # Unha fila con tres gráficos
for i, vars_corr in enumerate(correlacions):
corr_matrix = df[vars_corr].corr() # Calcular a correlación entre as variables seleccionadas
ax = axes[i] # Posición do gráfico na cuadrícula
sns.heatmap(corr_matrix, annot=True, cmap=color_palettes[i], fmt=".2f", linewidths=0.5, ax=ax)
ax.set_title(f"Correlación entre {', '.join(vars_corr)}", fontsize=12)
plt.tight_layout()
plt.show()
💡 Preguntas para reflexionar:
Analiza os heatmap e extrae conclusións sobre o impacto das combinacións de variables e a supervivencia.
Intenta realizar e analizar un heatmap con "Survived", "Pclass", "Sex_male", "Age".
👉 Queres máis?
Se queres comprobar as túas hipóteses, ou visualizar máis correlacións, podes usar:
Despós desta exhaustiva análise dos datos e das súas relacións, podemos concluir que: A clase e o xénero foron os factores máis determinantes na supervivencia dos pasaxeiros do Titanic, cos de primeira clase e as mulleres tendo maior probabilidade de sobrevivir. A idade tivo unha influencia mínima, e a xente máis nova concentrábase precisamente nas clases con menos poder adquisitivo.
Código Python: Programa para cargar como novo dataset o arquivo xenerado na actividade 2 cos datos procesados
import pandas as pd # Incluímos pandas para traballar con datos
import seaborn as sns #E seaborn para gráficos
# Ruta do ficheiro en Colab, tes que telo subido en arquivos, e cambia o nome se lle tes un distinto
df = pd.read_csv("/content/datasetTitanicProcesado.csv")
df.head(10) # Mostra as 10 primeiras filas do DataFrame
Lembra que escalamos os datos.Se queres visualizar os datos reais, só tes que executar estos programas co dataset inicial cos cambios no nome de columna pertinentes. O resultado é o mesmo, pero escalado ós valores máis recoñecibles para humanos.
# Crear a gráfica de Idade por Clase plt.figure(figsize=(8, 5)) sns.stripplot(x=df["Pclass"], y=df["Age"],hue=df["Pclass"], palette="coolwarm") # Etiquetas plt.xlabel("Clase", fontsize=12) plt.ylabel("Idade", fontsize=12) plt.title("Distribución da Idade por Clase", fontsize=14) # Mostrar a gráfica plt.show()
# Contar total de pasaxeiros por idade age_counts = df['Age'].value_counts() # Contar superviventes por idade survived_counts = df[df['Survived'] == 1]['Age'].value_counts() # Calcular porcentaxe de supervivencia percentage_survived = (survived_counts / age_counts) * 100 # Crear o gráfico plt.figure(figsize=(10,6)) sns.scatterplot(x=percentage_survived.index, y=percentage_survived, color='blue') # Etiquetas e título plt.xlabel('Idade') plt.ylabel('Porcentaxe de supervivencia') plt.title('Porcentaxe de supervivencia por idade') # Mostrar gráfico plt.show()
sns.heatmap(df.corr(numeric_only=True), cmap='coolwarm', annot=True) plt.title("Mapa de correlacións entre variables") plt.show()
df.corr(numeric_only=True)
📈 Paso 1: Visualización de datos clave
Análise das gráficas de datos
Gráficas datos sen procesar
Gráficas con datos procesados
Creación propia. Distribución da idade (datos orixinais)(CC BY-SA)
Creación propia. Distribución da idade (datos procesados)(CC BY-SA)
A gráfica mostra a distribución das idades dos pasaxeiros do Titanic. A mediana da idade parece estar en torno ós 20-30 anos, indicando que a maioría das persoas a bordo eran xóvenes. A variabilidade é ampla, con presenza de nenos e persoas maiores, aínda que en menor proporción. Ademais, hai outliers con idades superiores aos 60 anos, o que suxire que había pasaxeiros de idade avanzada pero en menor número
Creación propia. Distribución das tarifas (datos orixinais)(CC BY-SA)
Creación propia. Distribución das tarifas (datos procesados)(CC BY-SA)
A gráfica mostra a distribución dos prezos dos billetes (Fare) con valores que oscilan entre 0 e 10 unidades. A mediana dos prezos sitúase en valores baixos, indicando que a maioría dos billetes tiñan custos reducidos. Existen varios outliers con tarifas moito máis altas en comparación co resto. A dispersión dos datos reflicte unha ampla variabilidade nos custos dos billetes.
Creación propia. Distribución por sexo (datos orixinais)(CC BY-SA)
Creación propia. Distribución por sexo (datos procesados)(CC BY-SA)
A gráfica mostra dúas barras: unha referente a "False" correspondete a mulleres e outra a "True", correspondente a homes. A barra de "True" aparece máis alta, indicando unha cantidade superior de pasaxeiros . A barra de "False" é máis baixa, o que sinala unha cantidade inferior de pasaxeiras femininas. Visualmente, a diferenza na altura das barras confirma que, segundo estes datos, os homes eran a maioría dos pasaxeiros, practicamente o dobre de homes que de mulleres.
Creación propia. Distribución por clase (CC BY-SA)
A maioría dos pasaxeiros pertencían á terceira clase, o que reflicte a realidade histórica do Titanic, onde moitos viaxeiros eran emigrantes que buscaban unha nova vida en América. As clases máis altas, 1ª e 2ª, tiñan unha menor cantidade de pasaxeiros, probablemente debido a que os billetes eran máis caros.
Resposta ás preguntas de reflexión
Hai grupos de idade que predominan na distribución? Crees que iso puido influír na supervivencia?Os menores aparecen en gran número ou son unha minoría? Como podería afectar isto ás súas posibilidades de sobrevivir?As persoas maiores representan unha parte significativa do total? Cres que a idade afectou as súas opcións de salvación? A distribución da gráfica mostra que a maioría dos pasaxeiros tiñan entre 20 e 30 anos, o que suxire que este grupo podería representar a maior parte das vítimas e superviventes. Os menores son unha minoría, pero a súa presenza é notable, o que podería indicar que tiveron unha oportunidade de supervivencia diferente se se aplicou a regra de “nenos e mulleres primeiro”. As persoas maiores están pouco representadas, con algúns outliers por encima dos 60 anos, o que podería significar que tiveron menos posibilidades de salvación debido a factores como mobilidade ou acceso aos recursos.
Ves moita variabilidade nos prezos dos billetes? Cres que iso podería estar relacionado co acceso aos botes salvavidas?Os billetes máis caros eran frecuentes ou só estaban dispoñibles para un pequeno grupo? Que implicacións pode ter iso na supervivencia?Crees que os pasaxeiros con tarifas máis altas tiveron máis oportunidades de salvarse? Por que? A gráfica mostra unha ampla variabilidade nos prezos dos billetes, con valores que oscilan entre 0 e 10 unidades e varios outliers con tarifas máis altas. Os billetes máis caros son menos frecuentes e parecen estar dispoñibles para un pequeno grupo de pasaxeiros. Non se pode determinar directamente se a tarifa afectou a supervivencia (aínda que é posible que os privilexios nesa época afectasen), pero os prezos elevados poderían estar asociados a condicións distintas a bordo, e polo tanto privilexios asociados ó poder económico Este patrón podería estar relacionado coa taxa de supervivencia, xa que os pasaxeiros de tarifas máis altas, probablemente de primeira clase, tiñan mellor acceso aos botes salvavidas. Para confirmar relacións con acceso a botes salvavidas ou supervivencia, sería necesario analizar outras variables.
O número de homes e mulleres no barco estaba equilibrado ou había unha diferenza notable?Nesa época seguíuse a regra de "mulleres e nenos primeiro", como crees que esta distribución pode estar relacionada coa taxa de supervivencia?Consideras que o sexo foi un factor clave na supervivencia ou cres que outras variables tiveron maior impacto? A gráfica mostra un desbalance notable no sexo de pasaxeiros , evidenciándose que unha categoría ( homes) ten unha barra máis alta, polo tanto o número de mulleres foi significativamente inferior ao de homes. Se hai máis homes que mulleres, isto podería estar relacionado coa taxa de supervivencia, xa que historicamente as mulleres e nenos tiñan prioridade na evacuación. Con todo, a gráfica só mostra a distribución por sexo e, aínda que dada a época, se insinúa que o sexo puido influír na supervivencia, non se poden descartar outros factores de impacto.
Que clase tiña máis pasaxeiros? Crees que isto puido influír na taxa de supervivencia?Se os pasaxeiros de terceira clase eran maioría, cres que iso afectou a súa capacidade para salvarse? Como?As persoas de primeira clase tiñan mellores condicións a bordo, podería iso estar vinculado cunha maior taxa de supervivencia? A terceira clase tiña a maior cantidade de pasaxeiros, con 491 persoas, fronte a 216 na primeira clase e 184 na segunda. A cantidade de pasaxeiros por clase podería ter influído na taxa de supervivencia, xa que, ao haber máis persoas na terceira clase, podería haber máis dificultades para acceder aos botes salvavidas ou para recibir axuda a tempo. O gran número de pasaxeiros de terceira clase podería significar unha maior competencia polos recursos de salvamento. Ademais, historicamente, moitos deles estaban en áreas do barco menos accesibles, o que puido dificultar a súa evacuación. As condicións de primeira clase incluían mellor acceso á cuberta e máis proximidade aos botes salvavidas, o que podería estar relacionado cunha taxa de supervivencia maior, pero non se pode concluir sen estudar máis variables.
❓ Paso 2: Correlación entre datos clave e supervivencia
Análise de heatmaps
Creación propia. Correlacións variables illadas(CC BY-SA)
Clase socioeconómica (Pclass) e Supervivencia: O coeficiente de correlación entre a clase do pasaxeiro e a supervivencia é -0.34. Isto indica unha relación negativa: a medida que a clase aumenta (onde 3 representa a terceira clase), a taxa de supervivencia diminúe. Os pasaxeiros de primeira clase tiveron maiores probabilidades de sobrevivir.
Tarifa do billete (Fare) e Supervivencia: O coeficiente de correlación entre o prezo do billete e a supervivencia é 0.26. Isto suxire que aqueles que pagaron billetes máis caros tiñan máis probabilidades de sobrevivir, posiblemente debido ao acceso a mellores instalacións e embarque prioritario nos botes salvavidas.
Idade (Age) e Supervivencia: A correlación entre a idade e a supervivencia é -0.07, o que indica unha relación negativa pero débil. A idade non parece ser un factor determinante para a supervivencia no Titanic.
Sexo masculino (Sex_male) e Supervivencia:A correlación entre ser home e a supervivencia é -0.54, o que indica unha forte relación negativa. Isto confirma que os homes tiveron moito menos probabilidades de sobrevivir en comparación coas mulleres, debido posiblemente a que eran moitos máis (case o dobre) e á política de evacuación de “primeiro as mulleres e os nenos.”
Resposta ás preguntas de reflexión
Que patróns observas nas correlacións entre as variables e a supervivencia? Son as relacións débiles ou fortes? As relacións varían en intensidade. A correlación entre clase socioeconómica e supervivencia (-0.34) e entre ser home e supervivencia (-0.54) son moderadas a fortes. A correlación entre idade e supervivencia (-0.07) é moi débil, o que indica pouca influencia.
Que significa que unha correlación sexa negativa? Como afecta iso á interpretación dos datos? Indica que, a medida que aumenta o valor dunha variable, diminúe o valor da outra. No caso da clase socioeconómica, valores máis altos (terceira clase) están asociados cunha menor taxa de supervivencia.
Existe unha relación entre o prezo do billete e a supervivencia? Por que cres que isto ocorre? A correlación de 0.26 suxire que os pasaxeiros que pagaron tarifas máis altas tiveron maiores probabilidades de sobrevivir. Isto pode estar relacionado con mellores acceso aos botes salvavidas ou ás zonas de evacuación.
Como influíu o xénero na taxa de supervivencia? Que normas sociais poderían estar relacionadas con esta tendencia? A correlación de -0.54 indica unha forte relación negativa: os homes tiveron significativamente menores probabilidades de sobrevivir. Isto está en liña coas normas sociais da época, que priorizaban a evacuación de mulleres e nenos.
Que indica a relación entre a idade e a supervivencia? Era a idade realmente un factor decisivo? A correlación de -0.07 é moi débil, o que indica que a idade non foi un factor determinante na supervivencia dos pasaxeiros.
Segundo os datos, que grupo tiña maior probabilidade de sobrevivir? Como podes explicalo? Segundo os datos, as mulleres de primeira clase tiveron maiores taxas de supervivencia, posiblemente debido a políticas de evacuación que favorecían estes grupos.
Antes de ver os datos, que pensabas sobre os factores que afectaban a supervivencia? Coinciden cos resultados da análise? Se alguén esperaba que a idade tivese un maior impacto, os datos mostran o contrario: foi un factor menos relevante. A influencia da clase social e do xénero coincide coas expectativas baseadas en relatos históricos.
Hai algunha correlación que che sorprenda? Por que? A relación débil entre idade e supervivencia pode sorprender, dado que se podería esperar que os nenos tivesen unha taxa de supervivencia moito maior e a xente anciá menor.
A correlación indica causalidade? Por que é importante ter en conta outras variables antes de sacar conclusións definitivas? A correlación non implica causalidade. A clase social está relacionada coa supervivencia, pero outras variables como a localización dentro do barco ou a proximidade aos botes salvavidas tamén poderían influír.
Que outras variables cres que poderían influír na taxa de supervivencia, pero que non aparecen nestes heatmaps? Non se inclúen factores como o número de familiares a bordo, a localización exacta no barco, a propia actuación da persona ou as decisións da tripulación, que tamén poderían afectar á supervivencia.
❓ Paso 3: Correlación entre varios datos clave e supervivencia
Creación propia. Correlacións de 3 variables(CC BY-SA)
Resposta ás preguntas de reflexión
Correlación entre Pclass, Sex_male e Survived
♦ A relación negativa entre Pclass e Survived (-0.34) suxire que os pasaxeiros en clases máis altas(1ª) tiñan máis probabilidades de sobrevivir.
♦ A forte correlación negativa entre Sex_male e Survived (-0.54) indica que ser home reducía significativamente a probabilidade de supervivencia.
♦ A baixa correlación entre Pclass e Sex_male (0.13) suxire que a distribución de xénero non varía demasiado por clase, aínda que hai lixeiramente máis homes que mulleres en clases 2 e 3.
Correlación entre Age, Pclass e Survived
♦ A correlación negativa entre Pclass e Age (-0.33) implica que as persoas en clases máis baixas tendían a ser máis novas.
♦ A relación entre Age e Survived (-0.07) é débil, indicando que a idade non foi un factor crave na supervivencia.
♦ A correlación entre Pclass e Survived (-0.34) xa se mencionou no primeiro heatmap, mostrando que a clase afectou as probabilidades de sobrevivir.
Correlación entre Sex_male, Age e Survived
♦ A correlación entre Sex_male e Age (0.08) é case nula, o que significa que non hai unha relación significativa entre xénero e idade. Non podemos indicar se os homes eran máis ou menos novos de media que as mulleres.
♦ A correlación entre Age e Survived (-0.07) segue sendo débil, reafirmando que a idade non tivo gran impacto.
♦ A correlación negativa entre Sex_male e Survived (-0.54) mantense, confirmando que as mulleres tiñan moitas máis probabilidades de sobrevivir.
Heatmap de "Survived", "Pclass", "Sex_male", "Age"
Creación propia. Heatmap das 4 variables(CC BY-SA)
Hai unha correlación negativa entre Survived e Sex_male (-0.54), o que suxire que ser home diminúe a probabilidade de supervivencia.
Pclass e Survived tamén teñen unha correlación negativa (-0.34), indicando que as clases máis altas teñen maiores taxas de supervivencia.
En cambio, Age e Survived teñen unha correlación moi feble (-0.07), o que significa que a idade non é un factor determinante.
Sex_male e Pclass teñen unha correlación positiva moi feble (0.13), o que pode indicar que había lixeiramente máis homes en clases máis baixas, aínda que non é unha relación forte.
Pclass e Age mostran unha correlación negativa moderada (-0.33), o que suxire que as clases máis altas(1ª) tiñan, en xeral, persoas de maior idade.
Sex_male e Age teñen unha correlación positiva bastante débil (0.09), o que implica que non hai unha gran diferenza de idade entre homes e mulleres no conxunto de datos.
Código Python: Correlación entre as 4 variables
#Seleccionar as variables para a correlación múltiple
correlacion_variables = ["Survived", "Pclass", "Sex_male", "Age"] # Engadimos as 4 variables
# Calcular a matriz de correlación
corr_matrix = df[correlacion_variables].corr()
# Xerar o heatmap multivariado
plt.figure(figsize=(8,6)) # Axustar o tamaño do gráfico
sns.heatmap(corr_matrix, annot=True, cmap="crest", fmt=".2f", linewidths=0.5) # Nova paleta de cores
# Configurar título e mostrar gráfico**
plt.title("Heatmap de Correlación Múltiple Supervivencia, clase,sexo e idade", fontsize=14)
plt.show()
Autoavaliación
Lista de Cotexo
📊 Actividade 3: Análise Exploratoria
Realicei e analicei as gráficas de datos clave para a supervivencia