Milky's note

가상 쇼핑몰 고객 주문데이터 1. 데이터 전처리 본문

데이터 분석/데이터분석 연습

가상 쇼핑몰 고객 주문데이터 1. 데이터 전처리

밀뿌 2022. 5. 28. 00:19

가상 쇼핑몰 고객 주문 데이터 전처리

데이터 셋

  • 온라인 리테일 사이트의 2010/12 - 2011/12간의 주문 기록 데이터
  • 약 500,000건의 데이터
  • 데이터 출처: UCI ML Repository
 

UCI Machine Learning Repository: Online Retail Data Set

Online Retail Data Set Download: Data Folder, Data Set Description Abstract: This is a transnational data set which contains all the transactions occurring between 01/12/2010 and 09/12/2011 for a UK-based and registered non-store online retail. Data Set Ch

archive.ics.uci.edu

 

  • 데이터 확인
retail.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 541909 entries, 0 to 541908
Data columns (total 8 columns):
 #   Column       Non-Null Count   Dtype  
---  ------       --------------   -----  
 0   InvoiceNo    541909 non-null  object 
 1   StockCode    541909 non-null  object 
 2   Description  540455 non-null  object 
 3   Quantity     541909 non-null  int64  
 4   InvoiceDate  541909 non-null  object 
 5   UnitPrice    541909 non-null  float64
 6   CustomerID   406829 non-null  float64
 7   Country      541909 non-null  object 
dtypes: float64(2), int64(1), object(5)
memory usage: 33.1+ MB

 

  • null인 데이터 처리
    Description는 null이어도 상관이 없으므로 CustomerID만 제거
retail1=retail['CustomerID'].dropna()
len(retail1)
406829

 

  • 수량이 음수인 데이터들은 제거
  • 가격이 0원보다 작은 데이터 제거
retail=retail[retail['Quantity']>0]
retail=retail[retail['UnitPrice']>0]
len(retail)
397884

 

  • 전처리한 데이터 확인 
retail.info()

<class 'pandas.core.frame.DataFrame'>
Int64Index: 397884 entries, 0 to 541908
Data columns (total 8 columns):
 #   Column       Non-Null Count   Dtype  
---  ------       --------------   -----  
 0   InvoiceNo    397884 non-null  object 
 1   StockCode    397884 non-null  object 
 2   Description  397884 non-null  object 
 3   Quantity     397884 non-null  int64  
 4   InvoiceDate  397884 non-null  object 
 5   UnitPrice    397884 non-null  float64
 6   CustomerID   397884 non-null  float64
 7   Country      397884 non-null  object 
dtypes: float64(2), int64(1), object(5)
memory usage: 27.3+ MB

 

새로운 컬럼 추가

  • Quantity * UnitPrice는 고객의 총 지출 비용(CheckoutPrice)
retail['CheckoutPrice']= retail['Quantity'] * retail['UnitPrice']
retail.head()

 

  • 정제한 데이터 저장
retail.to_csv('/content/drive/MyDrive/빅데이터 분석 첫걸음 시작하기_ver.2021/5) 실전 프로젝트/CH18. 쇼핑몰 주문 데이터를 활용한 데이터분석 Project/Data/OnlineRetailClean.csv')

 

코호트 분석과 퍼널 분석은 위에 정제한 데이터를 사용해서 할 것이므로 해당 데이터를 새로운 파일로 저장한다.

 

쉬운 전처리였다.

하지만 이커머스쪽 도메인이 조금 부족하다면 수량과 가격이 음수인 데이터들을 정제하는 법을 넘어갔을 것 같다.

비즈니스 로직이 맞는 지 확인하는 연습을 해야겠다.

 

자세한 소스는 git에 업로드하였다.

 

GitHub - busyppp/Study

Contribute to busyppp/Study development by creating an account on GitHub.

github.com

 

Comments