인프런 sql 실습 강의를 들으면서 선생님은 짚지 않고 넘어가셨지만 더 궁금한 부분을 찾아 채우고 있다. 저작권 보호를 위해 강의와 동일한 쿼리는 업로드 하지 않으며, 본문의 쿼리는 내가 궁금한 부분을 변용한 것이다.
SQL : postgresql
시각화 및 전처리: python
현재 dataset에는 날짜만 알 수 있을 뿐 무슨 요일인지 나와있지 않다. 날짜에 맞는 요일로 변환하여 컬럼을 추가하고, 요일로 그룹을 묶어 어떤 요일에 판매액이 높은지 요일별 추이를 확인하는 그래프를 그려보자!
해당 그림만 보면 분명 튀는 시점이 있지만, 무슨 요일에 상승하고 무슨 요일에 하락하는지 추이를 파악하기 어려웠다. 저작권 문제가 있으므로, 내가 더 고민해본 것이 아니라 강의와 동일한 쿼리는 업로드를 생략한다.
이 단계에서 내림차순 전처리를 하지 않으면, 나중에 그래프를 그렸을 때 x열의 범주가 우리에게 익숙한 월화수목금토일 순서로 나오는 것도 아니고 문자열 기준으로 오름차순된 Friday, Monday, Saturday, Sunday ... 순서대로 출력된다.
나는 지금 어떤 요일에 매출액이 높은지 추이를 확인하려는 것이기 때문에, day를 기준으로 groupby, 매출액을 기준으로 sum을 해주었다.
df.groupby('day').sum('sum_amount').reset_index()
Before : groupby 함수로 전달한 그룹화 기준 컬럼은 그룹 연산한 결과의 index가 된다. 나중에 시각화할 때 x열로 가져올 수 없다.
After : reset_index()를 통해 열로 지정하기
매출액을 기준으로 내림차순 해주었다.
df_agg = df.groupby('day').sum('sum_amount').reset_index().sort_values(by='sum_amount' , ascending=False)
import plotly.express as px
fig = px.bar(data_frame=df_agg, x='day', y='sum_amount', color = 'sum_amount', color_continuous_scale='Blues')
fig.show()
날짜에 맞는 요일로 변환하고, 요일로 그룹을 묶어 어떤 요일에 판매액이 높은지 요일별 추이를 확인하는 그래프를 그리기 완료!
금요일> 월요일>화요일>수요일>목요일 순서대로 매출액이 높음을 확인했다.
프로모션을 금요일에 적극적으로 하는 방식으로 활용할 수 있을 것이다.