Dacon ์ฝ๋ ๊ณต์ ์์ ์ ๊ณตํ๊ณ ์๋ ์ฝ๋๋ค๋ ์ฐธ๊ณ ํ์์ผ๋, ์ดํด๊ฐ ์๋๋ ์ฝ๋๋ค์ ๊ณผ๊ฐํ๊ฒ ๋ฒ๋ฆฌ๊ณ ์ดํด๋๋ ๋ถ๋ถ๋ง ํ์ ํด๋ณด์์ต๋๋ค.
# ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ถ๋ฌ์ค๊ธฐ
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
train_df = pd.read_csv("./dataset/train.csv")
train_df

# ๋ฐ์ดํฐ์ ์ด ํ์ด ๊ฐ์ ํ์ธ
train_df.shape
# null๊ฐ์ด ์กด์ฌํ๋์ง ํ์ธ
train_df.isnull().sum()
# ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ ์ ๋ณด๋ค์ ์ป์ด๋
# ๊ฐ column๋ณ ๋ฐ์ดํฐ ํ์
๋ ์ป์ ์ ์์
train_df.info()
# ๊ฐ ์ด๋ณ ๊ธฐ์ด ํต๊ณ๋์ ํ์ธํจ
train_df.describe()
๊ด๋์ ๊ฒฝ์ฐ ๊ฐ๋ค์ด ์ง์ํ๊ธฐ๋ฒ์ ์ด์ฉํ์ฌ ๊ธฐ์ดํต๊ณ๋์ด ๋ํ๋๋ ๊ฒฝ์ฐ๋ ์์
(https://seulcode.tistory.com/461 - ์ง์ํ๊ธฐ๋ฒ ์ค๋ช ์ฐธ๊ณ )
์ง์ํ๊ธฐ๋ฒ์ด๋?
10์ ์ ๊ณฑ์๋ฅผ ๊ฐ๋จํ ํํํ๋ ๋ฐฉ๋ฒ์ด๋ค.
e+0n ์ธ ๊ฒฝ์ฐ ์์ซ์ ์๋ก n+1์๋ฆฌ ์๋ผ๋ ์๋ฏธ๋ก, 4.1e+03์ 4100์ ์๋ฏธํ๋ค.
e-0n์ธ ๊ฒฝ์ฐ ์์ซ์ ์๋๋ก n์๋ฆฌ๋ผ๋ ์๋ฏธ๋ก 4.1e-0.4๋ 0.0041์ ์๋ฏธํ๋ค.
describe() ํจ์๊ฐ ์ ๊ณตํด์ฃผ๋ ๊ธฐ์ดํต๊ณ๋์ ๋ค์๊ณผ ๊ฐ๋ค.
count | null๊ฐ์ ์ ์ธํ ์ด ๋ฐ์ดํฐ์ ์ |
mean | ํ๊ท ๊ฐ |
std | ํ์คํธ์ฐจ |
min | ์ต์๊ฐ |
25%, 50%, 75% | ๊ฐ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ ๋ ์ด๋ฐ์ 25%, ์ค์๊ฐ, 75%๊ฐ์ (ํ๋จ์ ์ด๋ฏธ์ง ์ฐธ์กฐ) |
max | ์ต๋๊ฐ |
๊ด๋์ ๊ธฐ์ดํต๊ณ๋๋ค์ ๋ดค์ ๋ ํ๊ท ๊ฐ๋ค์ 17~22 ์ฌ์ด์ ๊ฐ๋ค์ ๊ฐ์ง๋ค.
ํ์ง๋ง ๋ถ์ฐ์ ์ ๊ฐ๊ฐ์ด๊ณ , ์ต์ ์ต๋๊ฐ๋ค๋ ์ ๊ฐ๊ฐ์ด๋ค.
25%, 50%, 75% ๊ฐ๋ค์ ๊ฐ์ column๋ฅ(psfMag, fiberMag ๋ฑ)๋ผ๋ฆฌ๋ ์ ์ฌํ๋ค.
๐ก Insight
1. ์ ๊ฐ๊ฐ์ธ ๊ฐ๋ค์ ์ ๊ทํ ํด์ฃผ๋ฉด ์ด๋จ์ง ํ ์คํธ ํด๋ณด๋ฉด ์ข์ ๋ฏ ํ๋ค.
2. ๊ฐ์ column๋ฅ๋ค๋ผ๋ฆฌ ๋ฌถ์ด์ ์๊ฐํ๋ฅผ ํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
ํ์ฅ๋ณ ํน์ง์ด ๋ณด์ด์ง ์์๊น?
# type ์ข
๋ฅ๊ฐ ์ด๋ค ๊ฒ์ด ์๋์ง ์์๋ณด๊ธฐ
star_type = train_df['type'].unique()
print(len(star_type), star_type)
train_df['type'].value_counts()
sns.countplot(y='type', data=train_df)
๐ก Insight
1. Class์ ๋ถ๊ท ํ์ด ์กด์ฌํ๋ค.
์ด๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์์์ง ๊ณ ๋ฏผํด๋ด์ผ ํ ๊ฒ ๊ฐ๋ค.
num_col = ['fiberID', 'psfMag_u', 'psfMag_g', 'psfMag_r', 'psfMag_i',
'psfMag_z', 'fiberMag_u', 'fiberMag_g', 'fiberMag_r', 'fiberMag_i',
'fiberMag_z', 'petroMag_u', 'petroMag_g', 'petroMag_r', 'petroMag_i',
'petroMag_z', 'modelMag_u', 'modelMag_g', 'modelMag_r', 'modelMag_i',
'modelMag_z']
fig = plt.figure(figsize=(20, 30))
ax = fig.gca()
train_df[num_col].hist(ax=ax)
plt.show()
x์ถ์ด ๋๋ฌด ๊ทน๋จ์ ์ด์ฌ์ ๊ทธ๋ฐ๊ฑธ๊ฐ?
๊ทธ๋ํ๋ฅผ ํด์ํ๋๋ฐ ์ข ์ด๋ ค์์ด ์๊ธด ๊ฒ ๊ฐ๋ค.
corr = train_df[num_col].corr(method = 'pearson')
fig = plt.figure(figsize = (16, 12))
ax = fig.gca()
sns.set(font_scale = 1.5) # heatmap ์์ font-size ์ค์
heatmap = sns.heatmap(corr.values, annot = True, fmt='.2f', annot_kws={'size':15},
yticklabels = num_col, xticklabels = num_col, ax=ax, cmap = "RdYlBu")
plt.tight_layout() # ์ฌ๋ฐฑ ์กฐ์
plt.show()
๋ณ์๋ค ๊ฐ์ ์๊ด๊ด๊ณ๋ฅผ ์์๋ณด์.
๐ก Insight
1. ์์ ์๊ด๊ด๊ณ๊ฐ ๋์ค๋ ๋ณ์๊ฐ ๋ช๊ฐ์ง ์กด์ฌํ๋ฉฐ,
์๊ด๊ด๊ณ๋ค์ด ๋ฌด๋ฆฌ์ง์ด ๋ํ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๋ค๋ง ๊ตฌ์ฒด์ ์ธ ์์น๋ฅผ ํ์ธํ์ ๋ ์๊ด๊ด๊ณ ์๋ฑํ ๋์ ๊ฒ์ ๋ง์ง ์๋ค.
2. ๋ํ ์ ๊ธฐํ ์ ์ fiberID๊ฐ fiberMag๋ค๊ณผ ์๊ด๊ด๊ณ๊ฐ ๊ฑฐ์ ์๋ค๊ณ ๋ํ๋๋ ๊ฒ์ด๋ค.
for col in train_df.columns[2:]:
plt.figure(figsize=(25,4))
sns.boxplot(x='type',y=col,data=train_df)
plt.title(col)
plt.xticks(rotation=-30)
plt.show()
๊ฐ type๋ณ๋ก ๋ค๋ฅธ ์์นํ ๋ณ์๋ค๊ณผ ์ด๋ค ๊ด๊ณ๊ฐ ์์์ง boxplot์ ๊ทธ๋ ค๋ดค๋ค.
fiberID๊น์ง๋ง ํด๋ ์์๊ฒ ์ ๋์๋ค.
๊ทธ ์ดํ๋ก๋ ์ด์์น๋๋ฌธ์ธ์ง, y์ถ์ ๋ฒ์๋๋ฌธ์ธ์ง.. ์ด์ํ๊ฒ ๋์๋ค.
์์์ ๋ดค๋ ํ์คํ ๊ทธ๋จ์ฒ๋ผ ์ด์ํ๋ค..
๐ก Insight
์ ๋ฐ์ ์ผ๋ก ์ด์์น๊ฐ ๋ง์ง ์์ผ๋ ๊ฐํน๊ฐ๋ค -10000, -20000 ๋ฑ
๊ทน๋จ์ ์ธ ๊ฐ๋ค์ด ๊ฐ๊ฐํ ์กด์ฌํจ์ ์ ์ ์์๋ค.
ํ์ง๋ง boxplot์ ํน์ง์ ๊ธฐ์ดํต๊ณ๋์ ๊น๋ํ๊ฒ ์๊ฐํํด์ ๋ณผ ์ ์๋ค๋ ์ฅ์ ์ด ์๋๋ฐ,
์ด๋ฅผ ๋ณผ ์ ์์ด์ ์์ฝ๋ค.
์ด๋ฐ ๊ฒฝ์ฐ์๋ ์ด๋ป๊ฒ ํด์ผํ๋๊ฑธ๊น...?
๋๋ฌด๋๋ ๋ถ์กฑํ EDA์๋ค.
์๋ฌด๋๋ EDA๋ณด๋ค ๋ชจ๋ธ๋ง์ด ๋ ์ฌ์ด ๊ฒ ๊ฐ๋ค.
'๐ก WIDA > DACON ๋ถ๋ฅ-ํ๊ท' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DACON/๊น๊ฒฝ์] ํ์ด์ฌ์ ์ด์ฉํ EDA (0) | 2023.04.07 |
---|---|
[DACON/๊น์ธ์ฐ] ํ์ด์ฌ์ ์ด์ฉํ EDA (0) | 2023.04.07 |
[DACON/๊น๋ฏผํ] ํ์ด์ฌ์ ์ด์ฉํ EDA (0) | 2023.04.07 |
[DACON/๊น์ธ์ฐ] ๋ถ๋ฅ ๋ชจ๋ธ ๋ฏ์ด๋ณด๊ธฐ, ๋ถ๋ฅ ๋ชจ๋ธ ํ๊ฐ๋ฐฉ์ (0) | 2023.03.31 |
[DACON/๊น๊ฒฝ์] ๋ถ๋ฅ ๋ชจ๋ธ ๋ฏ์ด๋ณด๊ธฐ, ๋ถ๋ฅ ๋ชจ๋ธ ํ๊ฐ๋ฐฉ์ (0) | 2023.03.31 |