#03_01 [python] DataFrame

2022. 1. 21. 20:29개발의 흔적/데이터분석

# 강의 커리큘럼의 수강비율 조사해보기!

 

 

#data 불러오기

import pandas as pan
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'Malgun Gothic'

enroll =pan.read_csv('./week03/data/enrolleds_detail.csv')
enroll

 

enroll 

lecturesName = pan.read_csv('./week03/data/lectures.csv')    
lecturesName

 

lecturesName

#두 데이터set에서 lecture_id column이 같음 (sql로 따지면 서로의 foriegn key)

# -> 그래서 두 dataset을 가공 후  pandas의 DataFrame 으로 합쳐줄 것!

 

 

#enroll dataset 가공

 

enroll_detail = enroll.groupby('lecture_id')['user_id'].count()    #각 강의는 순서대로 저장되어있음/ user_id의 count는                                                                                        각      강의 들은 학생 수
enroll_detail

 

plt.figure(figsize=(22, 5))
plt.bar(enroll_detail.index, enroll_detail/157*100)
plt.title('강의에 따른 수강완료 학생 퍼센트')
plt.xticks(rotation = -60)
plt.xlabel('course')
plt.show()

 

# x축의 문자들이 현재 lecture_id로 나옴 ->이를 실제 강의이름으로 바꿔줄 것!

 

 

 

 

#new DataFrame 생성 후 가공

lectureCount = pan.DataFrame(enroll_detail)                                # pandas에서 enroll_data로 new DataFrame생성
lectureCount = lectureCount.reset_index()                                   #현재 index lecture_id -> 다시 지정
lectureCount =lectureCount.rename(columns = {'user_id' : 'count'}) #학생수 count한 것의 colume name이 user_id                                                                                             이므로 알맞게 새로지정

lectureCount

 

 

lectureFinal = lectureCount.join(lecturesName, on='lecture_id')   # lecture_id라는 공통 column을 기준으로 join 
lectureFinal

 

lectureFinal

#최종적으로 시각화

 


plt.figure(figsize=(22, 5))
plt.bar(lectureFinal['title'], lectureFinal['count']/157*100)
plt.xticks(rotation = 90)
plt.xlabel('강의명')
plt.title('수강생의 강의 목차별 수강비율')
plt.ylabel('percentage')
plt.show()

 

#2주차에서 3주차 강의로 넘어갈 때, 수강생의 약 15%가 강의 커리큘럼에서 하차하는 것을 볼 수 있다!

 

 

# 주요 point

 

lectureCount = pan.DataFrame(enroll_detail                               # pandas에서 enroll_data로 new DataFrame                                                                                              생성
lectureCount = lectureCount.reset_index()                                   #현재 index lecture_id -> 다시 지정
lectureCount =lectureCount.rename(columns = {'user_id' : 'count'}) 

                                                                                          #학생수 count한 것의 colume name이 user_id                                                                                             이므로 알맞게 새로지정

lectureFinal = lectureCount.join(lecturesName, on='lecture_id')   # lecture_id라는 공통 column을 기준으로 join