본문 바로가기

Pandas/실전

판다스 - 가상 쇼핑몰 고객 주문 데이터 : 전처리, Data cleansing, 메모리 효율화

반응형

데이터 출처

 

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

 

온라인 리테일 사이트의 2010년 12월부터 2011년 12월까지의 데이터

 

약 500,000건

 

 

 

 

데이터 불러오기

 

 

 

 

컬럼 확인

 

 

 

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

 

 

 

 

 

데이터 살펴보기

 

 

 

고객ID에 누락값이 있는 것을 확인했다.

 

 

 

 

 

 

기술통계 확인

 

 

 

상품의 주문 수량과 가격의 최솟값이 음수가 나와있다.

 

이는 이상한 값으로 제거해주는 편이 좋아보인다.

 

 

 

 

 

 

 

컬럼별 누락값 개수 확인

 

 

고객 ID 컬럼에 매우 많은 누락값이 있다.

 

이 행들은 제거해주는 편이 좋다.

 

 

 

 

 

 

 

Data Cleansing

- 고객ID 컬럼의 누락행 제거

 

- Quantity, UnitPrice 컬럼의 음수 행 제거

 

 

 

제거가 잘 되었는지 확인하자.

 

 

모든 컬럼에서 누락값이 없는 것을 확인했다.

 

 

 

 

 

 

메모리 효율화

 

 

CustomerID 컬럼의 값은 연산을 할 것도 아니기에

 

굳이 많은 메모리를 차지하는 float64 일필요가 없다.

 

 

 

 

 

 

데이터 타입변경 1 - int32

 

 

astype을 이용해 사용자가 직접 int32로 바꿔준다.

 

int64는 int32보다 더 많은 범위의 정수를 표현할 수 있으나

 

메모리 공간을 두배나 차지한다.

 

기존 메모리 사용량에 비해 1.5 감소했다.

 

 

 

 

 

데이터 타입변경 2 - category

 

 

고객ID는 숫자이긴 하지만

 

그 자체로만 의미가 있기 때문에 카테고리 자료형으로 바꿔줘도 된다.

 

변경1의 int32보다 0.6정도 메모리를 더 아낄 수 있다.

 

 

 

 

 

 

데이터 타입변경 3 - downcast

 

 

pd.to_numeric을 이용해서 CustomerID컬럼과 downcast에 'integer'를 입력한다.

 

그러면 알아서 최대한 메모리를 효율화할 수 있게 바뀌며

 

위 사례로는 int16으로 변경됐다.

 

 

저장하는 정수의 예상 범위가 크지 않다면 다운캐스트 하는 것이 좋다.

 

int32에 비해 더 적은 범위의 정수를 표현하나, 메모리 공간을 절약할 수 있다.

 

타입변경의 총 3가지 방법 중 메모리를 제일 많이 절약하는 방법이다.

 

 

기존 27.3
int32 25.8
category 25.2
int16 25.0

 

 

 

 

 

https://steadiness-193.tistory.com/18

 

판다스 - 자료형 변환 : astype, pd.to_numeric

데이터 불러오기 문제가 있는 열은 total_bill로서, [1, 3, 5, 7]행은 missing이라는 문자열이 들어가 있다. 데이터 타입을 확인해도 숫자가 아닌 object형으로 되어있다. [목적 : total_bill 컬럼을 float형으..

steadiness-193.tistory.com

자료형 변경에 대한 보충 내용은 위 포스팅 참조

 

 

 

 

 

 

 

메모리 효율화 함수 정의

 

float64 컬럼용
int64 컬럼용

 

 

 

 

 

 

고객의 총 지출 비용 컬럼 추가

 

총 지출 비용(CheckoutPrice) = Quantity * UnitPrice

 

 

 

 

 

 

최종 메모리 효율화

 

 

 

 

 

정제 완료 데이터 저장

 

 

 

 

반응형