첨부파일 : week7_2_김효은.html
0. 데이터 불러오기
1 2 3 4 5 6 7 8 | import pandas as pd from tqdm import tqdm, tqdm_notebook from datetime import datetime, timedelta import matplotlib.pyplot as plt df = pd.read_csv('study_room_HMS.csv') del df['Unnamed: 0'] | cs |
1. 이용자 dict 구하기
1 2 3 4 5 6 7 8 9 10 11 12 | len_user = len(user_dict) user_dict = {} cnt = 0 for hashed in tqdm(df['hashed']): for user in hashed.split(','): if user in user_dict: continue user_dict[user] = cnt cnt += 1 | cs |
2. 이용횟수 구하기
1 2 3 4 5 | freq = [0] * len(user_dict) for hashed in tqdm(df['hashed']): for user in hashed.split(','): freq[user_dict[user]] += 1 |
3. 총 이용일수, 평균 이용일 수 구하기
4. 평균 함께 사용한 인원 구하기
5. 총이용시간, 평균이용시간 구하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 문자를 datetime으로 만들기 # ms 단위는 제외하였다 study_start_time2 = df.study_start_time.apply(lambda x:datetime.strptime(x[:-4], "%H:%M:%S")) study_end_time2 = df.study_end_time.apply(lambda x:datetime.strptime(x[:-4], "%H:%M:%S")) # df에서 행 별로 대여시간 구하기 study_day_list = [0]*df.shape[0] for index, study_day in tqdm(enumerate(df.study_day)): # 하루만 이용한 경우 study_end_time - study_start_time으로 이용시간 계산 if study_day == 1: study_day_list[index] = study_end_time2[index] - study_start_time2[index] # 이틀이상 이용한 경우 이용일자를 고려하여 이용시간 계산 else: study_day_list[index] = study_end_time2[index] + timedelta(days=(study_day-1)) - study_start_time2[index] # df에 새로운 feature로 추가 df['study_time'] = study_day_list # 잘 계산되었는지 확인해보자 df.head() | cs |
1 2 | # 이용일자가 이틀 이상인 경우도 잘 계산되었다. df.loc[[1491, 1519]] | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # user_id 별 총이용시간 구하기 study_time = [timedelta(0)] * len_user for idx, hashed in tqdm(enumerate(df['hashed'])): # 행마다 study_time 저장 time = df.study_time[idx] # 그 행에 속한 hashed 각각 study_time 누적 for user in hashed.split(','): study_time[user_dict[user]] += time # 평균 이용 시간 = 총 이용시간 / 총 이용횟수 average_study_time = [0] * len_user for i in range(len_user): average_study_time[i] = study_time[i]/freq[i] | cs |
6. 마지막 결과
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # 각 사람별로 파생변수 만든 것을 pd.DataFrame으로 만들기 user_list = list(user_dict.keys()) df2 = pd.DataFrame({ 'user_id':user_list, 'total_use_freq':freq, 'total_use_days':use_days, 'average_use_days':average_use_days, 'average_with_people':average_with_people, 'total_study_time':study_time, 'average_study_time':average_study_time }) df2.head(30) | cs |
Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5