본문 바로가기
Data/[스파르타 내일배움캠프]

[TIL]본캠프 46일차(심화 프로젝트 5일차)

by MIN_JOON 2024. 6. 21.
  • 군집별 특성 분석
#클러스터별 고객수
sns.barplot(data = clustered_data.groupby('cluster',as_index=False).agg(customer_count=('customer_id','nunique')), x = 'cluster' , y = 'customer_count', color = 'gray');

#배송에 걸리는 기간 추가
	clustered_data['purchase_to_delivered'] = clustered_data['order_delivered_timestamp'] - clustered_data['order_purchase_timestamp']

#구매 요일 추가
clustered_data['purchase_weekday'] = clustered_data['order_purchase_timestamp'].dt.day_name()

#구매 시간 추가
clustered_data['purchase_hour'] = clustered_data['order_purchase_timestamp'].dt.hour

#평균 배송 기간 시각화
plt.figure(figsize=(15,10))
day_df = clustered_data.groupby('cluster',as_index=False).agg(mean_purchase_to_delivered=('purchase_to_delivered','mean'))
day_df['mean_purchase_to_delivered'] = day_df['mean_purchase_to_delivered'].dt.days
sns.barplot(data= day_df, x='cluster', y='mean_purchase_to_delivered', color = 'gray');

#구매 요일 추이 시각화
plt.figure(figsize=(15,10))
day_df_2 = clustered_data.groupby(['cluster','purchase_weekday'],as_index=False).agg(day_count=('customer_id','count'))
sns.pointplot(data= day_df_2, x='purchase_weekday', y='day_count', hue='cluster' ,order = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']);

#구매 시간대
day_df_3 = clustered_data.groupby(['cluster','purchase_hour'],as_index=False).agg(hour_count=('customer_id','count'))
plt.figure(figsize=(30,10))
sns.pointplot(data= day_df_3, x='purchase_hour', y='hour_count', hue='cluster');

#일별 총 구매 금액 시각화
plt.figure(figsize=(30,10))
clustered = clustered_data.copy()
#시간 삭제하고 년-월-일만 남기기
clustered['order_purchase_timestamp'] = clustered['order_purchase_timestamp'].astype('str').str.split(' ').str[0]
clustered['order_delivered_timestamp'] = clustered['order_delivered_timestamp'].astype('str').str.split(' ').str[0]
clustered['order_approved_at'] = clustered['order_approved_at'].astype('str').str.split(' ').str[0]
clustered['order_estimated_delivery_date'] = clustered['order_estimated_delivery_date'].astype('str').str.split(' ').str[0]
daily_purchase = clustered.groupby(['cluster','order_purchase_timestamp'],as_index=False)['price'].sum()
daily_purchase['order_purchase_timestamp'] = pd.to_datetime(daily_purchase['order_purchase_timestamp'])
sns.lineplot(x='order_purchase_timestamp',y='price',data=daily_purchase, hue='cluster');
  • 분석 결과
    • 클러스터별 고객 수 : 3번 > 0번 > 1번 > 2번 > 4번
    • 모든 클러스터에서 주문부터 배송까지 일주일 이상 소요됨
    • 모든 클러스터에서 월요일에 주문량이 가장 많으며 주말까지 지속적으로 감소
    • 일반적인 활동 시간대인 10시~22시까지 대부분의 주문이 이루어짐
    • 2017년 11~12월 경에 갑자기 일 매출이 치솟는 구간이 존재: 장난감을 주로 판매하는 기업 특성으로 인해 크리스마스 특수로 해석
      클러스터별 고객수 및 배송까지 걸리는 기간

      시간대 및 요일별 주문건수
    • 2017년 12월 정도에 일 매출이 급격히 증가