Der Untergang der RMS Titanic im Jahr 1912 ist nach wie vor eine der tödlichsten Schiffskatastrophen der Geschichte. Mehr als 1.500 Menschen kamen ums Leben, als das Schiff auf einen Eisberg prallte und im Nordatlantik sank. In den folgenden Jahren wurden umfangreiche Untersuchungen durchgeführt, um die Faktoren zu verstehen, die zu der hohen Zahl der Todesopfer beitrugen.
Nur 38 % der Passagiere überlebten dieses verheerende Ereignis, was mich dazu veranlasste, mich über die Personen zu wundern, die sich in dieser schicksalhaften Nacht an Bord der Titanic befanden.
Spielten Klassenunterschiede eine Rolle bei der Bestimmung des Schicksals der Menschen an Bord und schufen sie eine Kluft zwischen Privilegien und Gefahren? Welchen Einfluss hatten Alter und Geschlecht darauf, wer überlebte und wer dem unerbittlichen Meer erlag? Bietet die Anwesenheit von Familienmitgliedern inmitten des Chaos Trost und Unterstützung und drängt die Passagiere dazu, sich dem Sturm gemeinsam zu stellen? Und hatte der Einschiffungshafen Einfluss auf das Schicksal derjenigen, die von verschiedenen Orten aus an Bord gingen?
Glücklicherweise können wir diese Fragen mithilfe des bei Kaggle verfügbaren Titanic-Datensatzes beantworten. Mehr als hundert Jahre nach dem Untergang können wir die Daten nutzen, um zu verstehen, wie der Ticketpreis das Überleben beeinflusst haben könnte und ob bestimmte Kabinenstandorte während der tragischen Ereignisse Zuflucht boten. Diese explorative Datenanalyse (EDA) wird Einblicke in die Erfahrungen der Passagiere geben und Licht auf ihre Geschichten über Mut und Verlust in dieser schicksalhaften Nacht werfen.
Hier sind einige der Erkenntnisse, die wir während der Analyse untersuchen werden:
Der Titanic-Datensatz ist eine Sammlung von Daten über die Passagiere und die Besatzung der RMS Titanic, die 1912 sank. Der Datensatz enthält Informationen über den Namen, das Alter, das Geschlecht, die Ticketklasse jedes Passagiers und darüber, ob er den Untergang überlebt hat. Der Titanic-Datensatz ist ein beliebter Datensatz für maschinelles Lernen und datenwissenschaftliche Projekte. Es wird häufig verwendet, um Modelle zu trainieren, um anhand ihrer Eigenschaften vorherzusagen, ob Passagiere den Untergang überlebt haben. Der Titanic-Datensatz wird auch zur Untersuchung sozialer Netzwerke und menschlichen Verhaltens verwendet.
Der Titanic-Datensatz wurde von Kaggle, einer Datenwissenschafts-Community, erstellt. Der Datensatz steht zum kostenlosen Download auf der Kaggle-Website zur Verfügung.
Den Datensatz erhalten Sie hier
Beginnen wir unsere Analyse mit dem Laden der erforderlichen Module und des Titanic-Datensatzes
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()
Sie können sehen, dass dieser Datensatz alle Informationen zu jedem Passagier enthält, die ich im Einleitungsabschnitt dieses Artikels besprochen habe.
Beginnen wir nun unsere Analyse mit Pandas und visualisieren wir die Erkenntnisse mit Matplotlib und 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()
Das Balkendiagramm bietet eine klare und prägnante visuelle Darstellung der Gesamtüberlebensrate der Passagiere auf der Titanic. Es zeigt sich, dass nur 38 % der Passagiere die Katastrophe überlebten.
Die Höhe der Balken stellt die Anzahl der Passagiere in jeder Kategorie dar (0 für Nicht-Überlebende und 1 für Überlebende). Die im Titel der Handlung angegebene Überlebensrate gibt den Prozentsatz der Passagiere an, die das tragische Ereignis überlebt haben.
# 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()
Sie sehen, dass von allen überlebenden Passagieren über 70 % weiblich sind. Auffallend ist die deutlich höhere Überlebensrate bei Frauen im Vergleich zu Männern.
Diese Diskrepanz legt nahe, dass das Geschlecht eine entscheidende Rolle bei der Bestimmung der Überlebenschancen während der Titanic-Tragödie spielte.
# 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()
Das Histogramm mit KDE-Diagramm veranschaulicht die Verteilung des Passagieralters an Bord der Titanic. Die Daten zeigen eine linksschiefe Verteilung, was darauf hindeutet, dass sich unter den Passagieren mehr junge Erwachsene, insbesondere im Alter zwischen 18 und 35 Jahren, im Vergleich zu älteren Erwachsenen oder Kindern befanden.
Um die Verteilung des Passagieralters zu analysieren, verwendeten wir ein Histogramm mit KDE-Diagramm (Kernel Density Estimation). Die x-Achse stellt verschiedene Altersintervalle (Bins) dar, während die y-Achse die Anzahl der Passagiere anzeigt, die in jede Altersgruppe fallen. Durch die Visualisierung der Daten auf diese Weise konnten wir die verzerrte Natur der Altersverteilung auf der Titanic erkennen und die Prävalenz junger Erwachsener unter den Passagieren hervorheben.
# 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()
Das Balkendiagramm zeigt die Überlebensraten basierend auf der Passagierklasse für die Passagiere im Titanic-Datensatz. Aus der Darstellung geht hervor, dass die Überlebensrate umso höher ist, je höher die Passagierklasse ist. Diese Beobachtung deckt sich mit der historischen Erkenntnis, dass Passagiere höherer Klassen (1. Klasse) einen besseren Zugang zu Rettungsbooten und Sicherheitsmaßnahmen hatten, was wahrscheinlich zu ihren höheren Überlebenschancen beitrug. Im Gegensatz dazu waren Passagiere in niedrigeren Klassen (3. Klasse) während des Evakuierungsprozesses mit größeren Herausforderungen konfrontiert, was möglicherweise zu einer geringeren Überlebensrate für diese Gruppe führte.
Um die Überlebensraten basierend auf der Passagierklasse zu analysieren, haben wir ein Balkendiagramm erstellt. Jeder Balken stellt den Prozentsatz der überlebenden Passagiere für jede Klassenkategorie (1., 2. oder 3. Klasse) dar. Durch die visuelle Untersuchung des Diagramms konnten wir Unterschiede in den Überlebensraten zwischen den verschiedenen Passagierklassen feststellen. Die Höhe der Balken gibt die Überlebensraten an, wobei höhere Balken einen höheren Prozentsatz an Überlebenden für bestimmte Passagierklassen anzeigen.
# 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()
Das Balkendiagramm veranschaulicht die Überlebensraten verschiedener Altersgruppen unter den Passagieren im Titanic-Datensatz. Es zeigt sich, dass bestimmte Altersgruppen wie Kinder, Erwachsene und ältere Menschen während der Katastrophe höhere Überlebenschancen hatten. Diese Beobachtung deutet darauf hin, dass diesen gefährdeten Altersgruppen bei der Evakuierung Vorrang eingeräumt wurde, was zu höheren Überlebensraten für sie führte.
Um die Überlebensraten nach Altersgruppen zu analysieren, haben wir ein Balkendiagramm erstellt. Jeder Balken stellt den Prozentsatz der Überlebenden in einer bestimmten Altersgruppe dar. Durch die Untersuchung des Diagramms konnten wir die Unterschiede in den Überlebensraten zwischen verschiedenen Altersgruppen beobachten. Daraus konnten wir schließen, dass bestimmte Altersgruppen wie Kinder, Erwachsene und ältere Menschen Vorrang hatten und während des tragischen Ereignisses bessere Überlebenschancen hatten. Die hier verwendete Methodik lieferte wertvolle Erkenntnisse über den Einfluss des Alters auf die Überlebenschancen und spiegelt die humanitären Bemühungen wider, die am stärksten gefährdeten Passagiere während der Katastrophe zu schützen.
# 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()
Das Balkendiagramm zeigt die Überlebensraten der Passagiere im Titanic-Datensatz basierend auf dem Einschiffungshafen. Durch die Analyse der Darstellung können wir deutlich erkennen, dass die höchste Überlebensrate bei Passagieren liegt, die von Cherbourg aus einschifften, während die niedrigste Überlebensrate bei Passagieren liegt, die von Southampton aus einschifften.
Diese Visualisierung bietet wertvolle Einblicke in die Unterschiede in den Überlebensraten je nach Einschiffungshafen und weist auf mögliche Faktoren hin, die die Überlebenschancen der Passagiere beeinflusst haben könnten.
Um die Überlebensraten basierend auf dem Einschiffungshafen zu analysieren, haben wir ein Balkendiagramm erstellt. Jeder Balken stellt den Prozentsatz der Überlebenden für jede Einschiffungshafenkategorie (Cherbourg, Queenstown, Southampton) dar. Durch die visuelle Untersuchung des Diagramms konnten wir signifikante Unterschiede in den Überlebensraten zwischen den verschiedenen Einschiffungspunkten feststellen.
# 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()
Die Grafik zeigt, dass die Überlebensrate bei Passagieren in der höchsten Tarifgruppe (300+) am höchsten war, gefolgt von der zweithöchsten Tarifgruppe (200-300). Umgekehrt nahm die Überlebensrate mit abnehmender Tarifgruppe ab, wobei die Überlebensrate für Passagiere in der niedrigsten Tarifgruppe (0–50) am niedrigsten war.
Diese Analyse legt nahe, dass der gezahlte Fahrpreis eine wesentliche Rolle bei der Bestimmung der Überlebenschancen auf der Titanic spielte. Passagiere, die höhere Tarife zahlten, waren eher in der ersten Klasse, wo die Überlebensrate insgesamt höher war.
Darüber hinaus wurde diesen besser zahlenden Passagieren möglicherweise bei den Rettungsbemühungen Vorrang eingeräumt, was zu ihrer höheren Überlebensrate beitrug. Um die Beziehung zwischen Tarifgruppen und Überlebensraten zu analysieren, haben wir ein Balkendiagramm erstellt, das die Überlebensprozentsätze für jede Tarifgruppe darstellt. Die Grafik ermöglichte es uns, den Trend der Überlebensraten basierend auf Tarifgruppen zu beobachten und zeigte, dass höhere Tarife mit höheren Überlebensraten verbunden waren.
# 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()
Die Grafik zeigt deutlich einen abnehmenden Trend der Überlebensraten mit abnehmendem Niveau des Kabinendecks, wobei die niedrigste Überlebensrate für Passagiere auf Deck A beobachtet wurde.
Diese Analyse legt nahe, dass die Lage der Passagierkabine tatsächlich ein wesentlicher Faktor für ihre Überlebenschancen auf der Titanic war. Passagiere auf höheren Decks hatten wahrscheinlich einen besseren Zugang zu Rettungsbooten und konnten leichter gerettet werden.
Darüber hinaus wurde ihnen möglicherweise bei den Rettungseinsätzen Vorrang eingeräumt, was zu ihren höheren Überlebensraten beitrug. Um die Beziehung zwischen Kabinendeckebenen und Überlebensraten zu analysieren, haben wir ein Balkendiagramm erstellt, das die Überlebensprozentsätze für jedes Deck anzeigt. Durch die Untersuchung der Grafik konnten wir die Trends bei den Überlebensraten anhand der Kabinendeckebenen erkennen.
# 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()
Die Heatmap bietet eine visuelle Darstellung der Überlebensraten für verschiedene Altersgruppen und Geschlechter unter den Passagieren im Titanic-Datensatz. Durch die Analyse der Heatmap können wir Muster und Trends in den Überlebensraten basierend auf Alter und Geschlecht beobachten und so ermitteln, welche Alters- und Geschlechtsgruppen während der Katastrophe höhere oder niedrigere Überlebenschancen hatten. Die Farbintensität in der Heatmap dient als eindeutiger Indikator, wobei dunklere Farben höhere Überlebensraten und hellere Farben niedrigere Überlebensraten anzeigen.
Aus der Heatmap können wir mehrere Erkenntnisse ziehen. Ältere weibliche Passagiere hatten die höchste Überlebenswahrscheinlichkeit, während ältere männliche Passagiere die geringsten Überlebenschancen hatten. Darüber hinaus zeigt die Heatmap, dass Frauen in allen Alterskategorien im Allgemeinen eine höhere Überlebenschance hatten. Diese Beobachtungen werfen ein Licht auf den erheblichen Einfluss von Alter und Geschlecht auf die Überlebenschancen der Passagiere während dieser historischen Tragödie.
Um die Überlebensraten basierend auf Altersgruppen und Geschlechtern zu visualisieren, haben wir eine Heatmap verwendet. Jede Zelle in der Heatmap stellt die Überlebensrate (Prozentsatz) für eine bestimmte Altersgruppe und Geschlechtskombination dar. Durch die Untersuchung der Farbintensität in der Heatmap konnten wir die Unterschiede in den Überlebensraten zwischen verschiedenen Alters- und Geschlechtsgruppen erkennen.
# 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()
Die Grafik zeigt, dass Passagiere mit größeren Familien den Untergang der Titanic mit größerer Wahrscheinlichkeit überlebten. Die Überlebensrate für Passagiere mit Familiengrößen zwischen 1 und 4 stieg mit zunehmender Anzahl der Familienmitglieder.
Diese Erkenntnis ist bedeutsam, da sie die Familiengröße als einen der stärksten Prädiktoren für das Überleben auf der Titanic hervorhebt. Passagiere mit größeren Familiengrößen reisten wahrscheinlich zusammen, weshalb sie bei Rettungsmaßnahmen Priorität hatten.
Darüber hinaus hätte die größere Anzahl von Familienmitgliedern möglicherweise die gegenseitige Unterstützung erleichtert, etwa die gemeinsame Nutzung von Ressourcen wie Nahrung und Wasser, was zu besseren Überlebenschancen hätte beitragen können.
Um den Zusammenhang zwischen Familiengröße und Überlebensraten zu analysieren, haben wir ein Balkendiagramm erstellt, das die Überlebensprozentsätze für jede Familiengrößenkategorie anzeigt. Durch die visuelle Untersuchung der Grafik konnten wir erkennen, wie die Familiengröße die Überlebenschancen der Passagiere beeinflusste.
# 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()
Die Grafik zeigt mehrere wichtige Muster hinsichtlich der Überlebensraten basierend auf dem Einschiffungshafen und der Passagierklasse. Passagiere, die von Cherbourg aus einschifften, hatten eine höhere Überlebensrate als Passagiere aus Queenstown oder Southampton.
Dies liegt möglicherweise daran, dass Cherbourg der erste Anlaufhafen ist und die Wahrscheinlichkeit besteht, dass dort mehr Passagiere der ersten Klasse einschiffen. Da es sich um einen französischen Hafen handelte, gab es darüber hinaus möglicherweise eine Vorliebe für die Rettung französischer Passagiere.
Darüber hinaus zeigt die Grafik, dass Passagiere in der ersten Klasse eine höhere Überlebensrate hatten als Passagiere in der zweiten oder dritten Klasse. Dies ist darauf zurückzuführen, dass Passagiere der ersten Klasse aufgrund ihres höheren sozialen Status und ihrer potenziellen Fähigkeit, sich lebensrettende Maßnahmen leisten zu können, bei der Rettung Priorität haben und einen besseren Zugang zu Rettungsbooten haben.
Schließlich ist ein bemerkenswerter Trend in allen Häfen die sinkende Überlebensrate mit abnehmender Passagierklasse. Dies deutet darauf hin, dass die Passagierklasse ein wesentlicher Faktor für das Überleben auf der Titanic war, wobei Passagiere der ersten Klasse die höchsten Überlebenschancen hatten. Um die Beziehung zwischen dem Einschiffungshafen, der Passagierklasse und den Überlebensraten zu analysieren, haben wir eine Heatmap erstellt. Die Heatmap stellt die Überlebensratenprozentsätze für verschiedene Kombinationen aus Einschiffungshafen und Passagierklasse dar. Durch die Untersuchung der Heatmap konnten wir anhand dieser beiden Faktoren Muster und Trends bei den Überlebensraten identifizieren.