- 가설세우기
- 상황 : 게임개발 종합반의 전체 광고 효율을 살펴보았는데 회사에서 사용한 광고 비용에 비해 매출까지의 효율이 나타나지 않고 있습니다.
- 원하는 결과 : 가장 효율이 나지 않는 광고 매체를 찾아서 예산을 줄이고 다른 매체에 예산을 늘려, 같은 비용 대비 광고 효율을 높이고 싶습니다
가설설정 : 여러 광고 매체 중 효율이 낮은 매체에 사용한 비용을 가장 효율이 좋은 매체에 집행한다면 기존 대비 50%의 광교 효율을 증대시킬 수 있을 것이다.
- 데이터 분석하기
#1. 라이브러리 선언, 파일 읽기 import pandas as pd import matplotlib.pyplot as plt sparta_data = pd.read_csv('/content/user_db1.csv') sparta_data.head()
#2. 데이터 전처리(데이터 확인 -> 결측치 확인 -> 결측치 제거) # 데이터 확인하기 sparta_data.info() # 비어있는 값 데이터 수 확인하기 sparta_data.isnull().sum() # 빈 데이터 값 있다면 제거하기 sparta_data = sparta_data.dropna()#3. access_media를 통해 유저의 유입 경로를 비교한다. >>> groupby access_media = sparta_data.groupby('access_media')['user_id'].count() access_media
#4. 데이터 시각화(바그래프 / x : access_media, y: user_id) # matplotlib, numpy선언 import matplotlib.pyplot as plt import numpy as np plt.rc('font', family='NanumBarunGothic') #한글 깨짐을 방지시켜줘요! # 그래프 그리기 #plt.figure(width, height) : 넓이와 높이 만큼 이미지를 생성한다는 것을 말해줍니다! plt.figure(figsize=(6,6)) #각각 어떤 값이 들어가야 하는지 입력해 볼까요? #plt.bar(X축값, Y축값) plt.bar(access_media.index, user_id.values) #그래프의 제목 plt.title('수강생 별 수강 신청 경로') #그래프의 x축 라벨 이름 plt.xlabel('수강 신청 경로') #그래프의 y축 라벨 이름 plt.ylabel('수강생 수') #x축 눈금의 글씨의 각도 변경을 위해 plt.xticks(rotation="원하는 각도")를 이용해요! #x축 눈금의 글씨를 45도 회전 plt.xticks(rotation=45) #그래프를 화면에 나타나도록 합니다. plt.show()
- 결론 도출하기
인스타그램에서 가장 많은 유저 유입이 발생한다. 옥외광고, 오프라인 광고의 비용을 줄이고 인스타그램에 투입하면 더 많은 수강생이 유입될 것이다.
인스타그램 : 1711명, 옥외광고 : 260명
(1711-260)/260=558%의 광고 효율 증대를 기대할 수 있다.
- 막대그래프 색 변경하기
plt.bar(access_media.index,access_media.values,color="원하는색상")
2. 바마다 다른 색 입히기#edgecolor = '원하는 색상', linewidth = 원하는 두께로 각 바의 테두리의 색상과 두께 변경이 가능 합니다! plt.bar(access_media.index,access_media.values, color = ['gold', 'b', '#FF0000', 'green','orange','red','#000000'], alpha = 0.3,edgecolor = '원하는 색상', linewidth = 원하는 두께)
3. 그래프 너비 바꾸기#width=원하는 두께로 그래프의 바 너비를 변경 할 수 있어요! 기본 값은 0.8입니다! plt.bar(access_media.index,access_media.values, width=1.2) plt.bar(access_media.index,access_media.values, width=0.4)
4. 그래프 폰트 바꾸기#fontsize="원하는 크기"로 폰트 사이즈를 조절 할수 있어요! plt.title('수강생 별 수강 신청 경로',fontsize=20) 
5. 각 그래프 바 수치 나타내기#그래프를 bar라는 변수에 넣고, bar = plt.bar(access_media.index,access_media.values) #for 반복문으로, for rect in bar: #각 바의 세로길이 값을 구하고, height = rect.get_height() #bar의 가장 정 가운데 x 좌표 구하기 : get_x()로 x축의 가장 왼쪽 부분 + get_width의 절반 값 plt.text(rect.get_x() + rect.get_width()/2.0, height, '%.1f' % height, ha='center', va='bottom', size = 12)
5. 가로그래프 그리기#plt.barh를 이용하면, 서로 축 변경이 가능 하답니다 :) plt.barh(access_media.index,access_media.values, color="g")
- 가설세우기
- 문제 파악 : 현재 게임개발 종합반이 다른 패키지에 포함되어 있는 강의들보다 구매 전환율이 저조한 상황입니다
- 추가 정보 :이전의 웹개발 종합반과 엑셀보다 쉬운 SQL의 패키지 상품을 기획하여 기존 대비 각각 40%의 구매 전환율이 높아진 사례가 있습니다
- 원하는 결과 : 매력적인 패키지 상품을 기획하여 게임개발 종합반의 구매 전환율을 더욱 높이고자합니다.
가설설정 : 게임개발 종합반과 웹개발 종합반 패키지 상품을 만들면 게임개발 종합반의 구매 전환율이 높아질 것이다.
- 데이터 분석
#1. 라이브러리 선언, 데이터 불러오기 import pandas as pd import numpy as np import matplotlib.pyplot as plt plt.rc('font', family='NanumBarunGothic') #한글 깨짐 방지 글꼴 설정 sparta_data = pd.read_table('/content/user_registered_class.csv',sep=',') sparta_data.head()
#2. 데이터 전처리 #각 강의 수강생 수 합 구하기 >>> 1(수강하는사람)의 합 구하기 #각 수업에서 1(수강 신청) 한 사람의 수 세기 sum_of_students_by_class = sparta_data[sparta_data==1].count() #불필요한 user_id 삭제하기 >>> drop #테이블.drop("삭제할 행/열")을 통해 데이터를 삭제 할수 있습니다. sum_of_students_by_class = sum_of_students_by_class.drop('user_id') sum_of_students_by_class
#3. 그래프 그리기(바그래프, x : 수강과목/y : 수강생수) #그래프 사이즈 설정 plt.figure(figsize=(10,5)) #각각 어떤 값이 들어가야 하는지 입력해 볼까요? #plt.bar(X축값, Y축값) plt.bar(sum_of_students_by_class.index, sum_of_students_by_class.values ) #그래프 타이틀 plt.title('게임개발 종합반 신청한 학생 수강이력') #x축 레이블 plt.xlabel('강의') #y축 레이블 plt.ylabel('수강생(명)') #그래프 보여주기 plt.show()
3. 결과도출
게임종합반 수강생 중 앱개발을 수강한 사람이 가장 많기 때문에, 게입종합반과 앱개발의 패키지 상품을 출시하면 게임종합반 매출이 상승할 것이다.
- 가설세우기
우리는 앱개발 종합반 신청자가 게임 종합반을 다른 과목에 비해 신청이 많은 것을 확인했습니다.
그렇다면, 왜 앱개발 종합반 신청자가 게임종합반에 관심이 많은 것인지 확인해보아야겠네요!
이 두 클래스를 신청한 사람들의 공통 관심사를 안다면,
마케팅 전략을 좀 더 효과적으로 짤수 있겠군요!
그래서 우리는 또다른 가설을 세우고, 관련 데이터 분석을 하기로 결심 했습니다 😊가설설정 : 앱개발 신청자와 게임종합반 신청자는 부수입 창출을 기대하며 수강할 것이다.
- 데이터 분석
#1. 라이브러리 선언, 데이터 불러오기 import pandas as pd import numpy as np import matplotlib.pyplot as plt plt.rc('font', family='NanumBarunGothic') #한글 깨짐 방지 글꼴 설정 #수강 데이터 가지고 오기 sparta_data_app = pd.read_table('/content/user_db_app.csv',sep=',') sparta_data_game = pd.read_table('/content/user_db_game.csv',sep=',') sparta_data_app.head()
#2. 데이터 전처리 (생략) #3. 데이터 분석 >>> goal당 몇명의 유저가 있는지 gropby #app 수업 신청 목표 기준으로 수강생 수 합계 app_users_goal= sparta_data_app.groupby('goal')['user_id'].count() app_users_goal #game 수업 신청 목표 기준으로 수강생 수 합계 game_users_goal= sparta_data_game.groupby('goal')['user_id'].count() game_users_goal
#4. 데이터 시각화하기 (선그래프 2개, x축 :goal index / y축 : goal values) #그래프 크기 설정 (인치) plt.figure(figsize=(8,6)) #x축 y축 설정을 동일하게 해주고, color와, label을 추가 해주시면 됩니다. 참 쉽죠? #app 종합반 수강생 관심 분야 plt.plot(app_user_goal.index,app_users_goal.values,color="red", label="app") #game 종합반 수강생 관심 분야 plt.plot(game_user_goal.index,game_users_goal.values,color="blue", label="game") #각 그래프의 범례는 .legend()을 이용하여 만들어 줍니다! :) plt.legend() #그래프 타이틀 plt.title("앱 종합반, 게임 종합반 수강생의 관심사") #x축 레이블 plt.xlabel('수강 목적') #y축 레이블 plt.ylabel('수강생 수') #그래프 보여주기 plt.show()
- 결과도출
앱종합반, 게임 종합반 수강생의 목표는 부수입창출이 가장 많으므로, 앱과 게입 패키지 상품 홍보시 부수입 창출과 관련된 워딩을 사용하여 수강유입을 늘리면 매출 효과를 증대시킬 수 있을 것이다.
- 가설세우기
- 문제 파악 : 결제 마지막 페이지에서 이탈률이 높은 상황입니다. 확인 해 본 결과, 결제 페이지 오류는 없는 상황입니다.금액이 고객들의 구매 결정에 걸림돌이 되는 것으로 예상됩니다.
- 원하는 결과 : 결제 마지막 페이지에서 고객 이탈율을 줄이고 싶습니다.
가설설정 : 고객 이탈률을 줄이기 위해 할인쿠폰을 제공하면 결제가 더 많이 일어날 것이다.
🔍 이 부분을 확인 하기 위해 우리는 실험을 진행 하였습니다.
같은 기간동안 선착순으로 결제 페이지에 접속한 각 12000명을 대상으로
첫번째 그룹 마지막 페이지 결제 접속자 에게 마지막 결제 페이지에 할인 쿠폰을 제공
두번째 그룹 마지막 페이지 결제 접속자 에게 할인 쿠폰 미 제공(정가 구매 유도)
을 하여 할인 혜택이 실제 결제율에 얼마나 영향을 주는지 알아 봅시다.
- 분석하기
#1. 라이브러리 선언, 데이터 불러오기 import pandas as pd import numpy as np import matplotlib.pyplot as plt plt.rc('font', family='NanumBarunGothic') #한글 깨짐 방지 글꼴 설정 sparta_data = pd.read_table('/content/user_db1.csv',sep=',') sparta_data.tail()
#2. 데이터 전처리 # discounted 받은 사람과 안받은 사람의 결제율 확인하기 #sparta_data['group'] ==1 이라는 조건을 두고 그것이 일치하는 user의 수를 세면 됩니다! #이때의 ==은 우리가 알고 있는 "equal" = 과 동일한 뜻입니다! (파이선에서 = 는 변수 지정 할때만 쓰입니다. 소곤소곤) #할인 혜택 받지 않은 사람의 결제 수 sum_of_students_by_discounted = sparta_data[sparta_data['group']==1]['user_id'].count() sum_of_students_by_discounted # 동일한 방법으로 할인혜택을 받지 않는 고객을 sparta_data['group'] ==0 이라는 조건을 두고 그것이 일치하는 user의 수를 세볼까요? #이때의 ==은 우리가 알고 있는 "equal" = 과 동일한 뜻입니다! #할인 혜택 받은 사람의 결제 수 sum_of_students_by_not_discounted = sparta_data[sparta_data['group']==0]['user_id'].count() sum_of_students_by_not_discounted
#전환결제율 구하기 #각 결제 인원에서 실제 실험 인원인 12000명을 나누고 각 퍼센테이지 구하기 percent_of_students_by_not_discounted = sum_of_students_by_not_discounted/12000 *100 percent_of_students_by_discounted = sum_of_students_by_discounted/12000 *100 print(percent_of_students_by_not_discounted , percent_of_students_by_discounted ) >> 할인 받은사람의 결제율이 27%정도 더 높다.#3. 시각화하기 (바그래프, x : 할인여부 / y : 결제수) #그래프 사이즈 plt.figure(figsize=(10,5)) #x 그룹 지정하기 x_list =["정가 구입 그룹", "할인 적용 그룹"] #y 값 #각각 어떤 값이 들어가야 하는지 입력해 볼까요? y_list = [percent_of_students_by_not_discounted, percent_of_students_by_discounted] #x,y값 설정 plt.bar(x_list, y_list) #그래프 타이틀 plt.title('할인 여부 결제 전환율 비교 분석') #x축 레이블 plt.xlabel('할인 적용 여부') #y축 레이블 plt.ylabel('결제 전환율') #그래프 보여주기 plt.show()
- 가설세우기
📖 결제 마지막 페이지에서 할인 혜택을 제공할 경우
결제율을 올릴 수 있다는 것을 확인 했습니다.
그렇다면, 얼마만큼의 할인 혜택을 제공하는 것이 결제 전환율을 가장 높일 수 있는지 궁금해졌습니다!
할인률이 높으면 높을수록 결제가 많아지는지 데이터를 통해 알아볼까요~?
증명하고자 하는 가설 :
할인율이 높으면 높을 수록 결제 전환율도 높을 것이다.
그리하여, 각 2706명에게 1만원, 2만원, 3만원 쿠폰을 동시에 발송 하였다가설설정 : 할인금액이 클수록 결제가 더 많이 일어날 것이다.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rc('font', family='NanumBarunGothic')
sparta_data = pd.read_table('/content/user_db1.csv',sep=',')
sparta_data.head()
#1, 2, 3만원 쿠폰 그룹당 얼마나 결제를 하였는지 살펴보자.
students_discounted = sparta_data.groupby('discounted')['user_id'].count()
students_discounted
#1만원 : 808명, 2만원 : 1588명, 3만원 3258명 >>> 할인 금액이 클수록 많이 결제함
#>>> 그래프로 시각화 하기(바그래프, x축 : 할인금액 / y축 : user_id)
#그래프 사이즈
plt.figure(figsize=(10,5))
x_list =["1만원 쿠폰 그룹", "2만원 쿠폰 그룹", "3만원 쿠폰 그룹"]
#x,y값 설정
plt.bar(x_list, students_discounted.values)
#그래프 타이틀
plt.title('할인 율 별 수강 신청 자 수')
#x축 레이블
plt.xlabel('할인 적용 범위')
#y축 레이블
plt.ylabel('수업 신청한 수강생')
#그래프 보여주기
plt.show()
#결론 : 할인금액이 클 수록 많이 신청함.
