# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3
#     language: python
#     name: python3
# ---

# # Learning Together - Data Analysis

# $e^{i\pi} + 1 = 0$

# Sekarang kita akan mencoba mengolah data yang ada dengan menggunakan data Kaggle Project yang bisa diakses pada pranala berikut:
#
# http://www.kaggle.com/c/titanic-gettingStarted 
#
# Silakan teman-teman download data <b>_train.csv_</b>
#
# _p.s teman-teman bisa buat akun di Kaggle Project dulu untuk akses datanya_

import pandas as pd
from pandas import Series, DataFrame

# +
#Mengambil data train.csv dan menjadikannya bagian dari DataFrame
data_df = pd.read_csv('train.csv')

#menampilkan 10 data awal yang berhasil dibaca
data_df.head(10)
# -

#membaca general information dari dataset
data_df.info()

# Dari data diatas, kita dapat mengetahui beberapa informasi umum seperti jumlah penumpang, umur, dll. Namun, perlu kita perhatikan juga bahwa terdapat satu kolom yang sangat menonjol, yaitu Cabin. Kolom Cabin hanya memiliki 204 data non-null sehingga hal ini harus diperhatikan kedepannya.
#
# Untuk sekarang, mari kita olah dan menggali beberapa informasi lainnya dari data train.csv ini

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

sns.catplot('Sex', kind="count", data=data_df)

sns.catplot('Sex', kind="count", hue="Survived", data=data_df)

#kita bisa mengganti class attribut dari chart ini sesuai dengan apa yang ini kita perlihatkan, seperti berikut.
sns.catplot('Survived', kind="count", hue="Sex", data=data_df)


def gender_child(pas):
    age,sex = pas
    if age < 20:
        return "Child"
    else:
        return sex



data_df['person'] = data_df[['Age', 'Sex']].apply(gender_child,axis=1)
data_df[1:11]

# #### Data Interpretation
#
# Dari data diatas, kita bisa lihat kolom sebelah kanan pojok terdapat kolom baru dengan kategori nama 'person' yang berisikan informasi yang ingin kita ketahui tadi (male, female, atau child).

sns.catplot('Survived', kind="count", hue="person", data=data_df)

# Dan pada akhirnya kita berhasil memisahkan data-data penumpang yang selamat berdasarkan 3 kelas tadi, yaitu male, female, dan child.

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

data_df['Age'].mean()

data_df['person'].value_counts()

# +
gambar = sns.FacetGrid(data_df, hue='Sex', aspect=4)
gambar.map(sns.kdeplot,'Age', shade=False)

oldest = data_df['Age'].max()

gambar.set(xlim=(0,oldest))

gambar.add_legend()

# +
gambar = sns.FacetGrid(data_df, hue='person', aspect=4)
gambar.map(sns.kdeplot,'Age', shade=True, alpha=0.45)

oldest = data_df['Age'].max()

gambar.set(xlim=(0,oldest))

gambar.add_legend()
# -

 data_df.head(5)

# +
#Melihat banyaknya NaN pada kolom Cabin, hal tersebut dapat mengganggu kegiatan analisa data kita kedepannya. 
#Kita bisa menghapus NaN pada kolom Cabin yang mana data barunya akan kita attributkan ke Dek

dek = data_df['Cabin'].dropna()
dek.head(10)

# +
levels = []

for level in dek:
    levels.append(level[0])

dek_df = DataFrame(levels)
dek_df.columns = ['Cabin']

sns.catplot('Cabin', data=dek_df, palette='winter_d', kind="count")
# -

# Teman-teman bisa perhatikan, terdapat satu keanehan pada plot diatas, yaitu munculnya nilai T value pada hasil plot. Untuk menghilangkan kategori tersebut dari plot, bisa kita gunakan syntax dibawah ini

# +
dek_df = dek_df[dek_df.Cabin != 'T']

sns.catplot('Cabin', data=dek_df, palette='summer', kind="count")
# -

# ### Passengers Analysis
#
# Ingin memeriksa data keseluruhan dari penumpang, apakah mereka memiliki siblings di kapal tersebut ataupun bersama dengan orang tua. Untuk itu, kita akan perhatikan variabel <b>Parch()</b> dan <b>SibSp()</b>

data_df['Sendiri'] = data_df.SibSp + data_df.Parch
data_df['Sendiri'].head()

data_df['Sendiri'].loc[data_df['Sendiri'] >  0] = 'Se-Keluarga'
data_df['Sendiri'].loc[data_df['Sendiri'] == 0] = 'Sendiri'

data_df.head()

# Bisa teman-teman lihat, pada kolom sebelah kanan terdapat atribut baru dengan nama 'Sendiri' dan memiliki nilai yang sudah ditentukan apakan Se-Keluarga atau Sendiri.

sns.catplot('Sendiri', data=data_df, palette='winter_d', kind='count')

data_df['Selamat'] = data_df.Survived.map({0: 'tidak', 1:'selamat'})
data_df['Selamat'].head()

sns.catplot('Selamat', data=data_df, palette='winter_d', kind='count')

sns.catplot('Age','Selamat', hue='person',data=data_df, kind='violin')

sns.lmplot('Age','Survived',data=data_df)

sns.lmplot('Age','Survived',hue='person',data=data_df, palette = 'winter_d')

# +
generasi = [10,30,60,70,80]

sns.lmplot('Age','Survived',hue='Pclass',data=data_df, palette = 'winter_d', x_bins=generasi)
# -

sns.lmplot('Age','Survived',hue='Sex',data=data_df, palette = 'winter_d', x_bins=generasi)

# Dari data dibawah ini dapat kita ketahui, ternyata peluang penumpang Titanic selamat semakin besar apabila anda adalah wanita berumur, sedangkan peluang untuk lelaki berumur semakin tua maka banyak yang tidak selamat.

sns.lmplot('Age','Survived',hue='Sendiri',data=data_df, palette = 'winter_d', x_bins=generasi)

# Ini untuk informasi korelasi apakah bersama keluarga atau tidak, dapat meningkatkan peluang selamat? Sila teman-teman baca dan pahami!
#
# # Happy Analyzing the Data



StarcoderdataJupyterScriptsDedupFiltered