1) 결측치 처리

<aside>

user_purchase_data.csv 파일에는 결측치가 포함되어 있습니다. 모든 결측치를 확인하고, 결측치가 있는 행을 제거하세요.

</aside>

# dropna() 함수 사용 - 결측치 제거
df = df.dropna()

# 결측치 개수 확인
df.isnull().sum()

2) 데이터타입 변환

<aside>

purchase_date 컬럼의 데이터 타입을 문자열에서 datetime으로 변환하고, total_spent 컬럼의 데이터 타입을 정수로 변환하세요.

</aside>

# csv 파일 읽어오기
data = pd.read_csv('user_purchase_data.csv')

# purchase_date = datetime 형으로 변환
data['purchase_date'] = pd.to_datetime(data['purchase_date'])

# total_spent = int 형으로 변환
data['total_spent'] = data['total_spent'].astype(int)

# dtypes 조회
data.dtypes

3) 중복 데이터 제거

<aside>

중복된 구매 데이터를 확인하고 제거하세요. 중복의 기준은 user_id, purchase_date, product_id가 동일한 행으로 합니다.

</aside>

# csv 파일 읽어오기
data = pd.read_csv('user_purchase_data.csv')

# 중복행 제거하기
data = data.drop_duplicates(subset=['user_id', 'purchase_date', 'product_id'])

# 중복행 확인하기
data.duplicated(subset=['user_id', 'purchase_date', 'product_id'])

4) 이상치 처리

<aside>

price 컬럼에 이상치가 존재합니다. IQR (Interquartile Range) 방법을 사용하여 이상치를 찾아 제거하세요.

</aside>

# csv 파일 읽어오기
data = pd.read_csv('user_purchase_data.csv')

# 사분위수 구하기
q1 = data['price'].quantile(0.25)
q3 = data['price'].quantile(0.75)

# IQR 값 구하기
iqr = q3 - q1

# 하한 이상치, 상한 이상치
lower_bound = q1 - (1.5 * iqr)
upper_bound = q3 + (1.5 * iqr)

# 이상치 구하기
condition = (data['price'] <= upper_bound) \\
            & (data['price'] >= lower_bound)

# 조건에 맞는 데이터 변수에 담기
data_no_outliers = data[condition]

5) 데이터 정규화

<aside>

total_spent 컬럼을 Min-Max 정규화를 사용하여 0과 1 사이의 값으로 변환하세요.

</aside>