카테고리 없음

12월10일 TIL

meoca1257 2024. 12. 10. 17:47

***** 참고

그래프 한글 깨질 때 

1) 새 코드에 코드 기입 후 ctrl enter

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

 

2) 런타임 -> 세션 다시 시작

 

3) 진행중인 코드에 기입 후 ctrl enter

import matplotlib.pyplot as plt
plt.rc('font', family='NanumBarunGothic')

 

 

 

데이터분석 3주차-숙제

 

목표 : 수강생의 즉문즉답의 수요가 많은 요일을 알아내서 튜터님의 수를 요일에 따라 적절히 배치

 

가설: 수강생들의 수업 완료 시간대는 주로 한가한 주말일 것이다

⇒ 즉문 즉답을 하기 위해선, 수강 완료가 되어야 합니다! 그러니, 요일별 수강완료 수강생의 수를 구해봅시다!

 

11) 문제 정의 및 가설 설정

2) 데이터 분석을 위한 기본 설정

3) 데이터 분석 수행

4) 분석 결과 시각화

5) 최종 결론 도출

 

 

(1) Pandas 라이브러리 및 데이터 불러오기

#Pandas 사용 선언하기

import pandas as pd

#데이터 불러오기

sparta_data = pd.read_table('데이터 경로',sep=',')

 

(2) 시간 데이터 전처리 해주기

format='%Y-%m-%d %H:%M:%S'
sparta_data['done_date_time'] = pd.to_datetime(sparta_data['done_date'], format=format, errors='coerce')
sparta_data.head() 

sparta_data.head() 는 확인용

 

(3) 요일 추가하기

sparta_data['done_date_time_weekday'] = sparta_data['done_date_time'].dt.day_name()

sparta_data.tail(5)

 

(4) 요일 별 수강완료 수강생 수 전처리 하기

# 요일 별 수강완료 수강생 수 전처리 하기

weeks = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']

weekdata = sparta_data.groupby('done_date_time_weekday')['user_id'].count()

weekdata = weekdata.agg(weeks)

weekdata

 

 

(5) 그래프 그리기

#matplotlib 사용 선언하기

import matplotlib.pyplot as plt

plt.rc('font', family='NanumBarunGothic') # 한글 깨짐을 방지시켜줘요 !

 

  요일 별 수강완료 수강생 수 라인 그래프 그리기

# 그래프 사이즈

plt.figure(figsize=(10,5))

# 그래프 x 축 y 축

plt.bar(weekdata.index, weekdata)

# 그래프 명

plt.title(' 요일별 수강 완료 수강생 수 ')

# 그래프 x 축 레이블

plt.xlabel(' 요일 ')

# 그래프 y 축 레이블

plt.ylabel(' 수강생 ( 명 )')

#x 축 레이블을 90 도로 변환

plt.xticks(rotation=90)

# 그래프 출력

plt.show()

 

결과: 요일 별 수강 완료 수강생은 주말이 아닌 평일 화요일과 월요일이 가장 많아 화요일과 수요일 튜터 추가 배치 필요

 

 

 

 

데이터 분석 4주차-1

수업 목표 

1. 문제 해결을 위해 가설을 세울 수 있다

2. 가설을 데이터 기반으로 검증 할수 있다 .

3. 그래프를 그려 인사이트를 쉽게 찾을 수 있다 .

4. 분석한 데이터 결과를 기반으로 의사 결정을 할 수 있다

 

의뢰 : 

 

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

 

데이터 분석 시작

 

- Pandas 사용 선언하고 수강 데이터 가져오기

import pandas as pd

import matplotlib.pyplot as plt

분석할 데이터 불러 오기

sparta_data = pd.read_csv(' 파일경로 ')

 

데이터 분석 4주차-2

 

문제 파악: 

 

게임개발 종합반의 전체 광고 효율을 살펴보았는데 회사에서 사용한 광고 비용에 비해 매출까지의 효율이 나타나지 않고 있습니다 .

 

원하는 결과 :

 

가장 효율이 나지 않는 광고 매체를 찾아서 예산을 줄이고 다른 매체에 예산을 늘려 , 같은 비용 대비 광고 효율을 높이 고싶습니다 .

 

* 좋은 가설

   1. 풀고자 하는 문제의 방향성과 일치하는 가설 2. 테스트 가능한 가설 3. 액션으로 이어질 수 있는 가설

 

문제 해결을 위해 세운 가설 확인하기

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

 

그럼 데이터분석은 무얼 먼저 해보아야 할까요 ?

일단은 어떤 광고가 효율이 좋고 나쁜지 데이터를 통해 확인해봐야겠군요

