파이썬으로 데이터 분석하기 (8)

Stella Park·2021년 7월 7일
0

PYTHON

목록 보기
8/14
post-thumbnail

수강데이터, 히트맵으로 그리기
수강데이터에서 날짜값을 실제 날짜 포맷으로 가공한다음 요일 및 시간 데이터를 추출하여 테이블에 추가하고, 요일별 종료시간을 히트맵으로 그려보자

(1) 필요한 패키지 및 글꼴 설치, 데이터 불러오기

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.family']="Malgun Gothic"

sparta_data = pd.read_csv('./data/enrolleds_detail.csv')
sparta_data

(2) 날짜값을 실제 날짜 형식으로 가공하고 이 값을 새 열에 추가하기

format = '%Y-%m-%dT%H:%M:%S.%f' #Minuite에서 M을 쓰기에 앞에서 month는 소문자로 적기
sparta_data['done_date_time'] = pd.to_datetime(sparta_data['done_date'], format=format)
sparta_data

(3) 새 열의 날짜 데이터를 바탕으로 요일 추출하기

sparta_data['done_date_time_weekday'] = sparta_data['done_date_time'].dt.day_name()
sparta_data

(4) 요일별 수강완료 수강생 수, bar그래프로 그려보기

weekdata = sparta_data.groupby('done_date_time_weekday')['user_id'].count() #요일별 유저아이디 갯수

weeks = ['Monday','Tuesday','Wednesday','Thursday',"Friday","Saturday","Sunday"]
weekdata = weekdata.agg(weeks) 
#요일은 정렬이 순서대로 정렬이 안되니까 새로운 배열을 만들어주고 그에 따라서 'agg' 즉, 모으기

plt.figure(figsize=(8,5))
plt.bar(weekdata.index,weekdata)
plt.title('요일별 수강완료 수강생 수')
plt.xlabel('요일')
plt.ylabel('수강생(명)')
plt.xticks(rotation=90)
plt.show()

(5) 같은 방식으로 시간별 수강 완료 수강생 수를 line 그래프로 그려보기

sparta_data['done_date_time_hour'] = sparta_data['done_date_time'].dt.hour
sparta_data

hourdata = sparta_data.groupby('done_date_time_hour')['user_id'].count()
hourdata = hourdata.sort_index() #시간이라 정렬가능
hourdata

plt.figure(figsize=(10,5))
plt.plot(hourdata.index,hourdata)
plt.title('시간별 수강 완료 수강생 수')
plt.xlabel('시간')
plt.ylabel('사용자(명)')
plt.xticks(np.arange(24))
plt.show()

(6) 요일별 시간별 수강완료 수강생 수를 각각 구했으니,
이제 두개를 합쳐 피봇테이블 만들어주기

sparta_data_pivot_table 
= pd.pivot_table(sparta_data, values='user_id',aggfunc='count', 
              index=['done_date_time_weekday'],
              columns=['done_date_time_hour']).agg(weeks)
              #사용할 테이블, 사용할 값, 어떤 형식으로 모을건지, 행에 들어갈 값, 열에 들어갈 값, 마지막으로 요일 데이터가 있기때문에 아까 사용했던 weeks 기준으로 모아주기
sparta_data_pivot_table

(7) 히트맵 그리기

plt.figure(figsize=(14,5))
plt.pcolor(sparta_data_pivot_table)
plt.xticks(np.arange(0.5,len(sparta_data_pivot_table.columns),1),sparta_data_pivot_table.columns) #모든 숫자와 요일이 표시될 수 있게끔, ticks 설정해주기
plt.yticks(np.arange(0.5,len(sparta_data_pivot_table.index),1),sparta_data_pivot_table.index)
plt.title('요일별 종료 시간 히트맵')
plt.xlabel('시간')
plt.ylabel('요일')
plt.colorbar() #색깔이 표현하는 값이 무엇인지 보여줌
plt.show()

profile
코딩 0살

0개의 댓글

관련 채용 정보