세조목

TIL(Today I Learned)60일차(24.02.07) 본문

데이터 분석 공부/TIL(Today I Learned)

TIL(Today I Learned)60일차(24.02.07)

세조목 2024. 2. 7. 22:07

Python

2024.02.07 - [데이터 분석 공부/Python] - Python 정리(데이터 카운팅)(24.02.07)

 

Python 정리(데이터 카운팅)(24.02.07)

위와 같은 시리즈 a가 있다. 1. 테이블명.count() count는 데이터의 전체 개수를 세아리는 함수다. 시리즈 a에 속해있는 전체 데이터의 개수는 4개이므로 숫자 4가 출력된다. 데이터프레임의 경우 아

eyeoftheworld1209.tistory.com

 

심화 프로젝트

https://www.notion.so/1-b5ad1ed6f85341709e3de365f816de0c

어제부터 심화 프로젝트가 시작됐습니다.

금일은 팀원들과 함께 데이터셋에대한 이야기, 측정기준에 대한 이야기를 간략하게 나누고

내일 있을 튜터링때 질문드릴 내용들을 공유했습니다.

 

저희가 사용하는 'train' dataset의 경우 json 형태의 속성값들이 다수 존재하여

json 형태를 각각의 컬럼으로 나누는 작업이 필요했습니다.

def load_df(csv_path, nrows=None):
    JSON_COLUMNS = ['device', 'geoNetwork', 'totals', 'trafficSource']
    
    df = pd.read_csv(csv_path, 
                     converters={column: json.loads for column in JSON_COLUMNS}, 
                     dtype={'fullVisitorId': 'str'}, # Important!!
                     nrows=nrows)
    
    for column in JSON_COLUMNS:
        column_as_df = pd.json_normalize(df[column])
        column_as_df.columns = [f"{column}.{subcolumn}" for subcolumn in column_as_df.columns]
        df = df.drop(column, axis=1).merge(column_as_df, right_index=True, left_index=True)
    print(f"Loaded {os.path.basename(csv_path)}. Shape: {df.shape}")
    return df

위 코드를 활용하여 작업을 진행하였는데

그렇게 컬럼을 나누니 아래 이미지에서 확인할 수 있는것처럼 컬럼의 수가 굉장히 많아졌습니다.

그래서 일단 각 컬럼별 개념을 정의해보고,

각 컬럼을 가지고서 어떤 분석을 해볼 수 있을지에 대해 고민해봤습니다.

1. DAU, WAU, MAU(Line 차트)			
2. 유저별 평균접속시간 분포(ECDF)			
3. 방문 주차에따른 코호트				
4. 코호트별 weekly 리텐션(히트맵)			
5. 요일/시간대별 사용자 수(히트맵)			\

저희는 기본적으로 위 다섯가지를 측정하는 것으로 방향을 잡았는데

조금 더 세부적인 계획은 내일 있을 회의에서 정할 예정입니다.