나의 기록
[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)으로 설정
# 전체 코드 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
|