320x100
EDA Project 프로젝트 기간: 7월 14일 ~ 8월 2일
팀명: 플로우
멘토: 윤00(머신러닝 엔지니어)
팀원: 최00, 박상욱, 홍00, 김00
담당매니저: 김00
개최: NanoDegree
3. 데이터 전처리
- 상품 카테고리명 한국어 번역
from googletrans import Translator
# english to korea
trans = Translator()
result = trans.translate("english.", src='en', dest='ko')
result.text
category_list = order_df['product_category_name_english'].value_counts().index.tolist()
print(category_list)
category_list2 = []
for i in range(len(category_list)):
re = category_list[i].replace('_', ' ')
category_list2.append(re)
print(category_list2)
category_list_kor=[]
for w in category_list2:
trans = Translator()
result = trans.translate(w , src='en', dest='ko')
category_list_kor.append(result.text)
print(category_list_kor)
category = pd.DataFrame({'product_category_name_english':category_list,'category_name_kor':category_list_kor})
# category 와 order_df와 병합해준다.
order_df = order_df.merge(category, how='left', on='product_category_name_english')
- 문자형 날짜 컬럼을 날짜데이터 타입으로 변경
object 타입으로 되어 있는 날짜 컬럼인 'order_purchase_timestamp' 와 'order_delivered_customer_date'를 date 타입으로 바꾼다.
order_df['order_purchase_timestamp']= pd.to_datetime(order_df['order_purchase_timestamp'])
order_df['order_delivered_customer_date'] = pd.to_datetime(order_df['order_delivered_customer_date'])
-분석에 필요한 데이터만 필터링
필요한 컬럼 선정한다.
cols =['order_id' ,'order_item_id','product_id', 'price', 'freight_value', 'payment_value','payment_installments','order_status',
'order_purchase_timestamp', 'order_delivered_customer_date', 'product_category_name_english',
'customer_id','customer_unique_id', 'customer_zip_code_prefix', 'lat', 'lng', 'city', 'state','category_name_kor']
order_df = order_df[cols]
- 컬럼명 수정
'order_item_id'(한 주문에 몇개를 주문했는지에 관한 정보) -> 주문수량을 의미하는 'QTY'(Quantity) 로 변경한다.
'price' (상품가격) -> 'product_price' 로 변경한다.
order_df = order_df.rename(columns = {'order_item_id': 'QTY', 'price': 'product_price','freight_value':'delivery_price',
'payment_value':'total_price','order_purchase_timestamp':'order_purchase_time' ,
'customer_zip_code_prefix':'zip_code'})
- 데이터 필터링
배송이 완료 된 데이터만 추출한다.
order_df['order_status'].value_counts()
order_df = order_df[order_df['order_status']=='delivered']
총 71개 중 상위 20개 상품 카테고리만 추출한다.
전체 주문 건수 중 87.1%차지한다. (80:20법칙, 파레토 법칙)
order_df.shape
(115038, 19)
sum(order_df['product_category_name_english'].value_counts()[:20])
(100252/order_df.shape[0])*100 #87.14685582155461
top_20=order_df['product_category_name_english'].value_counts()[:20].index.tolist()
# 상위 20개 상품 카테고리 데이터를 df에 담아서 분석 진행(100,252개)
df = order_df.loc[order_df['product_category_name_english'].isin(top_20)]
- 결측치 처리
결측값이 전체 데이터에 영향을 끼치지 않을 정도의 데이터이므로 삭제를 하기로 결정했다.
df.isnull().sum()
df = df.dropna()
- 중복값제거
drop_duplicates로 전체 행의 모든값이 같은것을 제거한다.
print(df.shape)
df = df.drop_duplicates()
df.shape
320x100
320x100
'빅데이터 관련 자료 > [Project ]Brazil E-commerce' 카테고리의 다른 글
EDA Project - 데이터 시각화(태블로 결과물) (0) | 2021.07.29 |
---|---|
EDA Project - 데이터 분석 (0) | 2021.07.27 |