El hundimiento del RMS Titanic en 1912 sigue siendo uno de los desastres marítimos más mortíferos de la historia. Más de 1.500 personas perdieron la vida cuando el barco chocó contra un iceberg y se hundió en el Océano Atlántico Norte. En los años que siguieron, se llevó a cabo una amplia investigación para comprender los factores que contribuyeron al alto número de muertes.
Solo el 38% de los pasajeros sobrevivieron a este evento devastador, lo que me llevó a preguntarme sobre las personas que estaban a bordo del Titanic esa fatídica noche.
¿Las distinciones de clase jugaron un papel en la determinación del destino de los que estaban a bordo, creando una división entre el privilegio y el peligro? ¿Cómo influyeron la edad y el sexo en quién sobrevivió y quién sucumbió al implacable mar? En medio del caos, ¿la presencia de familiares proporcionó consuelo y apoyo, instando a los pasajeros a enfrentar la tormenta juntos? ¿Y el puerto de embarque influyó en los destinos de quienes embarcaban desde diferentes lugares?
Afortunadamente, podemos responder estas preguntas utilizando el conjunto de datos del Titanic disponible en Kaggle. Más de cien años después de que se hundiera, podemos usar los datos para comprender cómo el precio de un boleto pudo haber influido en la supervivencia y si ciertas ubicaciones de cabina proporcionaron refugio durante los trágicos eventos. Este análisis exploratorio de datos (EDA) revelará información sobre las experiencias de los pasajeros, arrojando luz sobre sus historias de coraje y pérdida en esa fatídica noche.
Estas son algunas de las ideas que exploraremos durante el análisis:
El conjunto de datos del Titanic es una recopilación de datos sobre los pasajeros y la tripulación del RMS Titanic, que se hundió en 1912. El conjunto de datos contiene información sobre el nombre, la edad, el sexo, la clase de boleto de cada pasajero y si sobrevivieron al hundimiento. El conjunto de datos Titanic es un conjunto de datos popular para proyectos de ciencia de datos y aprendizaje automático. A menudo se usa para entrenar modelos para predecir si los pasajeros sobrevivieron al hundimiento en función de sus características. El conjunto de datos del Titanic también se utiliza para estudiar las redes sociales y el comportamiento humano.
El conjunto de datos Titanic fue creado por Kaggle, una comunidad de ciencia de datos. El conjunto de datos está disponible para su descarga gratuita en el sitio web de Kaggle.
Puede obtener el conjunto de datos aquí
Comencemos nuestro análisis cargando los módulos necesarios y el conjunto de datos titánico
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # Load the Titanic dataset df = pd.read_csv('/kaggle/input/titanic/train.csv') df.head()
Puede ver que este conjunto de datos contiene toda la información sobre cada pasajero que he discutido en la sección de introducción de este artículo.
Ahora, comencemos nuestro análisis usando pandas y visualicemos las ideas usando matplotlib y seaborn.
# Calculate the overall survival rate survival_rate = df['Survived'].mean() * 100 # Create a bar plot to visualize the survival rate sns.set(style='darkgrid') plt.figure(figsize=(6, 4)) sns.countplot(x='Survived', data=df) plt.xlabel('Survived') plt.ylabel('Passenger Count') plt.title('Survival Rate: {:.2f}%'.format(survival_rate)) plt.xticks([0, 1], ['No', 'Yes']) plt.show()
El gráfico de barras proporciona una representación visual clara y concisa de la tasa de supervivencia general de los pasajeros del Titanic. Revela que solo el 38% de los pasajeros lograron sobrevivir al desastre.
La altura de las barras representa el número de pasajeros en cada categoría (0 para no sobrevivientes y 1 para sobrevivientes). La tasa de supervivencia, indicada en el título de la trama, destaca el porcentaje de pasajeros que sobrevivieron al trágico suceso.
# Calculate the survival rate by gender survival_by_gender = df.groupby('Sex')['Survived'].mean() * 100 # Create a bar plot to visualize the survival rate by gender sns.set(style='darkgrid') plt.figure(figsize=(6, 4)) sns.barplot(x=survival_by_gender.index, y=survival_by_gender.values) plt.xlabel('Gender') plt.ylabel('Survival Rate') plt.title('Survival Rate by Gender') plt.show()
Puede ver que, de todos los pasajeros sobrevivientes, más del 70% son mujeres. La tasa de supervivencia significativamente más alta para las hembras en comparación con los machos es una observación sorprendente.
Esta discrepancia sugiere que el género desempeñó un papel crucial en la determinación de las posibilidades de supervivencia durante la tragedia del Titanic.
# Plot the distribution of passenger ages sns.set(style='darkgrid') plt.figure(figsize=(8, 6)) sns.histplot(data=df, x='Age', bins=20, kde=True) plt.xlabel('Age') plt.ylabel('Count') plt.title('Distribution of Passenger Ages') plt.show()
El histograma con gráfico KDE ilustra la distribución de las edades de los pasajeros a bordo del Titanic. Los datos muestran una distribución sesgada hacia la izquierda, lo que indica que había más adultos jóvenes, particularmente entre las edades de 18 y 35 años, en comparación con adultos mayores o niños entre los pasajeros.
Para analizar la distribución de las edades de los pasajeros, utilizamos un histograma con gráfico KDE (Kernel Density Estimation). El eje x representa diferentes intervalos de edad (contenedores), mientras que el eje y muestra el recuento de pasajeros que se encuentran en cada grupo de edad. Al visualizar los datos de esta manera, pudimos discernir la naturaleza sesgada de la distribución por edades en el Titanic, destacando la prevalencia de adultos jóvenes entre los pasajeros.
# Calculate the survival rates by passenger class survival_by_class = df.groupby('Pclass')['Survived'].mean() * 100 # Create a bar plot to visualize the survival rates by passenger class sns.set(style='darkgrid') plt.figure(figsize=(6, 4)) sns.barplot(x=survival_by_class.index, y=survival_by_class.values) plt.xlabel('Passenger Class') plt.ylabel('Survival Rate') plt.title('Survival Rate by Passenger Class') plt.show()
El diagrama de barras muestra las tasas de supervivencia basadas en la clase de pasajero para los pasajeros en el conjunto de datos del Titanic. Es evidente a partir de la gráfica que cuanto mayor sea la clase de pasajeros, mayor será la tasa de supervivencia. Esta observación se alinea con el entendimiento histórico de que los pasajeros en clases más altas (primera clase) tenían mejor acceso a botes salvavidas y medidas de seguridad, lo que probablemente contribuyó a sus mayores posibilidades de supervivencia. Por el contrario, los pasajeros de clases más bajas (3ra clase) enfrentaron más desafíos durante el proceso de evacuación, lo que podría conducir a una tasa de supervivencia más baja para ese grupo.
Para analizar las tasas de supervivencia según la clase de pasajero, creamos un gráfico de barras. Cada barra representa el porcentaje de pasajeros que sobrevivieron para cada categoría de clase (primera, segunda o tercera clase). Al examinar visualmente el gráfico, pudimos identificar cualquier disparidad en las tasas de supervivencia entre las diferentes clases de pasajeros. Las alturas de las barras indican las tasas de supervivencia; las barras más altas indican porcentajes más altos de supervivientes para clases específicas de pasajeros.
# Create age groups age_bins = [0, 12, 18, 30, 50, 100] # Define the age group boundaries age_labels = ['Child', 'Teenager', 'Young Adult', 'Adult', 'Elderly'] # Define the age group labels df['AgeGroup'] = pd.cut(df['Age'], bins=age_bins, labels=age_labels, right=False) # Calculate the survival rates by age group survival_by_age_group = df.groupby('AgeGroup')['Survived'].mean() * 100 # Create a bar plot to visualize the survival rates by age group sns.set(style='darkgrid') plt.figure(figsize=(8, 6)) sns.barplot(x=survival_by_age_group.index, y=survival_by_age_group.values) plt.xlabel('Age Group') plt.ylabel('Survival Rate') plt.title('Survival Rate by Age Group') plt.show()
El diagrama de barras ilustra las tasas de supervivencia para diferentes grupos de edad entre los pasajeros del conjunto de datos del Titanic. Revela que ciertos grupos de edad, como niños, adultos y ancianos, tenían mayores posibilidades de supervivencia durante el desastre. Esta observación indica que se dio prioridad a estos grupos de edad vulnerables durante el proceso de evacuación, lo que resultó en tasas de supervivencia más altas para ellos.
Para analizar las tasas de supervivencia en función de los grupos de edad, creamos un gráfico de barras. Cada barra representa el porcentaje de sobrevivientes en un grupo de edad específico. Al examinar la gráfica, pudimos observar las variaciones en las tasas de supervivencia entre los diferentes grupos de edad. Esto nos permitió inferir que ciertos grupos de edad, como niños, adultos y ancianos, recibieron prioridad y tenían mejores posibilidades de supervivencia durante el trágico evento. La metodología empleada aquí proporcionó información valiosa sobre el impacto de la edad en los resultados de supervivencia, lo que refleja los esfuerzos humanitarios para proteger a los pasajeros más vulnerables durante el desastre.
# Calculate the survival rates by port of embarkation survival_by_embarkation = df.groupby('Embarked')['Survived'].mean() * 100 # Create a bar plot to visualize the survival rates by port of embarkation sns.set(style='darkgrid') plt.figure(figsize=(6, 4)) sns.barplot(x=survival_by_embarkation.index, y=survival_by_embarkation.values) plt.xlabel('Port of Embarkation') plt.ylabel('Survival Rate') plt.title('Survival Rate by Port of Embarkation') plt.show()
El gráfico de barras muestra las tasas de supervivencia según el puerto de embarque de los pasajeros en el conjunto de datos del Titanic. Analizando el gráfico, podemos observar claramente que la tasa de supervivencia más alta está asociada a los pasajeros que embarcaron desde Cherburgo, mientras que la tasa de supervivencia más baja está vinculada a los que embarcaron desde Southampton.
Esta visualización ofrece información valiosa sobre las variaciones en las tasas de supervivencia según el puerto de embarque, lo que sugiere factores potenciales que pueden haber influido en las posibilidades de supervivencia de los pasajeros.
Para analizar las tasas de supervivencia según el puerto de embarque, creamos un gráfico de barras. Cada barra representa el porcentaje de sobrevivientes para cada categoría de puerto de embarque (Cherbourg, Queenstown, Southampton). Al examinar visualmente el gráfico, pudimos identificar diferencias significativas en las tasas de supervivencia entre los diferentes puntos de embarque.
# Create fare groups fare_bins = [0, 50, 100, 150, 200, 300, 1000] # Define the fare group boundaries fare_labels = ['0-50', '50-100', '100-150', '150-200', '200-300', '300+'] # Define the fare group labels df['FareGroup'] = pd.cut(df['Fare'], bins=fare_bins, labels=fare_labels, right=False) # Calculate the survival rates by fare group survival_by_fare_group = df.groupby('FareGroup')['Survived'].mean() * 100 # Create a bar plot to visualize the survival rates by fare group sns.set(style='darkgrid') plt.figure(figsize=(8, 6)) sns.barplot(x=survival_by_fare_group.index, y=survival_by_fare_group.values) plt.xlabel('Fare Group') plt.ylabel('Survival Rate') plt.title('Survival Rate by Fare Group') plt.show()
El gráfico ilustra que la tasa de supervivencia fue más alta para los pasajeros en el grupo de tarifa más alta (300+), seguido por el segundo grupo de tarifa más alta (200-300). Por el contrario, la tasa de supervivencia disminuyó a medida que disminuyó el grupo de tarifa, con la tasa de supervivencia más baja para los pasajeros del grupo de tarifa más baja (0-50).
Este análisis sugiere que la tarifa pagada desempeñó un papel importante en la determinación de las posibilidades de supervivencia en el Titanic. Los pasajeros que pagaron tarifas más altas tenían más probabilidades de estar en primera clase, que tenía una tasa de supervivencia más alta en general.
Además, es posible que se haya dado prioridad a estos pasajeros que pagan más durante los esfuerzos de rescate, lo que contribuye a su mayor tasa de supervivencia. Para analizar la relación entre los grupos de tarifas y las tasas de supervivencia, creamos un gráfico de barras que muestra los porcentajes de supervivencia para cada grupo de tarifas. El gráfico nos permitió observar la tendencia de las tasas de supervivencia según los grupos de tarifas, lo que reveló que las tarifas más altas estaban asociadas con tasas de supervivencia más altas.
# Extract the cabin deck from the Cabin column df['CabinDeck'] = df['Cabin'].str.extract(r'([A-Za-z])') # Plot the distribution of passenger cabin locations sns.set(style='darkgrid') plt.figure(figsize=(10, 6)) sns.countplot(data=df, x='CabinDeck', order=sorted(df['CabinDeck'].dropna().unique())) plt.xlabel('Cabin Deck') plt.ylabel('Count') plt.title('Distribution of Passenger Cabin Locations') plt.show() # Calculate the survival rates by cabin deck survival_by_cabin_deck = df.groupby('CabinDeck')['Survived'].mean() * 100 # Create a bar plot to visualize the survival rates by cabin deck sns.set(style='darkgrid') plt.figure(figsize=(8, 6)) sns.barplot(x=survival_by_cabin_deck.index, y=survival_by_cabin_deck.values) plt.xlabel('Cabin Deck') plt.ylabel('Survival Rate') plt.title('Survival Rate by Cabin Deck') plt.show()
El gráfico demuestra claramente una tendencia decreciente en las tasas de supervivencia a medida que bajaba el nivel de la cubierta de la cabina, observándose la tasa de supervivencia más baja para los pasajeros en la cubierta A.
Este análisis sugiere que la ubicación de la cabina de un pasajero fue de hecho un factor importante en sus posibilidades de supervivencia en el Titanic. Es probable que los pasajeros de las cubiertas más altas tengan un mejor acceso a los botes salvavidas y sean más fáciles de rescatar.
Además, es posible que se les haya dado prioridad durante las operaciones de rescate, lo que contribuye a sus tasas de supervivencia más altas. Para analizar la relación entre los niveles de las cubiertas de las cabinas y las tasas de supervivencia, creamos un gráfico de barras que muestra los porcentajes de supervivencia de cada cubierta. Al examinar el gráfico, pudimos identificar las tendencias en las tasas de supervivencia según los niveles de la cubierta de la cabina.
# Create age groups age_bins = [0, 12, 18, 30, 50, 100] # Define the age group boundaries age_labels = ['Child', 'Teenager', 'Young Adult', 'Adult', 'Elderly'] # Define the age group labels df['AgeGroup'] = pd.cut(df['Age'], bins=age_bins, labels=age_labels, right=False) # Calculate the survival rates by age group and gender survival_by_age_gender = df.groupby(['AgeGroup', 'Sex'])['Survived'].mean() * 100 # Convert the survival rates into a pivot table for easier visualization survival_pivot = survival_by_age_gender.unstack() # Create a heatmap to visualize the survival rates by age group and gender sns.set(style='darkgrid') plt.figure(figsize=(8, 6)) sns.heatmap(data=survival_pivot, annot=True, cmap='coolwarm', fmt=".2f", cbar=True) plt.xlabel('Gender') plt.ylabel('Age Group') plt.title('Survival Rate by Age Group and Gender') plt.show()
El mapa de calor proporciona una representación visual de las tasas de supervivencia para diferentes grupos de edad y géneros entre los pasajeros del conjunto de datos del Titanic. Al analizar el mapa de calor, podemos observar patrones y tendencias en las tasas de supervivencia según la edad y el género, lo que nos permite identificar qué grupos de edad y género tenían mayores o menores posibilidades de supervivencia durante el desastre. La intensidad del color en el mapa de calor sirve como un indicador claro, con colores más oscuros que representan tasas de supervivencia más altas y colores más claros que indican tasas de supervivencia más bajas.
Del mapa de calor, podemos extraer varias ideas. Las pasajeras de edad avanzada tenían la mayor probabilidad de supervivencia, mientras que los pasajeros de edad avanzada tenían las menores posibilidades de supervivencia. Además, el mapa de calor revela que, en general, las mujeres tenían más probabilidades de sobrevivir en todas las categorías de edad. Estas observaciones arrojan luz sobre la influencia significativa de la edad y el género en la determinación de los resultados de supervivencia de los pasajeros durante esta tragedia histórica.
Para visualizar las tasas de supervivencia en función de los grupos de edad y género, utilizamos un mapa de calor. Cada celda del mapa de calor representa la tasa de supervivencia (porcentaje) para una combinación específica de grupo de edad y género. Al examinar la intensidad del color en el mapa de calor, pudimos discernir las diferencias en las tasas de supervivencia entre varios grupos de edad y género.
# Calculate the total number of family members for each passenger df['FamilySize'] = df['SibSp'] + df['Parch'] + 1 # Calculate the survival rates by family size survival_by_family_size = df.groupby('FamilySize')['Survived'].mean() * 100 # Create a bar plot to visualize the survival rates by family size sns.set(style='darkgrid') plt.figure(figsize=(10, 6)) sns.barplot(x=survival_by_family_size.index, y=survival_by_family_size.values) plt.xlabel('Family Size') plt.ylabel('Survival Rate') plt.title('Survival Rate by Family Size') plt.show()
El gráfico ilustra que los pasajeros con familias más grandes tenían más probabilidades de sobrevivir al hundimiento del Titanic. La tasa de supervivencia de los pasajeros con familias de 1 a 4 miembros aumentó a medida que aumentaba el número de miembros de la familia.
Esta idea es significativa ya que destaca el tamaño de la familia como uno de los predictores más fuertes de supervivencia en el Titanic. Es probable que los pasajeros con familias más grandes viajen juntos, lo que los convierte en una prioridad para los esfuerzos de rescate.
Además, tener más miembros en la familia puede haber facilitado el apoyo mutuo, como compartir recursos como alimentos y agua, lo que podría haber contribuido a sus mayores posibilidades de supervivencia.
Para analizar la relación entre el tamaño de la familia y las tasas de supervivencia, creamos un gráfico de barras que muestra los porcentajes de supervivencia para cada categoría de tamaño de familia. Al examinar visualmente el gráfico, pudimos identificar cómo el tamaño de la familia influía en los resultados de supervivencia de los pasajeros.
# Calculate the survival rates by port of embarkation and passenger class survival_by_embark_class = df.groupby(['Embarked', 'Pclass'])['Survived'].mean() * 100 # Convert the survival rates into a pivot table for easier visualization survival_pivot = survival_by_embark_class.unstack() # Create a heatmap to visualize the survival rates sns.set(style='darkgrid') plt.figure(figsize=(8, 6)) sns.heatmap(data=survival_pivot, annot=True, cmap='coolwarm', fmt=".2f", cbar=True) plt.xlabel('Passenger Class') plt.ylabel('Port of Embarkation') plt.title('Survival Rate by Port of Embarkation and Passenger Class') plt.show()
El gráfico revela varios patrones importantes con respecto a las tasas de supervivencia según el puerto de embarque y la clase de pasajero. Los pasajeros que embarcaron desde Cherburgo tuvieron una mayor tasa de supervivencia en comparación con los de Queenstown o Southampton.
Esto posiblemente se deba a que Cherburgo es el primer puerto de escala y la probabilidad de que se embarquen allí más pasajeros de primera clase. Además, como puerto francés, puede haber habido un sesgo hacia el ahorro de pasajeros franceses.
Además, el gráfico indica que los pasajeros de primera clase tenían una mayor tasa de supervivencia en comparación con los de segunda o tercera clase. Esto se puede atribuir a que los pasajeros de primera clase se consideran una prioridad para el rescate y tienen un mejor acceso a los botes salvavidas debido a su mayor estatus social y su capacidad potencial para pagar medidas de salvamento.
Por último, una tendencia notable en todos los puertos es la disminución de la tasa de supervivencia a medida que disminuye la clase de pasajeros. Esto sugiere que la clase de pasajero fue un factor determinante significativo de la supervivencia en el Titanic, ya que los pasajeros de primera clase tenían las mayores posibilidades de supervivencia. Para analizar la relación entre el puerto de embarque, la clase de pasajero y las tasas de supervivencia, creamos un mapa de calor. El mapa de calor representa los porcentajes de tasa de supervivencia para diferentes combinaciones de puerto de embarque y clase de pasajero. Al examinar el mapa de calor, pudimos identificar patrones y tendencias en las tasas de supervivencia en función de estos dos factores.