close_btn
조회 수 837 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print Files
?

단축키

Prev이전 문서

Next다음 문서

+ - Up Down Comment Print Files

첨부파일 : 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

cs




3. 총 이용일수, 평균 이용일 수 구하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 이용일수 구하기
 
df['study_day'= df['study_end_day'- df['study_start_day'+ 1
use_days = [0* len_user
 
# hashed를 index와 같이 받은 후
# 이 index를 df.study_day에 접근하는 데 사용
for idx, hashed in tqdm(enumerate(df['hashed'])):
    for user in hashed.split(','):
        use_days[user_dict[user]] += df.study_day[idx]
 
# 한 번 당 평균 이용일수 (= 이용일수/이용횟수)
 
average_use_days = [0]*len_user
 
for i in range(len_user):
    average_use_days[i] = use_days[i] / freq[i]

cs




4. 평균 함께 사용한 인원 구하기

1
2
3
4
5
6
7
8
9
10
11
12
# 평균적으로 함께 사용한 인원
 
with_people = [0]*len_user
average_with_people = [0]*len_user
 
for idx, hashed in tqdm(enumerate(df['hashed'])):
    people = len(hashed.split(','))
    for user in hashed.split(','):
        with_people[user_dict[user]] += people
        
for i in range(len_user):
    average_with_people[i] = with_people[i] / freq[i]

cs




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.JPG










1
2
# 이용일자가 이틀 이상인 경우도 잘 계산되었다.
df.loc[[1491, 1519]]
cs


2.JPG


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


3.JPG



List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 우수 코드 게시판 이용 관련 공지사항 DataMarket 2014.05.21 43164
187 투빅스 11기&12기 9주차 CNN심화(1) - 12기 김주호 file 김주호 2019.09.25 1226
186 투빅스 11기&12기 9주차 CNN심화(2) - 12기 김태한 file 12기김태한 2019.09.25 880
185 투빅스 11기&12기 8주차 CNN심화(3) - 12기 배유나 file 배유나 2019.09.24 981
184 투빅스 11기&12기 8주차 CNN심화(4) - 12기 배유나 file 배유나 2019.09.24 977
183 투빅스 11기&12기 8주차 CNN - 12기 박재민 jaemin0095 2019.09.23 913
182 투빅스 11기&12기 8주차 NLP기초 - 12기 박진혁 file 박진혁 2019.09.21 947
181 투빅스 11기&12기 8주차 NLP - 12기 김주호 file 김주호 2019.09.20 857
180 투빅스 11기&12기 7주차 알고리즘(1) - 12기 김탁영 file 2019.09.19 889
» 투빅스 11기&12기 7주차 알고리즘(2) - 김효은 file 김효은 2019.09.17 837
178 투빅스 11기&12기 7주차 프레임워크(PyTorch) - 12기 신윤종 file yj 2019.09.16 890
177 투빅스 11기&12기 6주차 크롤링 - 이유진 yooj_lee 2019.09.04 874
176 투빅스 11기&12기 6주차 크롤링 - 12기 신윤종 file yj 2019.08.31 811
175 투빅스 11기&12기 6주차 크롤링 - 12기 김주호 file 김주호 2019.08.31 861
174 투빅스 11기&12기 5주차 알고리즘 - 12기 김탁영 2019.08.29 856
173 투빅스 11기&12기 5주차 SVM - 12기 이홍정 올타임넘버원메시 2019.08.27 896
172 투빅스 11기&12기 5주차 PCA - 12기 김태한 file 12기김태한 2019.08.27 927
171 투빅스 11기&12기 4주차 Ensemble - 12기 배유나 배유나 2019.08.26 892
170 투빅스 11기&12기 5주차 Class - 12기 이세윤 세윤 2019.08.26 825
169 투빅스 11기&12기 3주차 Naive bayes - 12기 김태한 12기김태한 2019.08.19 849
168 투빅스 11기&12기 4주차 Clustering - 12기 신윤종 file yj 2019.08.17 867
Board Pagination ‹ Prev 1 2 3 4 5 6 7 8 9 ... 10 Next ›
/ 10

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소

Designed by sketchbooks.co.kr / sketchbook5 board skin

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5

Sketchbook5, 스케치북5