728x90
이전 내용은 아래 글에서 확인 하실 수 있습니다.
[Data Analysis/기타 데이터] - [기타 데이터] Commerce 데이터 분석 1 (데이터 확인 / 질문하기)
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
'Data Analysis > 기타 데이터' 카테고리의 다른 글
[기타 데이터] Airbnb NewYork 데이터 분석 1 (데이터 확인 / 질문) (0) | 2021.10.20 |
---|---|
[기타 데이터] Commerce 데이터 분석 3 (EDA / 시각화 / 리뷰) (0) | 2021.10.13 |
[기타 데이터] Commerce 데이터 분석 1 (데이터 확인 / 질문하기) (0) | 2021.10.12 |
[기타 데이터] LA Lakers 경기 데이터 분석 3 (EDA / 시각화 / 리뷰) (0) | 2021.10.12 |
[기타 데이터] LA Lakers 경기 데이터 분석 2 (데이터 전처리) (0) | 2021.10.08 |