나의 기록
[Python] 03 가장 적절한 고객 관리 타이밍은?_ 분석 및 시각화(바그래프, 라인 그래프, 히트맵 만들기 본문
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
|
이전 것 이어서 분석 및 시각화 하기
1. matplotlib, numpy 사용 선언하기
import matplotlib.pyplot as plt
import numpy as np
|
=> 넘파이는 데이터 연산을 빠르고 쉽게 할 수 있게 도와주는 라이브러리
2. 요일별 수강생 수 바 그래프 그리기
#그래프 사이즈
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()
|
2. 시간 별 접속 하는 수강생 수의 라인 그래프 그리기
#그래프 사이즈 변경
plt.figure(figsize=(10,5))
#그래프 x축 y축
plt.plot(hourdata.index, hourdata)
#그래프 명
plt.title('시간별 수강 완료 사용자 수')
#그래프 x축 레이블
plt.xlabel('시간')
#그래프 y축 레이블
plt.ylabel('사용자(명)')
#x축 눈금 표시 하기
plt.xticks(np.arange(24))
#그래프 출력
plt.show()
|
* np.arange() : 괄호에 명시된 간격으로 배열을 생성
3. 요일 별 접속 시간 살펴보기 그리고 히트맵으로 나타내기
#피벗테이블 만들기
#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
|
* values는 user_id의 갯수를 보겠다. '행'에 들어가는 부분은 weekdays
'열'에 들어가는 부분은 hours. 각 행과 열이 만날 때마다 user_id를 보겠다.
aggfunc = user_id들이 모이면 갯수를 세기
- aggfunc 사실 이해가 안 감...
#그래프 사이즈 변경
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()
|
* np.arrange() 이해하기
=> ex) np.arrange(1, 100, 3) : 1부터 100까지 숫자를 출력할건데 3칸씩 이동시켜줘.
plt.xticks(np.arange(0.5, len(sparta_data_pivot_table.columns), 1), sparta_data_pivot_table.columns)
=> 0.5부터 ' sparta_data_pivot_table.columns' 길이만큼 숫자를 출력할건데 1칸씩 이동시켜줘.