python_4주차 학습내용(가설세우기, 분석하기, 그래프작성(디자인), 결과 도출)

김수경·2023년 12월 13일

파이썬

목록 보기
4/9

“다른 강의에 비해, 게임 종합반의 구매 전환률이 안정적이지 않습니다. 이번 달은 게임 종합반 수강생 유입에 집중하여서 액션 플랜을 짜봅시다!

1. 광고 효율이 나지 않는 매체 찾기

  1. 가설세우기
  • 상황 : 게임개발 종합반의 전체 광고 효율을 살펴보았는데 회사에서 사용한 광고 비용에 비해 매출까지의 효율이 나타나지 않고 있습니다.
  • 원하는 결과 : 가장 효율이 나지 않는 광고 매체를 찾아서 예산을 줄이고 다른 매체에 예산을 늘려, 같은 비용 대비 광고 효율을 높이고 싶습니다

    가설설정 : 여러 광고 매체 중 효율이 낮은 매체에 사용한 비용을 가장 효율이 좋은 매체에 집행한다면 기존 대비 50%의 광교 효율을 증대시킬 수 있을 것이다.

  1. 데이터 분석하기
#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()

  1. 결론 도출하기
    인스타그램에서 가장 많은 유저 유입이 발생한다. 옥외광고, 오프라인 광고의 비용을 줄이고 인스타그램에 투입하면 더 많은 수강생이 유입될 것이다.
    인스타그램 : 1711명, 옥외광고 : 260명
    (1711-260)/260=558%의 광고 효율 증대를 기대할 수 있다.

2. 시각과 다양화 하기

  1. 막대그래프 색 변경하기
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)
![](https://velog.velcdn.com/images/waterglasses_k/post/f810a76a-26ff-428d-bea8-1d46a34d81a6/image.png)


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

3. 패키지 상품 기획하기

  1. 가설세우기
  • 문제 파악 : 현재 게임개발 종합반이 다른 패키지에 포함되어 있는 강의들보다 구매 전환율이 저조한 상황입니다
  • 추가 정보 :이전의 웹개발 종합반과 엑셀보다 쉬운 SQL의 패키지 상품을 기획하여 기존 대비 각각 40%의 구매 전환율이 높아진 사례가 있습니다
  • 원하는 결과 : 매력적인 패키지 상품을 기획하여 게임개발 종합반의 구매 전환율을 더욱 높이고자합니다.

    가설설정 : 게임개발 종합반과 웹개발 종합반 패키지 상품을 만들면 게임개발 종합반의 구매 전환율이 높아질 것이다.

  1. 데이터 분석
#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. 결과도출
게임종합반 수강생 중 앱개발을 수강한 사람이 가장 많기 때문에, 게입종합반과 앱개발의 패키지 상품을 출시하면 게임종합반 매출이 상승할 것이다.

4. 패키지 상품 홍보하기

  1. 가설세우기
    우리는 앱개발 종합반 신청자가 게임 종합반을 다른 과목에 비해 신청이 많은 것을 확인했습니다.
    그렇다면, 왜 앱개발 종합반 신청자가 게임종합반에 관심이 많은 것인지 확인해보아야겠네요!
    이 두 클래스를 신청한 사람들의 공통 관심사를 안다면,
    마케팅 전략을 좀 더 효과적으로 짤수 있겠군요!
    그래서 우리는 또다른 가설을 세우고, 관련 데이터 분석을 하기로 결심 했습니다 😊

    가설설정 : 앱개발 신청자와 게임종합반 신청자는 부수입 창출을 기대하며 수강할 것이다.

  1. 데이터 분석
#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()

  1. 결과도출
    앱종합반, 게임 종합반 수강생의 목표는 부수입창출이 가장 많으므로, 앱과 게입 패키지 상품 홍보시 부수입 창출과 관련된 워딩을 사용하여 수강유입을 늘리면 매출 효과를 증대시킬 수 있을 것이다.

5. 할인 효과 알아보기

  1. 가설세우기
  • 문제 파악 : 결제 마지막 페이지에서 이탈률이 높은 상황입니다. 확인 해 본 결과, 결제 페이지 오류는 없는 상황입니다.금액이 고객들의 구매 결정에 걸림돌이 되는 것으로 예상됩니다.
  • 원하는 결과 : 결제 마지막 페이지에서 고객 이탈율을 줄이고 싶습니다.

    가설설정 : 고객 이탈률을 줄이기 위해 할인쿠폰을 제공하면 결제가 더 많이 일어날 것이다.
    🔍 이 부분을 확인 하기 위해 우리는 실험을 진행 하였습니다.
    같은 기간동안 선착순으로 결제 페이지에 접속한 각 12000명을 대상으로
    첫번째 그룹 마지막 페이지 결제 접속자 에게 마지막 결제 페이지에 할인 쿠폰을 제공
    두번째 그룹 마지막 페이지 결제 접속자 에게 할인 쿠폰 미 제공(정가 구매 유도)
    을 하여 할인 혜택이 실제 결제율에 얼마나 영향을 주는지 알아 봅시다.

  1. 분석하기
#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()

6. 할인금액별 효과 알아보기

  1. 가설세우기
    📖 결제 마지막 페이지에서 할인 혜택을 제공할 경우
    결제율을 올릴 수 있다는 것을 확인 했습니다.
    그렇다면, 얼마만큼의 할인 혜택을 제공하는 것이 결제 전환율을 가장 높일 수 있는지 궁금해졌습니다!
    할인률이 높으면 높을수록 결제가 많아지는지 데이터를 통해 알아볼까요~?
    증명하고자 하는 가설 :
    할인율이 높으면 높을 수록 결제 전환율도 높을 것이다.
    그리하여, 각 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()


#결론 : 할인금액이 클 수록 많이 신청함.

profile
잘 하고 있는겨?

0개의 댓글