* 계산의 편의를 위해 , 모든 광고 매체에 같은 비용을 쓰고 있다고 가정

 

-데이터 읽기 및 필요한 데이터 살펴 보기

 

# 표의 상단 5 개 데이터 읽기

sparta_data.head()

# 표의 마지막 5 개의 정보를 보려면 , tail() 이라는 것도 이용할 수 있어요 !

sparta_data.tail()

 

가설을 검증 하기 위해 우리가 알아야 할 것은 무엇일까요 ~?

수업 신청 경로 별 수강생의 인원

user_id : 회원 고유 아이디

access_media : 수업 신청 경로

 

******

여기서 잠깐 꿀팁 !

데이터 분석시 필요한 결측치 처리 다시 보기 !

(1) 결측치란 ? 실세계 데이터는 다양한 원인 때문으로 , 누락 데이터를 포함하고 있습니다 .

데이터에서 None, NaN, 빈칸으로 표시되는 것들이 바로 결측치 입니다 .

 

(2) 왜 결측치를 제거 해줘야 할까요 ?

빈데이터가 많으면 , 명확한 결과를 얻을 수 없습니다 .

그래서 데이터 분석 전 반드시 , 결측치를 제거 해줘야 해요 !

 

(3) 어떻게 결측치 제거를 해주면 좋을까요 ?

raw 데이터에서 결측치 제거 하는 방법에 대해 알아 봅시다 !

 

 데이터 확인 하기 ⇒ 결측치 확인 하기 ⇒ 결측치 제거하기

 

1) 데이터 확인하기

sparta_data.info()

 

 

2) 결측치 확인 하기

sparta_data.isnull().sum()

 

3) 결측치 제거하기

sparta_data = sparta_data.dropna()

⇒빈 데이터 값이 있다면 , 그 행을 삭제 시켜줍니다 .

 

 

데이터 분석 4주차-3

 

1) 데이터 분석하기

⇒유입된 광고 매체에 따라 수강생의 수의 합계를 구할 필요 있겠죠 ?

⇒ “ 유입 경로 별 ” 학생 수를 구하려면 어떤 메서드를 쓰는게 좋을까요 ?

 

유입 광고 매체 “ 별 ” 로 수강생 수를 구해야하니까 grouby 와 count() 를 이용하면 좋겠군요

# 수업 신청 경로 기준 수강생수 합계

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

access_media

 

 

2) 그래프로 시각화 하기

 

(1) [ 코드스니펫 ]- matplotlib, numpy 사용 선언하기

import matplotlib.pyplot as plt

import numpy as np

plt.rc('font', family='NanumBarunGothic') 

 

(2) [ 코드스니펫 ]- 바 그래프 그리기

#plt.figure(width, height) : 넓이와 높이 만큼 이미지를 생성한다는 것을 말해줍니다 !

plt.figure(figsize=(6,6))

# 각각 어떤 값이 들어가야 하는지 입력해 볼까요 ?

#plt.bar(X 축값 , Y 축값 )

plt.bar("x 축 기입 " ,"y 축 기입 ")

# 그래프의 제목

plt.title(' 수강생 별 수강 신청 경로 ')

# 그래프의 x 축 라벨 이름

plt.xlabel(' 수강 신청 경로 ')

# 그래프의 y 축 라벨 이름

plt.ylabel(' 수강생 수 ')

#x 축 눈금의 글씨의 각도 변경을 위해

plt.xticks(rotation=" 원하는 각도 ") 를 이용해요 !

#x 축 눈금의 글씨를 45 도 회전

plt.xticks(rotation=45)

# 그래프를 화면에 나타나도록 합니다 .

plt.show()

 

(3) 완성 코드 및 완성된 그래프

#plt.figure(width, height) : 넓이와 높이 만큼 이미지를 생성한다는 것을 말해줍니다 !

plt.figure(figsize=(6,6))

#plt.bar(X 축값 , Y 축값 )

plt.bar(access_media.index,access_media.values)

# 그래프의 제목

plt.title(' 수강생 별 수강 신청 경로 ')

# 그래프의 x 축 라벨 이름

plt.xlabel(' 수강 신청 경로 ')

# 그래프의 y 축 라벨 이름

plt.ylabel(' 수강생 수 ')

#x 축 눈금의 글씨를 45 도 회전

plt.xticks(rotation=45)

# 그래프를 화면에 나타나도록 합니다 .

plt.show()

 

3) 결론 도출하기

가장 효율이 나지 않는 광고는 옥외 광고로 같은 금액을 모두 인스타그램에 집행한다면 기존 대비 최대 (2444-379) / 379 = 544% 의 광고 효율을 증대시킬 수 있는 것으로 확인

 

 

