본문 바로가기

Data Analysis/기타 데이터

[기타 데이터] Commerce 데이터 분석 2 (데이터 전처리)

728x90

이전 내용은 아래 글에서 확인 하실 수 있습니다.

[Data Analysis/기타 데이터] - [기타 데이터] Commerce 데이터 분석 1 (데이터 확인 / 질문하기)

 

[기타 데이터] Commerce 데이터 분석 1 (데이터 확인 / 질문하기)

Commerce 데이터 분석 데이터 출처 : https://archive.ics.uci.edu/ml/datasets/online+retail# UCI Machine Learning Repository: Online Retail Data Set Online Retail Data Set Download: Data Folder, Data..

sks8410.tistory.com

3. 데이터 전처리

3-1 컬럼명을 대문자 -> 소문자로 변경

online.columns = online.columns.str.lower() # 대문자 -> 소문자 변경

online.columns

3-2 결측치 처리

- customerid가 nan 인 컬럼은 고객이 제대로 주문을 한 것인지 확인을 할 수 없으므로 결측치를 모두 삭제 후 분석하도록 하겠습니다.

- description 컬럼은 결측치가 전체 데이터에 비해 매우 작기 때문에(0.26%) 결측치 삭제 후 분석하도록 하겠습니다.

 

online_1 = online.dropna() # 결측치 삭제

online_1.isnull().sum()

 

print(online_1.shape) # 결측치 삭제 후 데이터 수 확인
online_1.head()

4335272 -> 406829 로 데이터 수가 줄어든 것을 확인할 수 있습니다.

3-3 customerid 컬럼 타입 변경

- customerid 컬럼의 데이터 값이 .0 으로 나타나기 때문에 .0을 삭제하도록 하겠습니다.

 

online_1["customerid"] = online_1["customerid"].astype("int64") # customerid 컬럼 타입 변경

online_1.head()

3-4 새로운 컬럼 만들기

# quantity / unitprice 컬럼에 음수 값이 있는지 확인

print(min(online_1["quantity"]), max(online_1["quantity"]))
print(min(online_1["unitprice"]), max(online_1["unitprice"]))

판매수량이 음수인 것은 왜 음수인지 자세한 내용을 알 수 없으므로 양수인 데이터만 사용하도록 하겠습니다.

 

online_1 = online_1[online_1["quantity"] > 0] # quantity 가 0 인 데이터만 사용

print(online_1.shape)
online_1.head()

 

 

# 제품별 구매 금액 컬럼 생성

online_1["spent"] = online_1["quantity"] * online_1["unitprice"]

print(online_1.shape)
online_1.head()

 

 

# 원 / 월 / 일 별 컬럼 생성

online_1["year"] = online_1["invoicedate"].dt.year
online_1["month"] = online_1["invoicedate"].dt.month
online_1["day"] = online_1["invoicedate"].dt.day
online_1["weekday"] = online_1["invoicedate"].dt.weekday
online_1["hour"] = online_1["invoicedate"].dt.hour

print(online_1.shape)
online_1.head()

 

728x90