
๋จผ์ ๋ถ์ํ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ๋ถ๋ฌ์ต๋๋ค.
# ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
titanic_df = pd.read_csv("./train.csv")
#์์ 5๊ฐ ๋ฐ์ดํฐ ํ์ธ
titanic_df.head(5)

๊ฐ column์ ํ์ธํ ์ ์๋ค.
column์ค๋ช
# ๊ฐ Column์ ๋ฐ์ดํฐ ํ์
ํ์ธํ๊ธฐ
titanic_df.dtypes
>>>PassengerId int64
Survived int64
Pclass int64
Name object
Sex object
Age float64
SibSp int64
Parch int64
Ticket object
Fare float64
Cabin object
Embarked object
dtype: object
์ด์ ๋ถ๋ฌ์จ ๋ฐ์ดํฐ๋ฅผ ์ ์ฒด์ ์ผ๋ก ํ ๋ฒ ์ดํด๋ณธ๋ค.
# ๋ฐ์ดํฐ ์ ์ฒด ์ ๋ณด๋ฅผ ์ป๋ ํจ์ : .describe()
titanic_df.describe()#์์นํ ๋ฐ์ดํฐ์ ๋ํ ์์ฝ๋ง์ ์ ๊ณต

PassengerId๋ถ๋ถ์ ๋จ์ํ ์ง์ ๋ ์ซ์์ด๊ธฐ ๋๋ฌธ์ ํ์ ์๋ค.
Age๋ถ๋ถ์ ์ดํด๋ณด๋ฉด mean๊ฐ๊ณผ ์ค์๊ฐ์ด 20๋์ด๊ณ 3๋ถ์์ ๊ฐ์ด 38์ธ๋ก ๋๋ถ๋ถ์ ๋์ด๊ฐ ๊ทธ๋ ๊ฒ ๋ง์ง ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
#์๊ด๊ณ์ ํ์ธ!
titanic_df.corr(numeric_only=True)
# correlation is not causation
#์๊ด์ฑ : A up ,B up
#์ธ๊ณผ์ฑ : A->B

corr()๊ฐ ์ซ์ํ ๋ณ์๊ฐ์ ์๊ด๊ณ์๋ฅผ ๋ฐ์ดํฐํ๋ ์ ํํ๋ก ๋ํ๋ด๋ ํจ์์ธ๋ฐ, ์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ ์๊ด๊ณ์๊ฐ ์ธ๊ณผ๊ด๊ณ๋ฅผ ์๋ฏธํ๋ ๊ฒ์ ์๋๋ผ๋ ๊ฒ์ด๋ค.
corr๊ฐ์ ์ดํด๋ณด๋ฉด Pclass์ Survived์ฌ์ด์์ ์์ ์๊ด๊ณ์๋ฅผ ๊ฐ์ง๋ ๊ฒ์ ๋ณผ ์ ์๋๋ฐ, Pclass๋ ์ข์ ์๋ฆฌ์ผ์๋ก ๊ทธ ๊ฐ์ด ๋ฎ๊ธฐ ๋๋ฌธ์ ์ข์ ์๋ฆฌ์ผ์๋ก survived์ ๊ฐ์ ๋ฎ์์ง๋ ๊ฒฝํฅ์ ๋ณด์ด๋ ๊ฒ์ ์ ์ ์๋ค.
๋ค์์ผ๋ก ๋ฐ์ดํฐ ์ ์ ๊ฒฐ์ธก์น ๋ฐ์ดํฐ๋ฅผ ํ์ธํ๋ค.
# ๊ฒฐ์ธก์น ํ์ธ
titanic_df.isnull().sum()
#age, cabin,embarked์์ ๊ฒฐ์ธก์น ๋ฐ๊ฒฌ
>>>PassengerId 0
Survived 0
Pclass 0
Name 0
Sex 0
Age 177
SibSp 0
Parch 0
Ticket 0
Fare 0
Cabin 687
Embarked 2
dtype: int64
๋ฐ์ดํฐ๋ฅผ ์ ์ฒด์ ์ผ๋ก ํ ๋ฒ ์ดํด๋ณด์์ผ๋ฏ๋ก ์ด๋ฒ์ ๊ฐ๋ณ ๋ฐ์ดํฐ๋ณ๋ก ์์ฑ์ ํ์ ํ๋ค.
# ์์กด์, ์ฌ๋ง์ ๋ช
์๋?
titanic_df["Survived"].value_counts()
>>>Survived
0 549
1 342
Name: count, dtype: int64
์ฌ๋ง์ 549๋ช ์์กด์ 342๋ช ์ผ๋ก ์ฌ๋ง์๊ฐ ๋ ๋ง๊ฒ ๋์๋ค.
# ์์กด์์์ ์ฌ๋ง์์๋ฅผ Barplot์ผ๋ก ๊ทธ๋ ค๋ณด๊ธฐ sns.countplot()
sns.countplot(x ='Survived', data = titanic_df)
plt.show()