데이터 분석 4주차 -4

 

1) 그래프 디테일 바꾸기

 

막대 그래프 색 변경 하기

#color =" 색상 " 으로 바 색상을 지정 할수 있어요 !

plt.bar(X, Y,color=' 원하는 색상 컬러 ')

→ plt.bar(access_media.index,access_media.values,color=" 원하는색상 ")

 

각 바 마다 다른 색 입히기

#alpha는 색의 투명도를 조절 하고 싶을때 씁니다! :)

# #hex나 rgb로도 색상 표현도 가능해요!

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=원하는 두께)

 

그래프 폰트 크기 바꾸기

#fontsize="원하는 크기"로 폰트 사이즈를 조절 할수 있어요!

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

 

그래프 각 바의 수치 나타내기

#그래프를 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.barh를 이용하면, 서로 축 변경이 가능 하답니다 :)
plt.barh(access_media.index,access_media.values, color="g")

 

 

전체코드

#라이브러리 불러오기
import pandas as pd
import matplotlib.pyplot as plt
plt.rc('font', family='NanumBarunGothic')

#분석할 데이터 불러오기
sparta_data = pd.read_csv('파일경로')

#데이터 확인하기
sparta_data.tail()

#수업 신청 경로를 기준으로 수강생수 합계
access_media = sparta_data.groupby('access_media')['user_id'].count()

#plt.figure(width, height) : 넓이와 높이 만큼 이미지를 생성한다는 것을 말해줍니다!
plt.figure(figsize=(6,6))

#plt.bar(X축값, Y축값)
plt.barh(access_media.index,access_media.values, color="g")

#그래프의 제목
plt.title('수강생 별 수강 신청 경로')

#그래프의 x축 라벨 이름
plt.xlabel('수강생 수')

#그래프의 y축 라벨 이름
plt.ylabel('수강 신청 경로')

#x축 눈금의 글씨를 45도 회전
plt.xticks(rotation=45)

#그래프를 화면에 나타나도록 합니다.
plt.show()

 

 

 

데이터 분석 4주차-5

 

1) 배경 및 가설 세우기

 

2) Pandas, matplotlib 사용 선언하고 수강 데이터 가져오기

 

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rc('font', family='NanumBarunGothic') #한글 깨짐 방지 글꼴 설정

 

분석할 데이터 불러 오기

sparta_data = pd.read_table('파일경로',sep=',')

 

 

3) 우리가 필요한 데이터는?

 

(1) 표 읽기 및 필요한 데이터 살펴 보기

 

#표의 상단 5개 데이터 읽기
sparta_data.head()

 

가설을 검증 하기 위해 우리가 알아야 할 것은 무엇일까요?

 : 각 수업 별 수강 신청 인원

 

4) 데이터 전처리하기

 

(1) 각 강의의 신청자 총합 구하기

#각 수업에서 1(수강 신청) 한 사람의 수 세기
sum_of_students_by_class = sparta_data[sparta_data==1].count()

 

 

(2) 불필요한 “user_id” 부분 제거하기

#테이블.drop("삭제할 행/열")을 통해 데이터를 삭제 할수 있습니다.
sum_of_students_by_class = sum_of_students_by_class.drop('user_id')
sum_of_students_by_class

 

 

5) 그래프로 시각화 하기

 

[코드스니펫]- 바 그래프 그리기


#그래프 사이즈 설정
plt.figure(figsize=(10,5))

#각각 어떤 값이 들어가야 하는지 입력해 볼까요?
#plt.bar(X축값, Y축값)
plt.bar("x축 기입" ,"y축 기입")

#그래프 타이틀
plt.title('게임개발 종합반 신청한 학생 수강이력')

#x축 레이블
plt.xlabel('강의')

#y축 레이블
plt.ylabel('수강생(명)')

#그래프 보여주기
plt.show()

 

완성 코드 및 완성된 그래프

#그래프 사이즈 설정
plt.figure(figsize=(10,5))
#그래프 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()

 

 

6) 결론 도출하기

 

게임 종합반에 가장 관심이 많았던 고객은, 앱개발 종합반 수강생

 

 

 

[최종코드] 게임개발 종합반을 재구매로 선택하는 내부 고객군을 찾아라!

 

#라이브러리 불러오기
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rc('font', family='NanumBarunGothic') #한글 깨짐 방지 글꼴 설정

#데이터 불러오기
sparta_data = pd.read_table('파일 경로',sep=',')
sparta_data.head()

