데이터분석 | 광고 효율이 나지 않는 매체 찾기 | 패키지 상품 기획하기

    728x90

     

    게임개발 종합반의 구매전환율 높이기


    0. 가설 설정하기

     

    ▶ 가설1 : 광고 효율이 나지 않는 매체 찾기

    게임개발 종합반의 구매전환율이 불안정함.

    현재 게임개발 종합반에 대한 광고 효율이 떨어지고 있는 상황임.

    광고 효율이 낮은 매체를 찾아 광고 효율이 높은 매체로 예산을 옮기면 광고 효율이 높아질 것이라고 가정

    • 광고 매체 별 유입 결과 알아보기

     

    ▶ 한글이 깨질 경우 하단 코드 실행 (코드 실행 후 런타임 재시작하기)

    !sudo apt-get install -y fonts-nanum
    !sudo fc-cache -fv
    !rm ~/.cache/matplotlib -rf

    1. 분석할 데이터 가져오기

     

    ▶ 라이브러리 가져오기

    import pandas as pd
    import matplotlib.pyplot as plt
    import numpy as np
    
    plt.rc('font', family='NanumBarunGothic')

     

    ▶ 스파르타 데이터 읽어오기

    sparta_data = pd.read_csv('/content/user_db1.csv')

    sparta_data

    • user_id : 회원 고유 아이디
    • gender : 성별
    • age : 나이대
    • access_media : 수업 신청 경로
    • group : 할인 받은 여부
    • discounted : 할인의 종류

    2.  데이터 전처리하기

     

    ▶ null 값 없애기

    # sparta_data.info()
    # 결측값 정제
    sparta_data.isnull().sum()
    sparta_data = sparta_data.dropna()

    3. 데이터 분석하기

     

    ▶ 광고 효율이 낮은 매체 찾기

    access_media = sparta_data.groupby('access_media')['user_id'].count()

    access_media

    >> 광고 효율이 가장 높은 매체인스타그램

    >> 광고 효율이 가장 낮은 매체오프라인 광고


    4. 데이터 시각화하기

     

    4-1) 분석 결과 시각화하기

     

    ▶ 광고 매체 별 유입 결과 시각화

    # plt.figure(width, height)
    plt.figure(figsize=(6,6))
    
    # plt.bar(X축값, Y축값)
    plt.bar(access_media.index ,access_media)
    
    # 그래프 제목
    plt.title('수강생 별 수강 신청 경로')
    
    # 그래프 x축 라벨 이름
    plt.xlabel('수강 신청 경로')
    
    # 그래프 y축 라벨 이름
    plt.ylabel('수강생 수')
    
    # plt.xticks(rotation="원하는 각도")으로 x축 눈금의 글씨의 각도 변경
    # x축 눈금 글씨를 45도 회전
    plt.xticks(rotation=45)
    
    # 그래프 보여주기
    plt.show()

    >> 광고 효율이 가장 높은 매체 인스타그램

    >> 광고 효율이 가장 낮은 매체 오프라인 광고

    가장 효율이 나지 않는 광고는 오프라인 광고로

    같은 금액을 모두 인스타그램이나 페이스북에 집행하면 광고 효율을 더 증대시킬 수 있을 것


    4-2) 그래프 디테일 바꿔보기

     

    ▶ 막대 그래프 색 변경해보기

    : plt.bar( )의 매개변수에 color = '원하는 색상 ' 추가해주기

    #plt.bar(X축값, Y축값)
    plt.bar(access_media.index, access_media.values, color="원하는색상")

    color = 'lightblue'

     

    ▶ 각 막대마다 다른 색 입히기

    : alpha = 색의 투명도 조절
    : RGB값이나 hex값으로도 색상 표현 가능

    plt.bar(access_media.index,access_media.values, color = ['gold', 'b', '#FF0000', 'green','orange','red','#000000'], alpha = 0.3)

     

    ▶ 테두리 색,  테두리 두께 변경하기

    : edgecolor = '원하는 색상'

    : linewidth = 원하는 두께

    plt.bar(access_media.index,access_media.values, color = ['gold', 'b', '#FF0000', 'green','orange','red','#000000'], alpha = 0.3,edgecolor = '원하는 색상', linewidth = 원하는 두께)

     

    ▶ 막대 두께 변경하기

    : width = 원하는 두께 (기본 값은 0.8)

    plt.bar(access_media.index,access_media.values, width = 원하는 두께)

    width = 0.5

     

    ▶ 그래프 폰트 크기 변경하기

    : fontsize = 원하는 크기

    plt.title('수강생 별 수강 신청 경로', fontsize = 원하는사이즈)

    fontsize = 20

     

    ▶ 각 막대의 수치 나타내기

    # 그래프를 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)

     

    ▶ 가로 그래프 그리기

    : plt.bar에 h만 붙여주면 됨!!

    : plt.barh(x축 값, y축 값, ....)

    : x축의 이름들이 너무 길 때에는 가로 그래프를 그려주면 가독성이 좀 나아짐

    plt.barh(access_media.index,access_media.values, color="b")

    color = blue


    0. 가설 설정하기

     

    ▶ 가설2 : 패키지 상품 기획하기

    게임개발 종합반 과목을 가장 수강을 많이하는 다른 과목과 패키지로 묶으면 구매전환율을 높일 수 있을 것

    게임개발 종합반을 수강한 사람은 가장 핫한 강의인 웹개발 종합반을 가장 많이 신청했을 것

    그래서 이 둘을 묶으면 구매전환율을 가장 높일 수 있을 것이라고 가정

    • 기존에 게임개발 종합반어떤 과목과 함께 많이 구매했는지 알아보기

    1. 분석할 데이터 가져오기

     

    ▶ 라이브러리 가져오기

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt

     

    ▶ 스파르타 등록 데이터 읽어오기

    sparta_data = pd.read_table('/content/user_registered_class.csv', sep=',')

    sparta_data.head()

     

    >> 데이터 값 중 0은 수강 안 한 사람, 1은 수강한 사람

    • user_id : 회원 고유 아이디
    • web : 웹개발 종합반 수강자
    • app : 앱개발 종합반 수강자
    • sql : sql 수업 수강자

    2. 데이터 전처리 및 분석하기

     

    ▶ 게임개발 종합반과 가장 많이 팔린 강의 구하기

    sum_of_students_by_class = sparta_data[sparta_data == 1].count()

    sum_of_students_by_class

    >> 여기서 user_id가 0인 이유는 user_id는 1이 아니라 긴 문자열이여서 셀 수 없었기 때문

    >> 앱개발 종합반이 게임개발 종합반과 가장 같이 많이 팔림

     

    ▶필요없는 데이터 user_id 제거해주기

    sum_of_students_by_class = sum_of_students_by_class.drop('user_id')


    3. 데이터 시각화하기

     

    ▶ 분석한 데이터 시각화해주기

    #그래프 사이즈 설정
    plt.figure(figsize=(10,5))
    
    #각각 어떤 값이 들어가야 하는지 입력해 볼까요?
    #plt.bar(X축값, Y축값)
    plt.bar(sum_of_students_by_class.index , sum_of_students_by_class)
    
    #그래프 타이틀
    plt.title('게임개발 종합반 신청한 학생 수강이력')
    
    #x축 레이블
    plt.xlabel('강의')
    
    #y축 레이블
    plt.ylabel('수강생(명)')
    
    #그래프 보여주기
    plt.show()


    4. 최종 결론

     

    ▶ 결론1

    게임개발 종합반을 신청한 수강생들이 가장 같이 많이 수강한 강의앱개발 종합반이다.


    0. 가설 설정하기

     

    ▶ 추가가설

    앱개발 종합반게임개발 종합반 신청자의 공통 관심사의 가장 큰 비율을 차지하는 건 부수입 창출일 것

    • 게임개발 종합반과 앱개발 종합반의 수강 목적을 비교해서 공통 관심사 찾기

    1. 분석할 데이터 가져오기

     

    ▶ 라이브러리 가져오기

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt

     

    ▶ 스파르타 앱 데이터, 게임 데이터 읽어오기

    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
    sparta_data_game


    2. 데이터 전처리 및 분석하기

    app_users_goal = sparta_data_app.groupby('goal')['user_id'].count()
    game_users_goal = sparta_data_app.groupby('goal')['user_id'].count()

    app_users_goal

    >> 앱개발 종합반의 수강 목적 중 가장 많이 차지하는 목적은 '부수입 창출'

     

    game_users_goal

    >> 게임개발 종합반의 수강 목적 중 가장 많이 차지하는 목적도 '부수입 창출'


    3. 데이터 시각화하기

     

    ▶ 분석한 데이터 시각화하기

    #그래프 크기 설정 (인치)
    plt.figure(figsize=(8,6))
    
    #app 종합반 수강생 관심 분야
    plt.plot(app_users_goal.index,app_users_goal.values,color="red", label="app")
    
    #game 종합반 수강생 관심 분야
    plt.plot(game_users_goal.index,game_users_goal.values,color="blue", label="game")
    
    #범례
    plt.legend()
    
    #그래프 타이틀
    plt.title("앱 종합반, 게임 종합반 수강생의 관심사")
    
    #x축 레이블
    plt.xlabel('수강 목적')
    
    #y축 레이블
    plt.ylabel('수강생 수')
    
    #그래프 보여주기
    plt.show()


    4. 최종 결론

     

    ▶ 추가 결론

    '부수입 창출'게임개발 종합반과 앱개발 종합반을 수강 신청자들의 공통 관심사였음


    0. 가설 설정하기

     

    ▶ 가설2 : 할인은 정말 효과적인 선택일까?

    결제 마지막 페이지에서 이탈률이 높은 상황

    결제 마지막 페이지에서 할인 쿠폰을 제공하면 결제율을 높여줄 것

    • 할인을 해준 그룹할인을 안 해준 그룹결제전환율 확인하기 (할인 쿠폰 제공 여부로 AB테스트 진행)

    1. 분석할 데이터 가져오기

     

    ▶라이브러리 가져오기

    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt

     

    ▶ 스파르타 유저 데이터 읽어오기

    sparta_data = pd.read_table('/content/user_db1.csv', sep = ',')

    sparta_data.head()

    • user_id : 회원 고유 아이디
    • gender : 성별
    • age : 나이대
    • access_media : 수업 신청 경로
    • ★group : 할인 받은 여부 ( 0은 할인 받지 않은 자, 1은 할인 받은 자)
    • discouted: 할인의 종류

    2. 데이터 전처리 및 분석하기

     

    2-1) 할인 여부에 따른 결제 전환 데이터 세주기

     

    ▶ 할인받은 그룹의 데이터 세주기

    sum_of_students_by_discounted = sparta_data[sparta_data['group']==1]['user_id'].count()

     

    ▶ 할인받지 못한 그룹의 데이터 세주기

    sum_of_students_by_not_discounted = sparta_data[sparta_data['group']==0]['user_id'].count()


    2-2) 결제전환율 구하기

     

    ▶ [할인 여부에 따른 결제 인원 ÷ 12000명(실험 전체 인원)] * 100

    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 )


    3. 데이터 시각화하기

     

    ▶ 분석한 데이터 시각화하기

    #그래프 사이즈
    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()


    5. 최종 결론

     

    ▶ 결론2

    할인 적용 그룹의 신청율 46% 이고, 정가 구입 그룹의 신청율20% 

    할인 적용 그룹의 신청율정가 구입 그룹의 신청율보다 2배 이상으로 높았음

    따라서 고객의 결제 전환율을 높이기 위해서는 결제 마지막 페이지에 적절한 할인을 제시하는 것이 신규 수강생 모집에 효과적일 것으로 생각됨

    728x90

    댓글