🌿 Data Engineering/Data Analysis

[Pandas] 가상 쇼핑몰 고객주문 데이터 전처리1 - null처리 및 타입변경

카프리썬_ 2021. 8. 24. 11:17
728x90
728x90

프로젝트(?)를 하면서 pandas를 계속 썼지만, 쓰던 함수만 쓰고 계속 검색하다보니 그렇게까지 익숙한 편은 아니였다.

그래서 개인적으로 다양한 데이터를 가지고 pandas를 더 공부해보고자 시작하는 글~!


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

https://archive.ics.uci.edu/ml/datasets/Online+Retail

온라인 리테일 사이트의 2010년 12월부터 2011년 12월까지의 데이터 -> 약 500,000건 (꽤 많아보인다!)

 

1. 데이터불러오기 및 확인

컬럼명파악

컬럼명 설명
invoiceNo 주문 번호
StockCode 아이템 아이디
Description 상품 정보
Quantity 상품 주문 수량
InvoiceDate 주문 일자, 시간
UnitPrice 상품 가격
CustomerID 고객 아이디
Country 고객 거주 지역 (국가)

 

2. 누락값 확인 및 처리

customerid의 개수가 다른컬럼이랑 다르고, quanity와 unitprice의 min값이 이상하다. 음수값이 있나보다! 

그래서 null이 몇개 있나 확인해보면 아래와 같고, 이 행들을 제거해주는 작업이 필요하다. 

 

3. 메모리효율화 (타입변경)

메모리를 쓸데없이 많이 차지하고 있는데, 그 이유는 타입때문이다. 

예를 들어 연산도 필요없는 customerid가 많은 메모리를 차지하는 float64타입 -> int32로 변경해서 메모리공간 줄임

아니면 아예 그 자체만으로도 의미잇는 타입이니까 category 타입으로 변경할 수도 있다. 그럼 메모리공간 더 절약

아니면 downcast를 하는 방법이 있다.

그럼 알아서 최대한 메모리효율화를 할 수 있도록 자동으로 바뀌게 되며, 현재는 int16으로 바뀌었다.

그래서 int32보다 더 적은 범위의 정수를 표현할 수 있게 되고 메모리공간도 절약할 수 있다. 

같은방식으로, object 타입이 아닌 quanity와 unitprice 컬럼의 타입도 변경한다. 

 

4. date 타입변경

infer_datetime_format : 자동으로 datetime이 어떤 형식인지 확인하고, 변환한다. 

 

5. 컬럼추가 (총 지출액)

이제 타입변경된  quanity와 unitprice 컬럼을 가지고 총 지출액 컬럼을 생성한다.

 

728x90
반응형