#각 수업에서 1(수강 신청) 한 사람의 수 세기
sum_of_students_by_class = sparta_data[sparta_data==1].count()

#필요하지 않는 데이터 삭제 하기
sum_of_students_by_class = sum_of_students_by_class.drop('user_id')

#그래프 사이즈 설정
plt.figure(figsize=(10,5))

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

 

 

 

데이터 분석 4주차-6

 

06. 패키지 상품 기획하기_ 추가 가설 시각화 하기

 

1) 배경 및 가설 세우기

 

앱 종합반과 게임 종합반 신청자의 공통 관심사는 중 가장 큰 비율을 차지하는 것은

부수입 창출일 것이다.

→ 둘 다 부수입을 창출할 수 있는 주제이니 애초에 부수입에 관심이 있는 인원이 수강신청 했을 듯 합니다! 이 내용을 데이터 분석으로 확인해봅시다!

 

2) Pandas, matplotlib 사용 선언하고 수강 데이터 가져오기

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rc('font', family='NanumBarunGothic') #한글 깨짐 방지 글꼴 설정

 

분석할 데이터 불러 오기

#수강 데이터 가지고 오기
sparta_data_app = pd.read_table('파일 경로',sep=',')
sparta_data_game = pd.read_table('파일 경로',sep=',')

 

3) 우리가 필요한 데이터는?

#표의 상단 5개 데이터 읽기
sparta_data_app.head()

 

4) 데이터 분석하기

⇒ 수강 신청 목표에 따라 수강생의 수의 합계를 구할 필요 있겠죠?

⇒ “수강 신청 이유 ” 학생수 구하려면 어떤 메서드를 쓰는게 좋을까요? 🤔

그렇죠 바로, groupby 와, count()를 이용하면 좋겠죠!

 

#수업 신청 목표 기준으로 수강생 수 합계
app_users_goal= sparta_data_app.groupby('goal')['user_id'].count()
app_users_goal

 

 

#수업 신청 목표 기준으로 수강생 수 합계
game_users_goal= sparta_data_game.groupby('goal')['user_id'].count()
game_users_goal

 

5) 시각화 하기 (한 화면에 여러 그래프 겹쳐 그리기)

(1) [코드스니펫]- 바 그래프 그리기

 

#그래프 크기 설정 (인치)
plt.figure(figsize=(8,6))

#x축 y축 설정을 동일하게 해주고, color와, label을 추가 해주시면 됩니다. 참 쉽죠?

#app 종합반 수강생 관심 분야 
plt.plot("x축 기입" ,"y축 기입",color="red", label="app")
#game 종합반 수강생 관심 분야
plt.plot("x축 기입" ,"y축 기입",color="blue", label="game")


#각 그래프의 범례는 .legend()을 이용하여 만들어 줍니다! :)
plt.legend()

#그래프 타이틀
plt.title("앱 종합반, 게임 종합반 수강생의 관심사")
#x축 레이블
plt.xlabel('수강 목적')
#y축 레이블
plt.ylabel('수강생 수')

#그래프 보여주기
plt.show()

 

 

(2) 완성 코드 및 완성된 그래프

#그래프 크기 설정 (인치)
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()

 

 

6) 결론 도출하기

앱 개발, 그리고 게임 종합반 신청자의 공통 관심사는 “부수입” 창출

 

 

[최종코드] 앱 종합반 수강생과 게임 종합반 수강생의 가장 큰 수강 목적을 찾아라!

#라이브러리 불러오기
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()
sparta_data_game.head()

#목표에 따라 유저수 카운트 하기
app_users_goal= sparta_data_app.groupby('goal')['user_id'].count()
game_users_goal= sparta_data_game.groupby('goal')['user_id'].count()

#그래프 크기 설정 
plt.figure(figsize=(10,8))

#각 강의별 유저 관심
plt.plot(app_users_goal.index,app_users_goal.values,color="red", label="app")
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주차-7

 

1) 배경 및 가설 세우기

결제 마지막 페이지에서 할인 쿠폰을 제공하여 금액적으로 구매 결정에 걸림돌을 제거해준다면 결제율을 높일수 있을 것이다.

 

2) Pandas, matplotlib 사용 선언하고 수강 데이터 가져오기

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rc('font', family='NanumBarunGothic') #한글 깨짐 방지 글꼴 설정

 

분석할 데이터 불러 오기

sparta_data = pd.read_table('파일 경로',sep=',')

 

3) 우리가 필요한 데이터는?

표 읽기 및 필요한 데이터 살펴 보기

 

#데이터 하위 5개 정보 읽어 오기
sparta_data.tail()

 

 

 

