반응형
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 |