Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

나의 기록

[Python] 02 type(), to_datetime(), dt.day_name(), dt.hour(), sort_index() - 가장 적절한 고객 타이밍 구하기 본문

개발일지/Python

[Python] 02 type(), to_datetime(), dt.day_name(), dt.hour(), sort_index() - 가장 적절한 고객 타이밍 구하기

리베린 2024. 1. 17. 19:46

#스파르타 

 

[미션1] 가장 적절한 고객 관리 타이밍 구하기

 

1. 파일 불러오기 

#파일 불러오기

import
pandas as pd
sparta_data = pd.read_table('/content/access_detail (1).csv',sep=',')

 

 

2. 시간 데이터 전처리 해주기: access_date의 데이터 종류 확인

print(type(sparta_data['access_date'][1]))

- type() 함수: 데이터의 종류 확인 가능 

- access_date열에서 데이터 첫 번째 부분만 확인함. 

 

=> <class 'str'> 라고 나옴. access_date는 날짜 및 시간이 아닌 "문자열"

    우리가 원하는 것은 데이터의 "시간" 형태이므로 전처리를 통해 시간 형태로 바꾸기 

 

3. 문자형 데이터 시간의 데이터 형태로 변경하기 

format = '%Y-%m-%dT%H:%M:%S.%f'
sparta_data['access_date_time'] = pd.to_datetime (sparta_data['access_date'], format = format)
sparta_data.tail(5)
  • to_datetime() => 괄호 안, 해당 열의 데이터를 날짜와 시간 데이터로 변경

https://truman.tistory.com/97  => 파이썬 Pandas의 날짜함수를 잘 정리해놓으셨다. 

 

4. 요일 추가하기

sparta_data['access_date_time_weekday'] = sparta_data['access_date_time'].dt.day_name()
sparta_data.tail(5)

 

*dt.day_name() : 해당 날짜의 요일을 가져올 수 있음. 

 

 

5. 요일 별 접속한 수강생 수 구하기 

weeks = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

weekdata = sparta_data.groupby('access_date_time_weekday')['user_id'].count()
weekdata

=> access_date_time_weekday를 요일별로 groupby해서 user_id 별로 세어 주세요!

 

화요일이 제일 많음

 

6. 시간 별 접속한 수강생 수 전처리 하기 

sparta_data['access_date_time_hour'] = sparta_data['access_date_time'].dt.hour

hourdata = sparta_data.groupby('access_date_time_hour')['user_id'].count()
hourdata = hourdata.sort_index()
hourdata

 

* dt.hour() => 해당 날짜의 시간 값을 가져올 수 있게 함. 

* sort_index() => 해당 데이터를 오름차순(ascending)으로 정렬해 줌.

* 혹시 반대로, 내림차순(descending)을 하고 싶다면? ⇒ sort_index(ascending=False)으로 설정

 

18시에 가장 많이 들음

 

# 전체 코드
import pandas as pd
sparta_data = pd.read_table('/content/access_detail (1).csv',sep=',')

print(type(sparta_data['access_date'][1]))

format='%Y-%m-%dT%H:%M:%S.%f'
sparta_data['access_date_time'] = pd.to_datetime(sparta_data['access_date'], format=format)
sparta_data.tail(5)

#[날짜 컬럼].dt.day_name 으로 해당 날짜의 요일을 가져 올수 있어요!

sparta_data['access_date_time_weekday'] = sparta_data['access_date_time'].dt.day_name()
sparta_data['access_date_time_hour'] = sparta_data['access_date_time'].dt.hour
sparta_data.tail(5)

weeks = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
weekdata = sparta_data.groupby('access_date_time_weekday')['user_id'].count()

weekdata = weekdata.agg(weeks)
#week의 리스트에 따라 데이터들을 다시한번 재배열 할수 있어요!

hourdata = sparta_data.groupby('access_date_time_hour')['user_id'].count()
hourdata = hourdata.sort_index()
hourdata