상세 컨텐츠

본문 제목

231207

TIL

by 30303 2023. 12. 7. 21:33

본문

728x90

SQL 코드카타

문제 7. 아픈 동물 찾기

조건문

where intake_condition = 'sick'

 

문제 8. 상위 n개 레코드

MySQL 에서는 limit n 만 붙여주면 된다. 아주 간단. 

 

RBDMS 별로 문법이 다르다고 하는데, 제가 사용하고 있는 것은 MySQL임을 오늘 알게 되었습니다.

n번의 시도 끝에 성공.


데이터 분석 3주차 강의

최적의 타이밍에 완주를 독려하는 고객관리 메세지를 보내는 방법은?

 

1. 수강생들이 가장 많이 혹은 가장 적게 듣는 시간과 요일을 찾기

print(type(sparta_data["access_date"][0]))

# 데이터의 타입을 확인

 

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)

# 문자 데이터를 시간 형태로 바꾸기

 

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

sparta_data.tail(5)

#  요일 추출

 

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

# 시간 추출

 

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

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

weekdata

# 요일별 그룹화하여 갯수 세기

 

요일 별 수강생 수

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.sort_index(ascending=False)

hourdata

# 시간별로 그룹화후 갯수 세기

 

시간대 별 수강생 수

 

 

import matplotlib.pyplot as plt

import numpy as np

# 시각화를 위한 맷플롯 사용 선언 (넘파이는 계산을 용이하게 하기 위한)

 

#그래프 사이즈

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) / rotation=0 인 경우, x축 레이블 평행(아래 이미지와 같음)

 

#그래프 출력

plt.show()

 

시간대별 그래프를 그리는 법. 생략된 부분은 위와 동일함

 

#그래프 x y

plt.plot(hourdata.index, hourdata) 

 

#x 눈금 표시 하기

plt.xticks(np.arange(24))

 

plt.plot = 꺾은 선 그래프 

plt.bar = 막대 그래프

 

np.arange(n) = 0부터 n까지의 숫자를 나열

 

* colab 에서 한글이 깨지는 경우

!sudo apt-get install -y fonts-nanum

!sudo fc-cache -fv

!rm ~/.cache/matplotlib -rf

실행 후

plt.figure(figsize=(10,5))

plt.rc('font', family='NanumBarunGothic')

figure 아래에 폰트를 지정하는 문단을 추가하면 된다

 

히트맵 그리기

 

x축 요일, y축 시간

 

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 유저 아이디의 갯수를 보겠다.

# index = 행에 weekday

# columns = 열에 시간

# aggfunc="count" 유저 아이디 갯수 세기

 

 

 

#그래프 사이즈 변경

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()

 

 

# plt.pcolor(sparta_data_pivot_table) = 히트맵을 그리겠다.

plt.xticks(np.arange(0.5, len(sparta_data_pivot_table.columns), 1), sparta_data_pivot_table.columns)

# 0.5부터 테이블 컬럼의 길이 만큼 한 칸씩 이동. (격자가 가운데에 위치하기 위해 0.5부터 시작)

 

np.arrange(1,100,3)

1부터 100까지 숫자를 출력. 3칸씩 이동

 

 

 

 

'TIL' 카테고리의 다른 글

231212화_TIL  (0) 2023.12.12
231211월_TIL  (0) 2023.12.11
231206  (1) 2023.12.06
231205  (1) 2023.12.05
231204  (2) 2023.12.04

관련글 더보기