내일배움캠프_데이터분석_2기/NOT_STUDY

하루 목표와 학습 계획 관리를 어떻게 하면 좋을까?

단ee 2024. 5. 13. 23:41

달성률 계산 코드 짜기


한국인이 좋아하는 두괄식 :) 24년 5월 13일 기준이다.

 

요즘 너어어어무 강의 진도를 못 따라간다.

자격증(ADsP) 공부 때문에 집중을 제대로 못해서라기엔 기본적인 학습 집중도도, 능률도 떨어진 게 체감된다.

그래서 이번에 시작해 볼 방법은, 일일 계획 별 달성률 체크하기.


일단 SQL 코딩테스트를 풀면서, 1과 0으로만 표현된 컬럼이 있다면 이 컬럼의 평균을 구하는 것으로 비율 계산을 할 수 있다는 것을 알게 되었다.

예를 들어, 아래와 같은 테이블이 주어질 경우, 여자는 1, 남자는 0으로 표시하였다고 가정하자.

U_ID SEX
A001 1
A002 1
A003 0
A004 1
A005 0
A006 1

전체 인원 중 여성의 비율을 계산한다고 하면,

여성의 수(= 4명) / 전체 인원(= 6명) 이므로 약 66.6% 의 비율을 구할 수 있다. 

 

이걸 SEX 컬럼에 대한 평균값을 구한다고 생각해보면,

AVERAGE = (1 + 1 + 0 + 1 + 0 + 1) / COUNT(SEX) = 4/6  가 될 것이고, 이는 위에서 계산한 비율과 같다. 

 

이 점에서 착안해 매일 작성하고 있는 시간대 별 계획 테이블에 계획 완료 여부를 표시하는 컬럼을 추가했다.

시간 블럭 하나 당 계획을 완료하면 1, 미완일 경우 0을 표시하는 방식이다. 식사시간은 양심상 카운트에서 제외했다 :)

그리고 이걸 가지고 평균을 계산해서 매일 계획 달성률을 기록하는 것이다! 

 

원래는 그냥 계산기 가지고 대충 계산하려고 했는데,
1이 몇 개 있는지 세기가 귀찮기도 하고 이왕 배운 Python과 pandas 라이브러리를 활용해보고자 코드를 짰다.

import pandas as pd
morning = pd.Series([1,1,1,0,0,0])
afternoon = pd.Series([1,0,0,0,0,1,1])
day = pd.concat([morning, afternoon])

avg_morning = round(morning.mean()*100,0)
avg_afternoon = round(afternoon.mean()*100,0)
avg_day = round(day.mean()*100,0)

print(f"오전 시간대 계획 달성률은 {avg_morning} % 입니다.")
print(f"오후 시간대 계획 달성률은 {avg_afternoon} % 입니다.")
print(f"오늘의 하루 계획 달성률은 {avg_day} % 입니다.")

그렇게 계산한 오늘(5/13)의 계획 달성률 : 

  • 오전 : 50%
  • 오후 43%
  • 하루 전체 : 46%

저조하다...... 일단 이 달성률을 최소 60% 까지는 끌어올리는 걸 목표로 해야겠다.

그렇게 어느 정도 목표 대비 달성이 눈에 들어오면 그 때 부터 조금씩 목표를 상향 조정해서, 최종적으로는 80~90%대의 달성률을 찍을 수 있도록 해봐야겠다.


추가로, 조금 더 자동화가 가능하지 않을까? 하는 생각을 했다.

코드로 한 번에 써내려갈 수는 없지만, 보아하니 왠지 input() 함수와 반복문을 이용하면 series를 하나씩 손으로 써줄 필요 없이 바로 계산 가능하게 만들 수 있을 거 같다. 모르긴 몰라도 노션에 임베드도 할 수 있을 것만 같다. 왠지...!

 

하나의 미니 사이드 프로젝트처럼 가지고 가면서 5월 안에 여기까지 코드로 구현해봐야겠다. 

그래도 알고리즘 코딩테스트 좀 풀었다고, 파이썬 좀 배웠다고 이만큼이나 코드를 쓸 수 있어져서 뿌듯하다!!