개발학습일지

[AI] 머신러닝 import dataset, NaN 처리(dropna(), fillna()), X, y 데이터 분리 본문

AI/Machine Learning

[AI] 머신러닝 import dataset, NaN 처리(dropna(), fillna()), X, y 데이터 분리

처카푸 2024. 4. 12. 14:14

필요한 라이브러리 임폴트!

# Data Preprocessing Template

# Importing the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

 

머신러닝을 하기위해 필요한 데이터를 불러와야 한다

- pd.read_csv(' ')

df = pd.read_csv('../data/Data.csv')
df

 

문자열로 되어 있는 컬럼 데이터 확인하기

df['Country'].nunique()
# 3
sorted(df['Country'].unique()) # 알파벳 순으로 정렬하기 위한 sorted()
# ['France', 'Germany', 'Spain']
df['Purchased'].nunique()
# 2
sorted(df['Purchased'].unique())
# ['No', 'Yes']

 

 

 

데이터의 NaN 처리하기

- 데이터에 NaN이 몇개인지 확인하기

df.isna().sum()
>>>
    Country      0
    Age          1
    Salary       1
    Purchased    0
    dtype: int64

- 1. 삭제하는 방법

df.dropna()
>>>
        Country	Age	Salary	Purchased
    0	France	44.0	72000.0	No
    1	Spain	27.0	48000.0	Yes
    2	Germany	30.0	54000.0	No
    3	Spain	38.0	61000.0	No
    5	France	35.0	58000.0	Yes
    7	France	48.0	79000.0	Yes
    8	Germany	50.0	83000.0	No
    9	France	37.0	67000.0	Yes

- 2. 채우는 방법 _데이터프레임의 숫자(numeric_only=True)만 평균(mean())으로 계산하여 채웠다

df.fillna(df.mean(numeric_only=True))
>>>
        Country	Age	Salary	Purchased
    0	France	44.000000	72000.000000	No
    1	Spain	27.000000	48000.000000	Yes
    2	Germany	30.000000	54000.000000	No
    3	Spain	38.000000	61000.000000	No
    4	Germany	40.000000	63777.777778	Yes
    5	France	35.000000	58000.000000	Yes
    6	Spain	38.777778	52000.000000	No
    7	France	48.000000	79000.000000	Yes
    8	Germany	50.000000	83000.000000	No
    9	France	37.000000	67000.000000	Yes

 

X, y 데이터 분리 : 학습할 변수와 레이블링 변수로 분리한다

NaN이 삭제된 df

 

NaN이 삭제된 df 

 

y 내가 예측해야하는 것 1차원 시리즈(백터)는 소문자로 작성
 X 는 항상 2차원 데이터 행렬은 대문자로 작성

y = df['Purchased']  # 얻고 싶은 답
X = df.loc[ : , 'Country':'Salary' ]  # 답을 주는 데이터