์๊ฐํ๋ฅผ ํตํด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ ๊ฐ๊ฒฐํ๊ฒ ํ์ธํ ์ ์๋ค.
#Pcalss์ ๋ฐ๋ฅธ ์ธ์ ํ์
titanic_df[['Pclass','Survived']].groupby(['Pclass']).count()
#์์กด์ ์ธ์
titanic_df[['Pclass','Survived']].groupby(['Pclass']).sum()
์์กด์์ ๊ฐ์ด 1์ด๋ฏ๋ก sum()์ ํด์ฃผ๋ฉด ์์กด์์ ์ธ์ ์๋ฅผ ์ ์ ์๋ค.

Pclass๋ณ๋ก ์ด ์ธ์์๊ฐ ๋ค๋ฅด๋ฏ๋ก ์์กด ๋น์จ๋ก ํ์ํด๋ดค๋ค.
#์์กด ๋น์จ
titanic_df[['Pclass','Survived']].groupby(['Pclass']).mean()
์ข์ class์ผ์๋ก ์์กด๋น์จ์ด ๋ ๋์๊ฒ์ ์ ์ ์๋ค.
titanic_df.groupby(['Survived', 'Sex'])['Survived'].count()
>>>Survived Sex
0 female 81
male 468
1 female 233
male 109
Name: Survived, dtype: int64
์ด๋ฅผ ์๊ฐํํด๋ณด์๋ค.
sns.catplot(x = 'Sex', col = 'Survived', kind = 'count',data = titanic_df)
plt.show()

๋จ์์ ์์กด์ ๋น์จ๋ณด๋ค ์ฌ์์ ์์กด์ ๋น์จ์ด ์๋ฑํ ๋์์ ์ ์ ์๋ค.
#Survived 1,0 ๊ณผ Age์ ๊ฒฝํฅ์ฑ
#ํ๋์ ์ถ ์์ ๋๊ฐ์ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ ค์ฃผ๊ธฐ ์ํด ๋ฐ์ ๋ช
๋ น์ด ์คํ
fig, ax = plt.subplots(1,1,figsize = (10,5))
sns.kdeplot(x = titanic_df[titanic_df['Survived']==1]['Age'],ax = ax)
sns.kdeplot(x = titanic_df[titanic_df['Survived']==0]['Age'],ax = ax)
plt.legend(['Survivde','Dead'])#๋ฐ์ดํฐ ๊ตฌ๋ถ์ ์ํ ๋ฒ๋ก
plt.show()
Age๋ ์ฐ์ํ ๋ณ์์ด๊ธฐ ๋๋ฌธ์ KDEplot์ ํ์ฉํด ์๊ฐํ๋ฅผ ํด์ฃผ์๋ค.
๊ทธ๋ํ๋ฅผ ์ดํด๋ณด๋ฉด 20์ธ๋ณด๋ค ๋ ์ด๋ฆฐ ๋์ด๋์ ์น๊ฐ์ ์์กด์จ์ด ๋์ ๊ฒ์ ๋ณผ ์ ์๊ณ 2,30๋์ ์น๊ฐ์ ์ฌ๋ง์จ์ด ๋ ๋์ ๊ฒ์ ๋ณผ ์ ์๋ค.
์์์ ๋ณผ ์ ์๋ฏ์ด Sex์ Pclass, Age๋ Survived์ ๊ด๋ จ์ด ์๋ค๊ณ ๋ณผ ์ ์์๋ค.
๊ทธ๋์ ์ด๋ฒ์ ๋๊ฐ์ง ๋ณ์๋ฅผ ๋ชจ์ ์ด๋ค ์ํฅ์ด ์๋์ง ์๊ฐํ๋ฅผ ํด๋ณด๋ ค ํ๋ค.
sns.catplot(x = "Pclass", y = 'Survived', hue = 'Sex',kind = 'point', data = titanic_df)
plt.show()
plot์ x์ถ์ Pclass, y์ถ์Survived๋ก ํ๊ณ hue์ธ์๋ฅผ Sex๋ก ๋์ด ๊ฐ ํด๋์ค๋ฅผ ์ฑ๋ณ๋ก ๊ตฌ๋ถํ์ฌ survived์ ๊ฐ์ ์๊ฐํํ์๋ค.

# Age graph with Pclass
titanic_df['Age'][titanic_df.Pclass == 1].plot(kind = 'kde')
titanic_df['Age'][titanic_df.Pclass == 2].plot(kind = 'kde')
titanic_df['Age'][titanic_df.Pclass == 3].plot(kind = 'kde')
plt.legend(['1st class','2nd class','3rd class'])
plt.show()
์ด๋ฒ์๋ Pclass๋ณ๋ก Age๊ฐ ์ด๋ป๊ฒ ๋ถํฌ๋์ด ์๋์ง ์๊ฐํ๋ฅผ ์งํํ๋ค.
๋จผ์ titanic_df์์ age์ด์ ๊ฐ์ ธ์ค๊ณ ๊ฐ Pclass๋ณ๋ก KDEplot๋ฅผ ์์ฑํ๋ค.

๋์ฒด๋ก ์ข์ class์ผ์๋ก ํ๊ท ์ฐ๋ น๋๊ฐ ๋์ ๊ฒ์ผ๋ก ๋ํ๋ฌ๋ค.
๋~!