4차산업혁명의 일꾼/데이터 크롤링과 파이썬

[왕초보] 마케터, 기획자를 위한 실전 데이터 분석 4주차[파이썬,python] -스파르타코딩클럽

르무엘 2023. 4. 11. 00:30

[왕초보] 마케터, 기획자를 위한 실전 데이터 분석 4주차[파이썬,python] -스파르타코딩클럽

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

 

결측치 확인 하기

sparta_data.isnull().sum()

결측치 제거하기

sparta_data = sparta_data.dropna()

 

광고 효율이 나지 않는 매체를 찾아라!

#라이브러리 불러오기
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.bar(access_media.index,access_media.values)

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

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

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

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

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

 

시각화 한 스푼 더 떠먹기!

#color ="색상"으로 바 색상을 지정 할수 있어요!
plt.bar(X, Y,color='원하는 색상 컬러')

막대 그래프 색 변경 함께 해보기

#라이브러리 불러오기
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.bar(access_media.index,access_media.values,color="원하는색상")

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

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

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

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

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

테두리 색 및 두께 변경하기

#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()

 

 

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

 

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

 

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

 

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

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

 

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

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

 

할인은 정말 효과적인 선택일까? _ 데이터 분석 및 시각화

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

 


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

 

 

 

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

 

#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()
LIST