[ 수업 목표 ]
- 문제 해결을 위해 가설을 세울 수 있다
- 가설을 데이터 기반으로 검증할 수 있다
- 그래프를 그려 인사이트를 쉽게 찾을 수 있다
- 분석한 데이터 결과를 기반으로 의사 결정을 할 수 있다
[ 주제 ]
게임 종합반 구매 전환률을 높여라!
[ 참고 ] 데이터 분석 순서 1. 문제 정의 및 가설 설정하기 2. 데이터 분석 기본 세팅하기 3. 데이터 분석하기 (전처리하기) 4. 분석 결과 시각화하기 5. 최종 결론 내리기 |
[ 이야기 1 ]
목표 : 수강생들이 가장 많이 혹은 가장 적게 듣는 시간과 요일을 데이터 분석으로 찾기
-> 1) 문제 정의 및 가설 설정하기
2) 데이터 분석 기본 세팅하기
- pandas 사용 선언하기
: import pandas as pd
- 데이터 가져오기
: sparta_data = pd.read_table('access_detail.csv', sep=',')
- 데이터 살펴보기
: sparta_data.()
- 분석에 필요한 데이터 가공하기
3) 데이터 분석하기 (데이터 전처리)
- 필요한 데이터 확인하기
: "어떤" 수강생이 "언제" 주로 접속하는지에 대해 알아보아야 하니,
접속 시간과 유저 ID 만 있으면 된다!
- 시간 데이터 전처리
: step 1) access_date의 데이터 종류 확인
# 파이썬의 type() 함수를 쓰면, 데이터의 종류를 확인할 수 있어요
print(type(sparta_data['access_date'][1]))
# sparta_data 정보에서 access_date 열에서 데이터 첫 번째 부분만 확인
step 2)원하는 시간의 데이터 형태로 변경
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() : 괄호 안, 해당 열의 데이터를 날짜와 시간으로 변경해주는 함수
step 3) 요일 추가하기
# [날짜컬럼].dt.day_name 으로 해당 날짜의 요일을 가져올 수 있어요
sparta_data['access_date_time_weekday'] = sparta_data['access_date_time'].dt.day_name()
sparta_data.tail(5)
step 4) 요일별 접속한 수강생 수 구하기
# groupby('컬럼명') 를 사용하면 데이터를 특정 기준으로 그룹화하여 처리할 수 있습니다
# count() 을 하면 해당 데이터의 개수를 세고
# agg("변수") 를 이용하여 ~하면 변수 안 데이터별 합계를 구할 수 있습니다
weeks = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
weekdata = sparta_data.groupby('access_date_time_weekday')['user_id'].count()
weekdata
# 요일 순서대로 정렬
weekdata = weekdata.agg(weeks)
weekdata
step 5) 시간별 접속한 수강생 수 전처리하기
# [날짜컬럼].dt.hour 을 사용하면 해당 날짜의 시간 값을 가져올 수 있어요
sparta_data['access_date_time_hour'] = sparta_data['access_date_time'].dt.hour
hourdata = sparta_data.groupby('access_date_time_hour')['user_id'].count()
# sort_index() 는 해당 데이터를 오름차순으로 정렬해주는 기능을 합니다
# 만약 내림차순 하고 싶다면, sort_index(ascending=False) 으로 설정할 수 있다
hourdata = hourdata.sort_index
hourdata
4) 분석 및 시각화
- matplotlip, numpy 사용 선언하기
: import matplotlib.pyplot as plt
import numpy as np
# nump 는 데이터 연산을 빠르고 쉽게 할 수 있도록 도와주는 라이브러리
- 요일별 수강생 수 바 그래프 그리기
: # 그래프 사이즈
plt.figure(figsize=(10,5))
# 그래프 x축 y축
plt.bar(weekdata.index, weekdata)
# 그래프 명
plt.title('요일별 수강 완료 수강생 수')
# 그래프 x축 레이블
plt.xlabel('요일')
# 그래프 y축 레이블
plt.ylabel('수강생(명)')
# x축 레이블을 90도로 변환
plt.xticks(rotation=90)
# 그래프 출력
plt.show()
- 시간별 접속하는 수강생 수의 라인 그래프 그리기
: # 그래프 사이즈 변경
plt.figure(figsize=(10,5))
# 그래프 x축 y축
plt.bar(hourdata.index, hourdata)
# 그래프 명
plt.title('시간별 수강 완료 사용자 수')
# 그래프 x축 레이블
plt.xlabel('시간')
# 그래프 y축 레이블
plt.ylabel('사용자(명)')
# x축 눈금 표시하기
plt.xticks(np.arange(24)
# 그래프 출력
plt.show()
- 요일별 접속 시간 살펴보기 그리고 히트맵으로 나타내기
: 히트맵(Heatmap) 이란?
X축과 Y축을 특정하게 제한된 변수(예를 들어, 지역 성별 등)로 하고, 균일한 블록으로 나눠 각 칸에 수치형 변수를 채우는 방식
데이터 값이 높거나 그 양이 많은 경우 진한 색을, 낮거나 적은 경우 연한 색을 사용하여 시각적 패턴을 만들어 냅니다
: # 피벗테이블 만들기
# values : 열에 들어가는 부분
# index : 행에 들어가는 부분
# aggfunc : 데이터 축약시 사용할 함수
sparta_data_pivot_table = pd.pivot_table(sparta_data, values='user_id',
index=['access_date_time_weekday']
columns=['access_date_time_hour']
aggfunc="count").agg(weeks)
sparta_data_pivot_table
# 히트맵 그리기
#그래프 사이즈 변경 plt.figure(figsize=(14,5))
#pcolor를 이용하여 heatmap 그리기
plt.pcolor(sparta_data_pivot_table)
#히트맵에서의 x축
plt.xticks(np.arange(0.5, len(sparta_data_pivot_table.columns), 1), sparta_data_pivot_table.columns)
#히트맵에서의 y축 plt.yticks(np.arange(0.5, len(sparta_data_pivot_table.index), 1), sparta_data_pivot_table.index)
#그래프 명 plt.title('요일별 종료 시간 히트맵')
#그래프 x축 레이블
plt.xlabel('시간')
#그래프 y축 레이블
plt.ylabel('요일')
#plt.colorbar() 명령어를 추가하면 그래프 옆에 숫자별 색상값을 나타내는 컬러바를 보여 줍니다
plt.colorbar() plt.show()
5) 결론
- 수강생들의 접속 일자 및 시간을 살펴보면, 일주일 중 "화요일" 그리고 "일요일"에 수강 이 많이 이뤄졌고,
"금요일"과 "수요일"에는 수강하는 인원이 가장 적었습니다.
- 일별 접속 시간의 추이를 살펴보면, 저녁시간쯤인 18시대에 접속이 폭발적으로 많았고, 밤 21시쯤에 감소하는 추세를 보였습니다.
- 요일별, 시간대별로 살펴보니 역시 화요일 18시에 가장 많은 접속자가 있다는 것을 확인할 수 있었습니다.
- 그리하여,
고객 관리 문자는
가장 수강을 많이 한 화요일, 일요일 저녁시간쯤에 독려 문자를,
가장 수강을 적게 한 금요일, 수요일 오전 시간에 동기부여 문자를 보내는 것은 어떨까요?
'내일배움캠프_QAQC 트랙 1기 > 강의 요약' 카테고리의 다른 글
[내일배움캠프] 데이터 분석 파이썬 종합반 3주차 (1) | 2024.12.24 |
---|---|
[내일배움캠프] 데이터 분석 파이썬 종합반 2주차 (1) | 2024.12.23 |
[내일배움캠프] 데이터 분석 파이썬 종합반 1주차 (3) | 2024.12.23 |
[내일배움캠프] 데이터 분석 종합반 2주차 (2) | 2024.12.17 |
[내일배움캠프] 데이터 분석 종합반 1주차 (2) | 2024.12.12 |