데이터 분석 4주차-8

 

1) 데이터 분석하기

step 1) 할인을 받아 결제한 사람과, 정가 결제 한 사람의 인원 수 구하기

⇒ group이라는 열에서 1인 숫자를 count 즉, 세면 되겠죠!

 

#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

=> 5654

 

# 동일한 방법으로 할인혜택을 받지 않는 고객을 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

=> 2474

 

 

step 2)각 그룹의 결제 전환율 구하기

#각 결제 인원에서 실제 실험 인원인 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 )

=> 20.616666.. 47.11666...

 

2) 시각화 하기

[코드스니펫]- 바 그래프 그리기


#그래프 사이즈 
plt.figure(figsize=(10,5))
#x 그룹 지정하기 
x_list =["정가 구입 그룹", "할인 적용 그룹"]
#y 값
#각각 어떤 값이 들어가야 하는지 입력해 볼까요?
y_list = ["y축 첫번째 해당 값 기입" ,"y축 첫번째 해당 값 기입"]

#x,y값 설정
plt.bar(x_list, y_list)
#그래프 타이틀
plt.title('할인 여부 결제 전환율 비교 분석')
#x축 레이블
plt.xlabel('할인 적용 여부')
#y축 레이블
plt.ylabel('결제 전환율')
#그래프 보여주기
plt.show()

 

완성 코드 및 완성된 그래프

 


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

3) 결론 도출 하기

할인 적용 신청 그룹의 신청율이 46% 대 20%로

정가 구입 그룹 보다 월등히 높은 것을 확인할 수 있습니다

 

 

[최종코드] 마지막 결제 페이지의 할인 쿠폰은 구매 결정에 결정적일 것인가?

 

#라이브러리 불러오기
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#한글 깨짐 방지 글꼴 설정
plt.rc('font', family='NanumBarunGothic')
#데이터 불러오기
sparta_data = pd.read_table('파일 경로',sep=',')
#데이터 확인
sparta_data.tail()


#할인 혜택 받은 사람의 결제 수 
sum_of_students_by_discounted = sparta_data[sparta_data['group']==1]['user_id'].count()
sum_of_students_by_discounted
#할인 혜택 받지 않은 사람의 결제 수 
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 )


#그래프 사이즈 
plt.figure(figsize=(10,5))
#x 그룹
x_list =["정가 구입 그룹", "할인 적용 그룹"]
#y 값
y_list = [percent_of_students_by_non_discounted ,percent_of_students_by_discounted]
#x,y값 설정
plt.bar(x_list, y_list)
#그래프 타이틀
plt.title('할인 여부 결제 전환율 비교 분석')
#x축 레이블
plt.xlabel('할인 적용 여부')
#y축 레이블
plt.ylabel('결제 전환율')
plt.show()

 

 

 

데이터 분석 4주차-숙제&답안

 

증명하고자 하는 가설 :

할인율이 높으면 높을 수록 결제 전환율도 높을 것이다.

 

1) 필요한 라이브러리 불러오기

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

 

2) 파일 불러오기 및 표 읽기

sparta_data = pd.read_table('파일경로',sep=',')
sparta_data.head()

 

3) 데이터 분석하기

 

#각 할인별 신청한 수강생 수 구하기
students_discounted = sparta_data.groupby('discounted')['user_id'].count()
students_discounted

 

4) 그래프로 시각화 하기

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

5) 총 코드

#Pandas 라이브러리 불러오기
import pandas as pd

# 파일 불러오기
sparta_data = pd.read_table('파일 경로',sep=',')

#데이터 앞부분 확인 하기
sparta_data .head()

#할인율별 수강생 수 구하기
students_discounted = sparta_data.groupby('discounted')['user_id'].count()
students_discounted

#그래프로 시각화 하기

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

 

 

 

★ ★ ★ ★ ★느낀점 ★ ★ ★ ★ ★ 

 

1. 굳이 강의 자료 하나하나 복/붙하지 말자

 

 -> 각 강의에서 배운점 대전제만 기재하자 

 

 ex) 하단의 내용은 단순 그래프 너비 바꾸기 만 기재해 놓고 추후 복습할 때 TIL 확인하며 

그래프 너비 바꾸기를 읽고 내가 어떻게 작업하는지 유추해보고 막힌다 싶으면 강의자료 확인하는 식으로 

 

 

 

2. 형식이 제멋대로다. 짜임새 있게 작성하여 가독성을 높여보자.

 

3. 수강 속도가 올라갔다. 추후 다시 느려질 경우를 대비해 기존 코드 자료 중 외울 수 있는 부분들은 외우자.