사전 캠프 TIL

12월 11일 TIL

meoca1257 2024. 12. 11. 18:00

 

데이터분석 5주차- 1~7

sparta_data 데이터 분석 자료 (1. ~ 5.)

 

 

1. 나이대별 수강률 합 구하기 

progress_rate_by_age = sparta_data.groupby('age')['progress_rate'].sum()

progress_rate_by_age

 

해석 : progress_rate_by_age를 만들 것 이다. sparta_data를 groupby한 것이 필요한데,

('age')별로 ['progress_rate']를 sum()합친것이 필요하다.

그럼 이제 progress_rate_by_age 값 띄워봐

 

결과.

 

 

2. 나이대별 수강생의 인원 구하기 

number_people_by_age = sparta_data.groupby('age')['_id'].count()

number_people_by_age

 

해석 : number_people_by_age를 만들 것 이다. sparta_data를 groupby한 것이 필요한데,

('age')별로 ['_id']들을 count()각각 센 것이 필요하다.

그럼 이제 number_people_by_age 값 띄워봐

 

결과.

 

3. 나이대별 수강율 구하기

average = progress_rate_by_age/number_people_by_age

average

 

해석 : average는 progress_rate_by_age에서 number_people_by_age를 나눈 것 이다.

그럼 이제 average 값 띄워봐

 

결과.

 

 

4. 중복되는 코드가 있으면 원하는 값 도출이 안됨

ex)

#그래프의 x축 눈금 설정

plt.xticks([10,20,30,40,50])

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

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

 

두 개의 코드가 혼합되어 있으면 그래프 x축을 10,20,30,40,50 으로 기재할지 x축은 "x축" y축은 "y"축으로 기재할지 모름

둘 중 원하는 코드만 남기고 하난 지워야함 

x축에 10,20,30,40,50 을 원하므로 plt.bar("x축", "y축")는 삭제해야함

 

중복되는 코드 그대로 기재됐을 때

 

plt.bar("x축", "y축") 코드 삭제했을 때

 

 

5. 관리 여부에 따라, 수강완료율 평균 구하기

 

managed_data_avg = sparta_data.groupby('managed')['progress_rate'].sum()/sparta_data.groupby('managed')['_id'].count()

managed_data_avg

 

해석: managed_data_avg 를 만들 것 이다. sparta_data를 groupby한 것이 필요한데, 

('managed')별로 ['progress_rate']를 더한 것에서 ('managed')별로 ['_id']를 각각 더한 것으로 나눌거야.

managed_data_avg 값 띄워봐

 

결과.

* groupby 함수를 활용하면, 원하는 컬럼을 기준으로 그룹을 묶을 수 있음

 

 

6. 코홀트 cohort 차트 가 왜 필요한가?

 

 

불편한 그래프 (한눈에 파악 어려움)

 

 

 

cohort (한눈에 파악 가능)

 

 

7. 데이터 전처리하기 

sparta_data 데이터 분석 자료 (7.~ )

7-1. created_at 열의 데이터가 시간 형식인지 확인

 

print(type(sparta_data['created_at][1]))

 

해석 : print해라 type을 sparta_data에서 created_at열 2번째 데이터의

결과 : <class 'str'> 

 

스트링 즉 문자형식으로 설정되어 있음 시간 형식으로 바꿀 필요성 느낌

 

format='%Y. %m. %d'
sparta_data['start_time'] = pd.to_datetime(sparta_data['created_at'], format=format,infer_datetime_format=True)
sparta_data.info()

 

해석:

format은 %Y년도. %m월. %d날짜 이다.

sparta_data에 start_time이란 열을 추가할 것인데, 이건 pd. 판다스를 사용한 to_datetime 명령어를 쓸거야 기준은 created_at에 있는 자료가 기준이야, 내가 지정한 format으로 만들건데 infer_datetime_format은 맞아.?(이해 덜됨)

이제 sparta-data.info() 값 띄워봐

 

결과.

start_time이란 열이 추가됐는데 이 열의 형식은 datetime64 형식이다. 즉 시간&날짜 형식임

 

* sparta_data.head()  대신 sparta_data.tail()를 기재했을 땐 이렇게 보임

 

 7-2) 수강 시작 주(week)열 추가

 

sparta_data['start_week']= sparta_data['start_time'].dt.isocalendar().week

sparta_data.tail()

 

해석 : sparta_data에 ['start_week'] 열 추가할거야. sparta_data에서 ['start_time']를 기준으로 하는데, dt.isocalendar()의 방식을 쓰고 기재 단위는 week야.

이제 sparta_data의 tail 끝 부분 띄워봐

 

결과: 

(참고 : 8월 22일은 2022년의 34주차가 되는 날)

 

7-2-1) 처음 수강 시작한 주 범위 확인하기

 

category_range = set(sparta_data['start_week'])

category_range

 

해석:  

category_range를 만들거야.  set데이터의 순서가 정해져있지 않고, 중복되지 않은 값이 필요한데 sparta_data의start_week에서 구할거야

category_range값 띄워봐

 

결과 : {31, 32, 33, 34, 35, 36}

 

7-1-2) 진도율을 강의 주차로 변경 하기

 

(1) 진도율 을 강의 주차로 변경

0주차 : 0 ~4 .11% 1주차 : 4.12% ~ 26.03% 2주차 : 26.04% ~ 41.10% 3주차 : 41.11% ~ 61.64% 4주차 : 61.65% ~ 80.82% 5주차 : 80.83% ~ 100%

 

(2) 범주화 할 데이터 리스트로 만들기

 

progress_rate = list(sparta_data['progress_rate'])

 

해석 : 이제 필요없지?

결과 : 

.....

 

(3) 범주를 구분하는 기준 및 라벨(수강 주차) 만들기

 

#범주를 구분하는 기준 bins 처음(0)과 끝(100) 잊지 말고 기입 해주세요!

bins = [0,4.11,26.03,41.10,61.64,80.82,100]

#구분한 범주의 라벨

labels labes=[0,1,2,3,4,5]

 

(4) 진도율에 따라 주차별로 변경하기

 

(4-1) 범주화 하기

#범주화에 사용하는 함수 pd.cut

cuts = pd.cut(progress_rate,bins, right=True,include_lowest=True, labels=labels)

cut

 

결과:

 

(4-2) 범주화 결과물을 테이블로 변경하기

 

#결과물을 테이블로 변경하기

cuts = pd.DataFrame(cuts)

cuts.tail()

 

(5) 기존 테이블에 현재 수강 주차 테이블 합치기

 

#concat() 함수를 이용하여, sparta_data 테이블과, cuts 테이블 병합 할수 있습니다 :)

sparta_data = pd.concat([sparta_data,cuts],axis=1, join='inner')

sparta_data.head()

 

해석: 강의 다시 듣자. axis와 join이 왜 들어가는지 모르겠다.

 

(6) 테이블 컬럼 이름 변경 하기

(시간이 없으니 사진 대체)

*** 잘 기억해두자

 

 

7-4) 데이터 분석

'사전 캠프 TIL' 카테고리의 다른 글

12월13일 TIL (사전 캠프 완)  (4) 2024.12.13
12월12일 TIL  (0) 2024.12.12
12월9일 TIL  (4) 2024.12.09
12월6일 TIL  (0) 2024.12.06
12월 5일 TIL  (2) 2024.12.05