본문 바로가기
TIL

내배캠 TIL 26일차

by ColorConeHead 2024. 1. 24.
반응형

1. 데이터 분석 과제

1) 날짜 전처리

log_date col을 pd.to_datetime 으로 그냥 사용 시.
YY-MM-DD의 구조로 읽어오지 않음.
df.log_date = pd.to_datetime(df.log_date, format='%y-%m-%d')​

위와 같이 format 인수를 추가해줘야 했다.

condition = (df['log_date'] >= '2019-02-01') & (df['log_date'] <= '2020-01-14')
df = df[condition]
df.info()​


혹시 몰라 condition을 정해 지정한 기간 외의 데이터가 있는지 확인했다.
그러지는 않았다.

df = df.assign(day_of_week = df['log_date'].dt.day_of_week)


log_date col을 기반으로 day_of_week col을 만들었다.
0이 월요일 6이 일요일이다.
assign 메서드가 있어서 사용하긴 했지만
그냥 df['day_of_week'] = df['log_date'].dt.day_of_week 를 선호한다.

 

 

2) Groupby로 통계량 집계

요일별로 푸시 횟수의 평균과 중간값을 추출한다.
push_count_by_dow = df.groupby('day_of_week')['push_count'].agg(['mean', 'median'])
push_count_by_dow = push_count_by_dow.sort_index()​

 

agg 인수를 리스트를 통해 여러개를 집어넣는다.
나중에 반복문 돌리기 쉽게 index를 숫자에서 바꾸지 않는 듯 하다.

 

 

3) Bar chart 시각화

요일별 평균을 bar chart로 시각화한다.

push_count_by_dow["mean"].plot.bar()

plt.show()​

사실 나는 pandas에 내장된 plt를 사용하는 것을 선호하지는 않는다.
가이드라인으로 있으니 따를 뿐

과제 시작 초반에 to_datetime() 메서드에서 신경쓰지 못한 점을
그래프 개형이 예시와 다른 것을 보고 고칠 수 있었다.

 

 

뒷부분은 아직 통계 강의를 끝까지 수강하지 못하여 진행하지 못했다.

 

4)는 z-score 가 threshold(한계점, 임계값?) 을 넘으면 제거하는 전처리로

z표준화를 하고 그 값이 일정값을 넘으면 이상치로 간주하고

제거하는 함수를 짜는 것 같다.

sklearn.preprocessing에서 StandardScaler를 돌려서

그 값이 threshold를 넘으면 이상치를 제거하는

함수를 만드는 코드.

 

5)는 4)에서 짠 함수를 가지고 이상치를 제거하는 코드이다.

threshold = 3인데

표준정규분포에서 99% 신뢰구간의 z값이

2.58인 것으로 보아 굉장히 후하게 기준을 준 거 같다.

 

통계학 강의를 완강하면 더욱 수월하게

코드를 이해할 수 있을 거 같다.

반응형

'TIL' 카테고리의 다른 글

내배캠 TIL 28일차  (0) 2024.01.26
내배캠 TIL 27일차  (1) 2024.01.25
내배캠 TIL 25일차  (1) 2024.01.23
내배캠 TIL 24일차  (1) 2024.01.22
내배캠 TIL 23일차  (0) 2024.01.19