-
<TIL> 2024-03-04내일배움캠프(데이터 분석 부트캠프 1기)/TIL & WIL 2024. 3. 4. 23:28
- 오늘 진행한 일
- 팀 프로젝트 데이터 전처리
- 팀 프로젝트 문제 해결
오늘 한 일은 지난 주 목요일에서 이어진다.
https://jinhyunbae.tistory.com/170
events 데이터의 데이터의 정합성을 검증하는 것이 목표인데
확인해야할 것은 여러가지가 있었는데 구체적으로는 아래와 같다.
1. 하나의 세션 안에 두 유저가 있는지 여부
2. 한 유저가 두 도시에서 접속한 경우
3. 유저 ID가 없는 경우(Null)
4. Event가 발생하지 않았는데 구매 이력이 존재하는 경우
5. 30분 이상 지속되는 이상 세션의 존재 여부
* 세션의 정의는 "일정한 기간 내에 웹사이트에서 발생한 사용자 상호작용의 집합" 이다.
최종 목표는 해당 정합성 테스트를 태블로 대시보드를 이용해서 하는 것인데
오늘은 태블로에 제대로 값이 출력되고 있는지를 확인하기 위한 작업을 했다.
이를 위해서 파이썬으로 EDA를 했으며 Event 미발생 구매를 보기 위해
order_items 데이터와 merge하기 위해서 전처리를 진행하였다.
오늘 진행한 EDA는 다음과 같다.
import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt events = pd.read_csv('./data/events.csv')
1. 하나의 세션 안에 두 유저가 있는 지 여부
nunique_user_session = events.groupby('session_id').nunique() nunique_user_session['user_id'].value_counts()
0 500000 1 181759 Name: user_id, dtype: int64
session_id를 기준으로 events의 데이터를 groupby 하는데 집계 함수를 nunique()를 사용하면
해당 세션에 속하는 null값을 제외한 unique값의 개수를 알 수 있다.
집계했을 때
user_id 고윳값 수를 센 결과 0의 고윳값을 가지는 세션이 5만개(user_id에 null값이 있기 때문에)
그리고 1의 고윳값을 가지는 세션이 181759개인 것을 확인할 수 있었다.
2. 한 유저가 두 도시에서 접속한 경우
cond_user_city = (~pd.isna(events['user_id']))&(~pd.isna(events['city'])) events_task2 = events.loc[cond_user_city] nunique_user = events_task2.groupby('user_id').nunique() nunique_user['city'].value_counts()
1 79283 Name: city, dtype: int64
위의 1번과 동일한 방식으로 groupby와 nunique를 이용해서 해당하는 값을 알아내고자 했는데
user_id와 city에 둘 다 null값이 존재하기 때문에 이를 정제하고 개수를 세었다.
그 결과 1개 city에서의 유저 데이터만 79283개로 나타났다. 따라서 두 city에서 접속한
유저는 없는 것을 알 수 있었다.
3. 유저 ID가 없는 경우(Null)
events.isnull().sum()
id 0 user_id 1125671 sequence_number 0 session_id 0 created_at 0 ip_address 0 city 23080 state 0 postal_code 0 browser 0 traffic_source 0 uri 0 event_type 0 dtype: int64
3번은 비교적 간단하게 isnull().sum()을 이용해서 풀 수 있었다.
user_id에 1125671개로 전체 데이터의 절반 정도가 결측치임을 확인할 수 있었다.
내일은 오늘 진행했던 것들을 대시보드에 다시 옮겨서 정합성 대시보드를 슬슬 구축해보고
구축한 내용을 가지고 튜터링을 받아서 보완하는 것이 계획이다.
프로젝트가 착착 진행되니 그래도 기분 좋게 하루를 보낼 수 있었다
내일 하루도 화이팅!
'내일배움캠프(데이터 분석 부트캠프 1기) > TIL & WIL' 카테고리의 다른 글
<TIL> 2024-03-08 (0) 2024.03.08 <TIL> 2024-03-05 (2) 2024.03.05 <WIL> 2024년 2월 마지막 주 회고 (0) 2024.02.29 <TIL> 2024-02-29 (0) 2024.02.29 <TIL> 2024-02-28 (0) 2024.02.28 - 오늘 진행한 일