Le naufrage du RMS Titanic en 1912 reste l'une des catastrophes maritimes les plus meurtrières de l'histoire. Plus de 1 500 personnes ont perdu la vie lorsque le navire a heurté un iceberg et a coulé dans l'océan Atlantique Nord. Dans les années qui ont suivi, des recherches approfondies ont été menées pour comprendre les facteurs qui ont contribué au nombre élevé de morts.
Seuls 38% des passagers ont survécu à cet événement dévastateur, ce qui m'amène à m'interroger sur les personnes qui se trouvaient à bord du Titanic cette nuit fatidique.
Les distinctions de classe ont-elles joué un rôle dans la détermination du sort des personnes à bord, créant un fossé entre privilège et danger ? Comment l'âge et le sexe ont-ils influencé ceux qui ont survécu et ceux qui ont succombé à la mer implacable ? Au milieu du chaos, la présence de membres de la famille a-t-elle apporté réconfort et soutien, incitant les passagers à affronter la tempête ensemble ? Et le port d'embarquement a-t-il influencé le destin de ceux qui ont embarqué depuis différents endroits ?
Heureusement, nous pouvons répondre à ces questions en utilisant l'ensemble de données Titanic disponible chez Kaggle. Plus de cent ans après son naufrage, nous pouvons utiliser les données pour comprendre comment le prix d'un billet peut avoir influencé la survie et si certains emplacements de cabine ont fourni un refuge pendant les événements tragiques. Cette analyse exploratoire des données (EDA) révélera des informations sur les expériences des passagers, mettant en lumière leurs histoires de courage et de perte au cours de cette nuit fatidique.
Voici quelques-unes des idées que nous explorerons au cours de l'analyse :
L'ensemble de données Titanic est une collection de données sur les passagers et l'équipage du RMS Titanic, qui a coulé en 1912. L'ensemble de données contient des informations sur le nom, l'âge, le sexe, la classe de billet de chaque passager et s'il a survécu au naufrage. L'ensemble de données Titanic est un ensemble de données populaire pour les projets d'apprentissage automatique et de science des données. Il est souvent utilisé pour former des modèles afin de prédire si les passagers ont survécu au naufrage en fonction de leurs caractéristiques. Le jeu de données Titanic est également utilisé pour étudier les réseaux sociaux et le comportement humain.
L'ensemble de données Titanic a été créé par Kaggle, une communauté de science des données. L'ensemble de données est disponible en téléchargement gratuit sur le site Web de Kaggle.
Vous pouvez obtenir le jeu de données ici
Commençons notre analyse en chargeant les modules nécessaires et le jeu de données titanesque
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()
Vous pouvez voir que cet ensemble de données contient toutes les informations sur chaque passager dont j'ai parlé dans la section d'introduction de cet article.
Maintenant, commençons notre analyse en utilisant des pandas et visualisons les informations en utilisant matplotlib et 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()
Le graphique à barres fournit une représentation visuelle claire et concise du taux de survie global des passagers du Titanic. Il révèle que seulement 38% des passagers ont réussi à survivre à la catastrophe.
La hauteur des barres représente le nombre de passagers dans chaque catégorie (0 pour les non survivants et 1 pour les survivants). Le taux de survie, indiqué dans le titre de l'intrigue, met en évidence le pourcentage de passagers qui ont survécu à l'événement tragique.
# 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()
Vous pouvez voir que sur tous les passagers survivants, plus de 70% d'entre eux sont des femmes. Le taux de survie significativement plus élevé des femmes par rapport aux hommes est une observation frappante.
Cet écart suggère que le sexe a joué un rôle crucial dans la détermination des chances de survie lors de la tragédie du 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()
L'histogramme avec le tracé KDE illustre la distribution des âges des passagers à bord du Titanic. Les données montrent une distribution asymétrique à gauche, indiquant qu'il y avait plus de jeunes adultes, en particulier entre 18 et 35 ans, que d'adultes plus âgés ou d'enfants parmi les passagers.
Pour analyser la distribution des âges des passagers, nous avons utilisé un histogramme avec un graphique KDE (Kernel Density Estimation). L'axe des x représente différents intervalles d'âge (bacs), tandis que l'axe des y affiche le nombre de passagers appartenant à chaque groupe d'âge. En visualisant les données de cette manière, nous avons pu discerner la nature biaisée de la répartition par âge sur le Titanic, soulignant la prévalence de jeunes adultes parmi les passagers.
# 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()
Le graphique à barres présente les taux de survie basés sur la classe de passagers pour les passagers de l'ensemble de données Titanic. Il ressort du graphique que plus la classe de passagers est élevée, plus le taux de survie est élevé. Cette observation correspond à la compréhension historique selon laquelle les passagers des classes supérieures (1ère classe) avaient un meilleur accès aux canots de sauvetage et aux mesures de sécurité, ce qui a probablement contribué à augmenter leurs chances de survie. En revanche, les passagers des classes inférieures (3e classe) ont été confrontés à plus de défis pendant le processus d'évacuation, ce qui a potentiellement entraîné un taux de survie plus faible pour ce groupe.
Pour analyser les taux de survie en fonction de la classe de passagers, nous avons créé un graphique à barres. Chaque barre représente le pourcentage de passagers qui ont survécu pour chaque catégorie de classe (1ère, 2ème ou 3ème classe). En examinant visuellement le tracé, nous avons pu identifier toute disparité dans les taux de survie entre les différentes classes de passagers. Les hauteurs des barres indiquent les taux de survie, les barres les plus hautes indiquant des pourcentages plus élevés de survivants pour des classes de passagers spécifiques.
# 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()
Le graphique à barres illustre les taux de survie pour différents groupes d'âge parmi les passagers de l'ensemble de données Titanic. Il révèle que certains groupes d'âge, tels que les enfants, les adultes et les personnes âgées, avaient de plus grandes chances de survie pendant la catastrophe. Cette observation indique que la priorité a été donnée à ces groupes d'âge vulnérables lors du processus d'évacuation, ce qui a entraîné des taux de survie plus élevés pour eux.
Pour analyser les taux de survie en fonction des groupes d'âge, nous avons créé un graphique à barres. Chaque barre représente le pourcentage de survivants dans un groupe d'âge spécifique. En examinant le graphique, nous avons pu observer les variations des taux de survie entre les différents groupes d'âge. Cela nous a permis de déduire que certains groupes d'âge, comme les enfants, les adultes et les personnes âgées, étaient prioritaires et avaient de meilleures chances de survie lors de l'événement tragique. La méthodologie employée ici a fourni des informations précieuses sur l'impact de l'âge sur les résultats de survie, reflétant les efforts humanitaires pour protéger les passagers les plus vulnérables pendant la catastrophe.
# 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()
Le graphique à barres présente les taux de survie basés sur le port d'embarquement pour les passagers dans l'ensemble de données Titanic. En analysant le graphique, nous pouvons clairement observer que le taux de survie le plus élevé est associé aux passagers qui ont embarqué depuis Cherbourg, tandis que le taux de survie le plus bas est lié à ceux qui ont embarqué depuis Southampton.
Cette visualisation offre des informations précieuses sur les variations des taux de survie en fonction du port d'embarquement, suggérant des facteurs potentiels pouvant avoir influencé les chances de survie des passagers.
Pour analyser les taux de survie en fonction du port d'embarquement, nous avons créé un bar plot. Chaque barre représente le pourcentage de survivants pour chaque catégorie de port d'embarquement (Cherbourg, Queenstown, Southampton). En examinant visuellement le tracé, nous avons pu identifier des différences significatives dans les taux de survie entre les différents points d'embarquement.
# 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()
Le graphique montre que le taux de survie était le plus élevé pour les passagers du groupe tarifaire le plus élevé (300+), suivi du deuxième groupe tarifaire le plus élevé (200-300). À l'inverse, le taux de survie diminuait à mesure que le groupe tarifaire diminuait, le taux de survie le plus faible étant celui des passagers du groupe tarifaire le plus bas (0-50).
Cette analyse suggère que le tarif payé a joué un rôle important dans la détermination des chances de survie sur le Titanic. Les passagers qui payaient des tarifs plus élevés étaient plus susceptibles d'être en première classe, qui avait un taux de survie global plus élevé.
De plus, ces passagers mieux payés auraient pu avoir la priorité lors des efforts de sauvetage, contribuant à leur taux de survie plus élevé. Pour analyser la relation entre les groupes tarifaires et les taux de survie, nous avons créé un graphique à barres présentant les pourcentages de survie pour chaque groupe tarifaire. Le graphique nous a permis d'observer la tendance des taux de survie en fonction des groupes de tarifs, révélant que des tarifs plus élevés étaient associés à des taux de survie plus élevés.
# 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()
Le graphique montre clairement une tendance à la baisse des taux de survie à mesure que le niveau du pont de la cabine diminue, le taux de survie le plus bas étant observé pour les passagers du pont A.
Cette analyse suggère que l'emplacement de la cabine d'un passager était en effet un facteur important dans ses chances de survie sur le Titanic. Les passagers sur les ponts supérieurs avaient probablement un meilleur accès aux canots de sauvetage et étaient plus facilement secourus.
De plus, ils ont peut-être été prioritaires lors des opérations de sauvetage, ce qui a contribué à leur taux de survie plus élevé. En examinant le graphique, nous avons pu identifier les tendances des taux de survie en fonction des niveaux du pont de la cabine.
# 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()
La carte thermique fournit une représentation visuelle des taux de survie pour différents groupes d'âge et sexes parmi les passagers de l'ensemble de données Titanic. En analysant la carte thermique, nous pouvons observer des schémas et des tendances des taux de survie en fonction de l'âge et du sexe, ce qui nous permet d'identifier les groupes d'âge et de sexe qui avaient des chances de survie plus ou moins élevées pendant la catastrophe. L'intensité de la couleur dans la carte thermique sert d'indicateur clair, les couleurs plus foncées représentant des taux de survie plus élevés et les couleurs plus claires indiquant des taux de survie plus faibles.
De la carte thermique, nous pouvons tirer plusieurs idées. Les passagers féminins âgés avaient la plus grande probabilité de survie, tandis que les passagers masculins âgés avaient les plus faibles chances de survie. De plus, la carte thermique révèle qu'en général, les femmes étaient plus susceptibles de survivre dans toutes les catégories d'âge. Ces observations mettent en lumière l'influence significative de l'âge et du sexe dans la détermination des résultats de survie des passagers au cours de cette tragédie historique.
Pour visualiser les taux de survie en fonction des groupes d'âge et des sexes, nous avons utilisé une carte thermique. Chaque cellule de la carte thermique représente le taux de survie (pourcentage) pour une combinaison spécifique de groupe d'âge et de sexe. En examinant l'intensité de la couleur dans la carte thermique, nous avons pu discerner les différences de taux de survie entre les différents groupes d'âge et de sexe.
# 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()
Le graphique montre que les passagers avec des familles plus nombreuses étaient plus susceptibles de survivre au naufrage du Titanic. Le taux de survie des passagers dont la famille comptait de 1 à 4 personnes augmentait à mesure que le nombre de membres de la famille augmentait.
Cette idée est importante car elle met en évidence la taille de la famille comme l'un des meilleurs prédicteurs de la survie sur le Titanic. Les passagers avec des familles plus nombreuses voyageaient probablement ensemble, ce qui en faisait une priorité pour les efforts de sauvetage.
De plus, le fait d'avoir plus de membres de la famille peut avoir facilité le soutien mutuel, comme le partage de ressources comme la nourriture et l'eau, ce qui aurait pu contribuer à augmenter leurs chances de survie.
Pour analyser la relation entre la taille de la famille et les taux de survie, nous avons créé un diagramme à barres affichant les pourcentages de survie pour chaque catégorie de taille de famille. En examinant visuellement le graphique, nous avons pu identifier comment la taille de la famille influençait les résultats de survie des passagers.
# 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()
Le graphique révèle plusieurs modèles importants concernant les taux de survie basés sur le port d'embarquement et la classe de passagers. Les passagers qui embarquaient de Cherbourg avaient un taux de survie supérieur à ceux de Queenstown ou de Southampton.
Cela est peut-être dû au fait que Cherbourg est le premier port d'escale et à la probabilité que davantage de passagers de première classe y embarquent. De plus, en tant que port français, il peut y avoir eu un parti pris pour sauver les passagers français.
De plus, le graphique indique que les passagers de première classe avaient un taux de survie plus élevé que ceux de deuxième ou de troisième classe. Cela peut être attribué au fait que les passagers de première classe sont considérés comme une priorité pour le sauvetage et ont un meilleur accès aux canots de sauvetage en raison de leur statut social plus élevé et de leur capacité potentielle à se permettre des mesures de sauvetage.
Enfin, une tendance notable dans tous les ports est la diminution du taux de survie à mesure que la classe de passagers diminue. Cela suggère que la classe de passagers était un déterminant important de la survie sur le Titanic, les passagers de première classe ayant les meilleures chances de survie. Pour analyser la relation entre le port d'embarquement, la classe de passagers et les taux de survie, nous avons créé une carte thermique. La carte thermique représente les pourcentages de taux de survie pour différentes combinaisons de port d'embarquement et de classe de passagers. En examinant la carte thermique, nous avons pu identifier des modèles et des tendances dans les taux de survie en fonction de ces deux facteurs.