Dende
[Data Scientist] 개인 EDA 프로젝트 (2) 본문
1. 시간대별 매출데이터 탐색
현재 레코드는 업장들의 은행 입출금 데이터도 하나의 거래건수로 포함되어 있어 비정상적으로 높거나, 음수 값을 가진 데이터가 존재.
=> 결제금액이 200,000 이상이거나, 음수 값일 경우 Outlier로 판단하여 제거
outlier = (df['amount'] < 0) | (df['amount'] > 200000)
df.drop(df[outlier].index, inplace=True)

■ 시간대별 매출 및 거래건수 정보




▶ EDA를 통해 도출된 인사이트
· 야간 시간대(22시~05시)가 그 이외의 시간(06~21시)보다 평균적으로 높은 건당 매출액 기록
· 세 항목 모두 가장 가파른 변화추세를 보이는 시간대는 06시~07시
· 거래건수와 매출총액은 양의 상관관계를 가지고 있으며, 거래건수 및 매출총액(그룹1)과 건별 매출액(그룹2)은
기본적으로 음의 상관관계를 가지지만, 16시부터 21시까지는 양의 상관관계를 보여줌


2. 나이별 데이터 탐색
■ 나이 그룹별 데이터 탐색
- 현재 '나이' 컬럼의 최소값은 6세, 최대값은 121세
- 국내 5대 편의점사의 고객층분류는 공통적으로, [아동, 10대, 20대, 30대, 40대, 50대, 60대] 등으로 7개 구분
- 아동의 범위에 속하는 레코드의 개수가 5개로 통계화 하기 어려운 표본수이므로 Outlier로 판단하여 제거
- 상한선은 IQR 사분위 방법을 통한 데이터 필터 적용


q1 = df['age'].quantile(0.25)
q3 = df['age'].quantile(0.75)
iqr = q3 - q1
upper_age = (df['age'] > q3 + 1.5 * iqr)
lower_age = (df['age'] < 10)
age_outlier = upper_age | lower_age
df.drop(df[age_outlier].index, inplace=True)
총 65,232개의 이상점 제거 => 5,534,474개의 레코드를 토대로 탐색 재시작
① 나이별 매출액


· 가장 많은 매출이 발생한 나이대는 40대
(가장 낮은 매출이 발생한 10대의 220배 수준)
· 30대에서 60대 이상 그룹들의 건당 매출액은 7,800원~8,200원
에 속하며 대동소이한 수치를 보여줬으나, 20대와 10대 사이에는
큰 차이가 나타남.
② 나이별 방문시간대 탐색


· 전체적으로 저녁(18~21시) 시간대의 방문 건수가 가장 많았으며, 그 다음으로 점심(11시~14시)가 따르는 모습.
· 20대 통계에서는 다른 나이 그룹과 달리 2순위가 야식(22~05시)으로 점심(11~14시)보다 많은 것으로 나타남.
· 10대 통계에서는 다른 나이 그룹과 달리 간식(22~05시)시간대 방문율이 높은 것으로 나타남.
3. 고객특성별 데이터 탐색
- 고객 개개인별 특징을 파악하기 위해 고객번호(person_id)를 그룹조건으로 설정
group_person_id = df.groupby('person_id', as_index=True)
511,064명의 고객데이터 추출 완료
- 고객번호를 토대로 고객 상세 정보를 추출, 그룹별 정보를 토대로 방문 편의점 종류, 건별 결제액 등 파생 데이터 추출
=> 새로운 고객별 정보 데이터프레임(person_group_df) 생성

다음화에 계속.
'Data Scientist' 카테고리의 다른 글
| [Data Scientist] 개인 EDA 프로젝트 (3) (0) | 2022.10.04 |
|---|---|
| [Data Scientist] 개인 EDA 프로젝트 (1) (1) | 2022.10.04 |
| [Data Scientist] 데이터 다운로드 받기 (0) | 2022.09.23 |
| [Data Scientist] 특정 인덱스만 받아오기 (0) | 2022.09.23 |
| [Data Scientist] 데이터클리닝 (0) | 2022.09.22 |