[PYTHON] Lassen Sie uns die Analyse der sinkenden Daten der Titanic so durchführen

Zweck

Als Rückblick auf die Python-Vorlesung in Udemy untersuchte ich den Untergangsunfall der Titanic. Umgebung ist Windows 10, Python 3.5.2 Alles in Jupiter-Notizbuch geschrieben.

python.PNG


Beginnen wir mit dem Import von Pandas.

import pandas as pd
from pandas import Series, DataFrame

Laden Sie zunächst die Datei train.csv von der Website (https://www.kaggle.com/c/titanic) herunter, auf der die Daten von Kaggle gespeichert sind, um die Daten zum Untergang der Titanic zu erhalten.

titanic.PNG

#CSV-Datei lesen
titanic_df = pd.read_csv('train.csv')
#Zeigen Sie den Anfang der Datei an und überprüfen Sie den Datensatz
titanic_df.head()
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
0 1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S
1 2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C
2 3 1 3 Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S
3 4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 0 113803 53.1000 C123 S
4 5 0 3 Allen, Mr. William Henry male 35.0 0 0 373450 8.0500 NaN S

Das Folgende sind wichtige Punkte in dieser Analyse.


Über Passagiere

##Import numpy und seaborn
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

#Die Daten haben eine Altersspalte, aber keine untergeordnete Statusspalte
#Hier Kinder unter 10 Jahren

def male_female_child(passenger):
    age, sex = passenger
    if age < 10:
        return 'child'
    else:
        return sex

#Es wurde eine neue Spalte mit dem Namen Person für Männer, Frauen und Kinder hinzugefügt
titanic_df['person'] = titanic_df[['Age','Sex']].apply(male_female_child, axis=1)

#Zählen Sie die Anzahl der Passagiere (einschließlich der Überlebenden).
sns.countplot('Pclass', data=titanic_df, hue='person')

output_8_1.png

Vergleicht man die Zimmer der dritten Klasse mit den Zimmern der ersten Klasse, so ist die Anzahl der Kinder überwältigend groß. Schauen wir uns hier die Altersverteilung an.

titanic_df['Age'].hist(bins=70)

output_10_1.png

titanic_df['Age'].mean()
29.69911764705882

Es scheint, dass das Durchschnittsalter insgesamt etwa 30 Jahre betrug. Verwenden wir nun FacetGrid, um die Altersgruppe für jede Raumklasse anzuzeigen.

fig = sns.FacetGrid(titanic_df, hue='Pclass', aspect=4)
fig.map(sns.kdeplot, 'Age', shade=True)
oldest = titanic_df['Age'].max()
fig.set(xlim=(0,oldest))
fig.add_legend()

output_13_2.png

Ich habe die ungefähre Situation der Passagiere verstanden.


Über den Hafen

Übrigens enthält die Spalte von Embarked (Embark ... Boarding) drei Werte von "C", "Q" und "S". Dies bedeutet Cherbourg Port, Queenstown Port und Southhampton Port auf der Kaggle-Seite. Da keiner von ihnen bekannt ist, werde ich aus den Gästezimmerklassen der Leute schließen, die von diesem Hafen aus an Bord gingen.

sns.countplot('Embarked', data=titanic_df, hue='Pclass', color ='g')

output_17_1.png

Anscheinend ist Southhampton Port der größte davon. Es wird auch spekuliert, dass der Hafen von Cherbourg ein wirtschaftlicheres Land war als der Hafen von Queenstown.


Über die Boarding-Kosten

#Sehen Sie sich die Verteilung der Boarding-Kosten nach Gästezimmerklassen mit FacetGrid an
fig = sns.FacetGrid(titanic_df, hue='Pclass', aspect=3)
fig.map(sns.kdeplot, 'Fare', shade=True)
highest = titanic_df['Fare'].max()
fig.set(xlim=(0,highest))
fig.add_legend()

output_20_2.png

Ich habe eine Grafik, die verrückt aussieht.

titanic_df['Fare'].max()
512.32920000000001
titanic_df['Fare'].mean()
32.2042079685746

Es gibt Leute, die offensichtlich viel Geld bezahlen ...

titanic_df[titanic_df['Fare']>300]
PassengerId Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked person
258 259 1 1 Ward, Miss. Anna female 35.0 0 0 PC 17755 512.3292 NaN C female
679 680 1 1 Cardeza, Mr. Thomas Drake Martinez male 36.0 0 1 PC 17755 512.3292 B51 B53 B55 C male
737 738 1 1 Lesurer, Mr. Gustave J male 35.0 0 0 PC 17755 512.3292 B101 C male

Es scheint, dass diese drei Personen im Vergleich zu anderen Passagieren außergewöhnlich hohe Boarding-Kosten bezahlt haben. (Und natürlich hat jeder den Unfall überlebt.)

Für diejenigen, die interessiert sind, werde ich die Site-Links für die oben genannten drei Personen veröffentlichen.

Zeichnen wir eine Grafik, in der nur diese drei Personen herausgezogen sind.

drop_idx = [258, 679, 737]
titanic_df2 = titanic_df.drop(drop_idx)

fig = sns.FacetGrid(titanic_df2, hue='Pclass', aspect=4)
fig.map(sns.kdeplot, 'Fare', shade=True)
highest = titanic_df2['Fare'].max()
fig.set(xlim=(0,highest))
fig.add_legend()

output_27_2.png

Es sah nicht sehr einfach aus ... Werfen wir einen Blick auf das Boarding-Kosten-Histogramm.

titanic_df['Fare'].hist(bins=70)

output_29_1.png


Über die Überlebensrate

Lassen Sie uns zunächst einen kurzen Blick auf die Gesamtüberlebensrate werfen.

titanic_df['Survivor'] = titanic_df.Survived.map({0:'Dead', 1:'Alive'})
sns.countplot('Survivor', data=titanic_df, palette='husl')

output_31_1.png

Als nächstes über Raumklasse und Überlebensrate.

sns.factorplot('Pclass', 'Survived', data=titanic_df)

output_32_1.png

Bisher scheint das Ergebnis vernünftig zu sein.

Schauen wir uns den Farbton genauer an.

sns.factorplot('Pclass', 'Survived', hue='person', data=titanic_df, aspect=2)

output_34_1.png

Es wurde für einen Moment zu einer Frage, aber wie ich oben nachgesehen habe, waren fast keine Kinder im erstklassigen Raum.

Zeichnen wir für jedes Alter eine Regressionslinie im Diagramm der Überlebensrate.

generations = [10,20,30,40,50,60,70,80]
sns.lmplot('Age', 'Survived', hue='Pclass', data=titanic_df,
           hue_order=[1,2,3], x_bins=generations)

output_36_1.png

Sie können sehen, dass es einen Unterschied in der Überlebensrate von 10 bis 20% gibt, abhängig vom Rang des Gästezimmers, unabhängig vom Alter, obwohl es Unterschiede gibt.

sns.lmplot('Age','Survived',hue='Sex',data=titanic_df,palette='summer',
           x_bins=generations)

output_38_1.png

Im Vergleich zum Geschlecht wurde jedoch festgestellt, dass die Überlebensrate von Frauen mit dem Alter anstieg.


Impressionen

jupyter notebook Ich bin noch nicht daran gewöhnt, aber vorerst habe ich viel geschrieben und festgestellt, dass es mit der Verknüpfung von "esc +" M "in" Markdown "geändert werden kann.

Recommended Posts

Lassen Sie uns die Analyse der sinkenden Daten der Titanic so durchführen
Datenanalyse Titanic 2
Datenanalyse Titanic 1
Datenanalyse Titanic 3
Lassen Sie uns die Daten der Fragebogenumfrage analysieren [4 .: Emotionsanalyse]
Erstellen Sie einen BOT, der die Discord-URL verkürzt
Schauen wir uns das Streudiagramm vor der Datenanalyse an
Verwenden wir die offenen Daten von "Mamebus" in Python
Lassen Sie uns die Eisenbahndaten der nationalen Landnummern verwenden
Lassen Sie uns einen Roboter bauen, der den Zauberwürfel löst! 2 Algorithmus
Datenanalyse basierend auf den Wahlergebnissen der Gouverneurswahl von Tokio (2020)
Datenverarbeitung, die die Auswirkungen von Verschränkungsfaktoren eliminiert (Theorie)
Lassen Sie uns einen Roboter bauen, der den Zauberwürfel löst! 3 Software
Lassen Sie uns einen Roboter bauen, der den Zauberwürfel löst! 1. Übersicht
Machen wir eine Karte der neuen Korona-Infektionsstelle [FastAPI / PostGIS / deck.gl (React)] (Datenverarbeitung)
Beginn der Niko Niko Encyclopedia Analysis ~ JSON und berühren Sie die bereitgestellten Daten ~
Erstellen Sie das Thema von Pythonista 3 wie Monokai (wie Sie Ihr eigenes Thema erstellen)
Suchen Sie den Installationsort des Sensors, der die Menge der erfassten Daten maximiert
Über Boxplot und Violinplot, die die Variation unabhängiger Daten visualisieren
Empfehlung zur Datenanalyse mit MessagePack
Zeitreihenanalyse 3 Vorverarbeitung von Zeitreihendaten
Datenverarbeitung 2 Analyse verschiedener Datenformate
Lassen Sie uns den Gewinner des Bingo bestimmen
Spielen wir mit dem von TIS erstellten Unternehmensanalysedatensatz "CoARiJ"
Ich habe einen Korpusleser geschrieben, der die Ergebnisse der MeCab-Analyse liest
Python-E-Book-Zusammenfassung nützlich für die frei lesbare Datenanalyse
Zusammenfassung der Wahrscheinlichkeitsverteilungen, die häufig in Statistiken und Datenanalysen vorkommen
Spielen wir mit dem von TIS erstellten Unternehmensanalysedatensatz "CoARiJ"
Erläutern Sie den Mechanismus der PEP557-Datenklasse
Dies und das der Einschlussnotation.
Holen Sie sich die Spaltenliste und Datenliste von CASTable
Ich habe versucht, Faktoren mit Titanic-Daten zu analysieren!
Datenanalyse vor der Erzeugung der Titanic-Features von Kaggle
[Datenanalyse] Lassen Sie uns die US-Automobilbestände analysieren
Untersuchen wir den Mechanismus von Kaijis Chinchirorin
Visualisieren Sie die Exportdaten des Piyo-Protokolls
Machen Sie den Standardwert des Arguments unveränderlich
Python-Übungsdatenanalyse Zusammenfassung des Lernens, dass ich ungefähr 10 mit 100 Schlägen getroffen habe
Lassen Sie uns den Bevölkerungsübergang von Matsue City, Präfektur Shimane, mit offenen Daten überprüfen
Suchen Sie den Index der Elemente, die den Bedingungen im Pandas-Datenrahmen / der Pandas-Serie entsprechen
Lassen Sie uns ein Clustering durchführen, das eine schöne Vogelperspektive auf den Textdatensatz bietet
Zusammenfassung der Scikit-Learn-Datenquellen, die beim Schreiben von Analyseartikeln verwendet werden können
Einführung in die statistische Modellierung für die Datenanalyse Erweiterung des Anwendungsbereichs von GLM
Organisieren Sie Python-Tools, um die anfängliche Bewegung von Datenanalyse-Wettbewerben zu beschleunigen
Eine Einführung in die Datenanalyse mit Python - Um die Anzahl der Videoansichten zu erhöhen -
So erstellen Sie einen Raspberry Pi, der die Tweets eines bestimmten Benutzers spricht
Ich habe versucht, OneHotEncoder zu erstellen, der häufig für die Datenanalyse verwendet wird, damit er den juckenden Ort erreicht.