일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 그로스해킹
- seaborn
- 결측값
- hackerrank
- airflow.cfg
- solvesql
- pandas
- 프로그래머스
- PostgreSQL
- Limit
- airflow 설치
- SQLite
- join
- 데이터분석
- 전처리
- 머신러닝
- matplotlib
- 데이터시각화
- 파이썬
- TRUNCATE
- 다중 JOIN
- SUM
- GROUPBY
- having
- 데이터리안 웨비나
- not in
- MySQL
- SQL
- Oracle
- Round
- Today
- Total
Milky's note
가상 쇼핑몰 고객 주문데이터 1. 데이터 전처리 본문
가상 쇼핑몰 고객 주문 데이터 전처리
데이터 셋
- 온라인 리테일 사이트의 2010/12 - 2011/12간의 주문 기록 데이터
- 약 500,000건의 데이터
- 데이터 출처: UCI ML Repository
- 데이터 확인
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에 업로드하였다.
'데이터 분석 > 데이터분석 연습' 카테고리의 다른 글
가상 쇼핑몰 고객 주문데이터 3. 고객 이탈률 퍼널 분석 (1) | 2022.05.28 |
---|---|
가상 쇼핑몰 고객 주문데이터 2. 고객 Retention 코호트 분석 (0) | 2022.05.28 |
카페 상권 분석 (2) | 2022.05.26 |
전국 주차장 데이터 (0) | 2022.05.25 |
부동산 데이터 전처리 (0) | 2022.01.11 |