일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- It
- DAGs
- 패캠챌린지
- 분석
- 패스트캠퍼스
- ChatGPT
- 독서리뷰
- Ai
- 파이썬을활용한시계열데이터분석A-Z올인원패키지
- 직장인인강
- 리뷰
- 데이터분석
- 챗지피티
- 파이썬
- API
- 자동매매프로그램
- nlp
- Python
- 패스트캠퍼스후기
- 활성화함수
- 머신러닝
- airflow
- 직장인자기계발
- 상관분석
- 빅데이터
- 딥러닝
- 클라우드
- 데이터
- 태국여행
- 방콕여행
- Today
- Total
데이터를 기반으로
고객 등록 시간대 상관 분석 본문
안녕하세요~
제가 앞서 글에서 이야기 드렸지만 ㅎㅎ 다시 말씀드리자면 저는 약국을 대상으로 사업을 진행하는 곳에서 일을 하고 있습니다.
모든 사업을 밝힐 순 없으니 단편적인 부분만 말씀드릴 수 없다는 점 양해 부탁드립니다 ㅎㅎ
그래도 글을 설명하기에는 어려움이 없을 것 같으니 이어나가겠습니다!! ㅎㅎ
이번에 진행할 것은 약국에서 고객을 등록하는 프로그램이 있습니다 저희에게 ㅎㅎ
어느 시간대가 약국에서 가장 고객 등록이 많은 지 한번 살펴보고자 하였습니다!!
나중에 진행할 현장 프로모션이나 현장에서 무언가를 진행할 때 쓰기 좋은 백 데이터가 될 것 같군요!!
자 먼저 데이터 세팅은 항상 DB Connection을 통해 파이썬에서 불러왔습니다!! ㅎㅎ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #패키지 import import pandas as pd import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import seaborn as sns from scipy import stats ####################################################################### # 고객 테이블 불러오기 import pymysql conn = pymysql.connect(host = '123.4.5.6', user = '아몰랑', password = '아몰랑2' , db = '아몰랑3') #SMS curs = conn.cursor() sql = "SELECT * FROM 고객테이블;" # 실행 할 쿼리문 입력 curs.execute(sql) # 쿼리문 실행 rows = curs.fetchall() # 데이터 패치 row=list(rows) df=pd.DataFrame(row) df=df.rename(columns={df.columns[0] : 'c_id', df.columns[1] : 'c_age', df.columns[2] : 'adrs_main', df.columns[3] : 'regist_dt'}) df_cs=df ######################################################################## #고객 등록시간 datetime 타입 변수로 변경 from datetime import datetime as dt df_cs['regist_dt'] = df_cs['regist_dt'].apply(lambda x: pd.to_datetime(str(x), format='%Y-%m-%d %H:%M:%S')) # 등록 시간에서 시간만 추출 df_cs["hour"] = df_cs["regist_dt"].dt.hour # 지역 및 시간별 등록 고객 수 추출 df_s=df.groupby(["hour","adrs_main"])['c_id'].nunique() df_s=pd.DataFrame(df_s) df_s=df_s.rename(columns={df_s.columns[0] : 'ct'}) df_s=df_s.reset_index() | cs |
위와 같이 고객 정보를 불러오고 나서 고객 등록시간을 datetime 변수로 변환을 해줘야 시간을 추출할 수 있었습니다!!
dt.hour -> 이것으로 등록 시간을 따로 추출하였습니다!!
자 그렇게 groupby를 통해 지역 및 시간별 등록한 고객 수를 추출했습니다!!!
지역 변수를 같이 뽑은 이유는 이후에 제가 작업할 것이 따로 있어서 변수를 추가해서 groupby한 것이니
크게 신경쓰지 않으셔도 될 것 같아요~ ㅎㅎ
이후에는 df_s 처럼 이쁘게 나온 데이터 프레임으로 상관 계수를 추출해 볼 예정입니다!!!
바로!!! Heatmap 으로요!!!!
히트맵이 상관 계수 추출할 때 어마무시하게 이쁘게 나오더라구요 ㅎㅎㅎ
우선 저는 시간 변수를 더미 변수로 변경하고 시간앞에 공란을 추가할거에요!!
이유는 히트맵 나올 때 시간들 변수앞에 빈칸이 없으면 뭔가 짤려서 보이더라구요...ㅠㅠ
1 2 3 4 5 6 7 8 9 10 11 12 | dummy_df = pd.get_dummies(df_s['hour']) dummy_df = df_s.join(dummy_df .add_prefix(' ')) import matplotlib.pyplot as plt %matplotlib inline import seaborn as sns sns.set() plt.figure(figsize=(40,40)) plt.rcParams['font.family'] = 'Malgun Gothic' sns.heatmap(data = dummy_df .corr(), annot=True, annot_kws={"size": 20}, fmt = '.2f', linewidths=.5, cmap='Blues') | cs |
위와 같은 코드를 돌리면!!!!!!!! 히트맵이 완성됩니다!!!!!!!! 밑에를 보십쇼!!!!!!!!!!!!!!!!!!
조금은 그림이 큽니다...핳하!!! 변수가 많아서 저렇게 나온 건데 우선 전체적으로 이런식으로 그려진다~ 라고 생각하시면 될 것 같아요 ㅎㅎ
아무튼!! 시각화로 굉장히 직관적으로 보여서 저는 상관계수 뽑을 때 항상 히트맵을 그려본답니다 ㅎㅎ
다시 본론으로가서 저희는 시간과 고객 등록에 대한 상관 계수를 보고자 했습니다!!
그림을 자세히 확인해보니
10, 11, 12 시 그리고 17시에 고객 등록이 타 시간대에 비해 상관 계수가 높게 나타났습니다!!!
사실 상관 계수가 0.08~0.13 은 어떻게 보면 굉장히 낮은 수치입니다.
어떤 분야에서는 아예 상관이 없다고 볼 수 있을 정도로 낮은 수치라고 해석할 수 있는 것으로 보여집니다만!!
저희는 단순히 타 시간대 중 그나마~ 어떤 시간대에 좀 더 집중되어 있나를 확인해보고자 진행한 것이었습니다.
사실 단순히 빈도수로 확인해 보아도 됐지만, 시각화를 위해 그리고 퍼포먼스적인 측면을 이용하고자 상관 계수를 추출하였습니다.
이렇게 아주 아주 간단한 상관 계수를 추출해보았습니다!!!ㅎㅎㅎ
단순히 빈도만 높다고 추출할 수 있는 영역이 있고 상관 계수를 보고자하는 부분이 있는 것 같습니다.
저희가 문자로 마케팅을 진행한 적이 몇 번 있었는데
여기서 파생되어 시간별 조회에 대한 상관 분석도 진행해보면 좋을 것 같다고 생각이 되었습니다 ㅎㅎ
역시 분석은 꼬리에 꼬리를 물며 진행되나 봅니다 ㅎㅎ
오늘은 간단한 주제였으니 여기까지 진행하도록 하겠습니다!!!
가장 최근 네이버 크롤링을 진행했었는데 다음은 그 게시글을 정리해서 올리도록 하겠습니다~
감사합니다~
'데이터 분석(Python) > 탐색적 데이터 분석(EDA)' 카테고리의 다른 글
pandas encoding에 관하여 (0) | 2023.07.15 |
---|