개강 OT
캠프 커리큘럼
- 발제, 강의, 프로젝트, 면담, 취업준비로 구성되어 있음
- 발제: 집중해야 하는 내용 상세 안내 및 수행해야 하는 일 공유
강의
- 온라인 강의: 시간표와 진도에 따라 학습
- 실시간 강의: 시간표 일정에 맞춰 링크 접속 후 수강
학습방법과 질의응답
- 자기주도적 학습 지향
- 스택 오버플로우 등을 이용해 스스로 해결하려는 자세 가지기
- 개념 이해, 툴을 다루는 과정에서의 에러 등은 먼저 스스로 해결하려고 노력하기
- 적어도 주 80시간 이상 학습
- 매일 14시간(e.g. 09-23시) * 6일 = 84시간
- 아무리 해도 해결이 안 될 때에는 튜터님께 질문
출석 주의사항
- 12시간 이상 공부 필수
- 12시간 지난 뒤 퇴실을 누르지 않으면 입실을 제 시간에 했어도 결석처리되니 주의
기록과 회고
- 학습일지 블로그 생성 후 매일/매주 기록 남기기
- TIL(Today I Learned)
- 매일 저녁 작성
- 저녁 9시까지 구글폼으로 블로그 링크 제출
- 자신의 말로 학습한 내용을 정리하면 됨
- WIL(Week I Learned)
- 매주 일요일 작성
- 한 주를 마무리하며 매주 일요일 9시까지 구글폼으로 블로그 링크 제출
- 지난 일주일을 되돌아보고, 다음 일주일 동안 성장하기 위한 발판으로 삼기 위한 것
- 회고가 포함되어야 함
- 이번 한 주 동안 배운 것, 느낀 것, 잘한 것, 아쉬웠던 것 정리
- 데일리 스크럼
- 오늘 계획 팀원과 공유
- 진행 상황 공유하고 피드백 받기
- 일/주간 회고
- 팀원과 일간 또는 주간으로 진행한 활동에 대한 회고 진행
좋은 분석가란
- 호기심이 많은 사람
- 스스로 문제를 파고들 줄 아는 사람 → 자기주도학습
- 함께 밥 먹고 싶고, 일 하고 싶은 사람 → 커뮤니케이션 역량, 협업 능력
발제 자료 확인
커리큘럼 구성
CH 1 온보딩
sql 위주 기초 학습
- 전반적인 데이터 직무 이해
- Data, DB, Query, SQL 기본 개념
CH 2 프로그래밍 기초
Python 기초 문법을 활용한 프로그래밍 학습
- 조건문, 반복문과 같은 기본 개념
- Python의 Library의 개념 이해 및 실습
SQL+Python을 활용한 기초 프로젝트
- ON AIR 분석 절차를 기반으로 한 프로젝트
- ON AIR 분석 절차
- Objective: 목표(가설) 설정
- Necessary Data: 데이터 선정 → 데티터 수집, 정제
- Analytics: 분석 방법 결정 → EDA, 분석 틀
- Interpretation: 해석 및 검증
- Report: 보고
- 모든 과정에서 보고 대상자와 지속적인 커뮤니케이션 필요
- 제공되는 주제 및 데이터로 프로젝트 진행
CH 3 데이터 분석 입문
통계와 머신러닝을 활용한 데이터 분석
- 데이터 분석 및 과학을 위한 핵심 통계 지식 개념 학습
- ML을 활용한 지도 학습, 비지도 학습 이해
- 실습
머신러닝 기법을 활용한 데이터 분석 프로젝트
- 군집, 회귀, 분류 기법 활용한 주제 제공 및 특강 진행
CH 4 데이터 분석 숙련
BI(Business Intelligence)툴 활용한 대시보드 구축
- 태블로 활용 데이터 시각화와 탐색적 데이터분석
- 태블로(Tableau)
- 데이터 시각화와 비즈니스 인텔리전스(BI)를 위한 도구
- 다양한 데이터를 시각화 및 분석하고 이를 통해 인사이트를 도출
- 태블로 클라우드 환경에서 대시보드 구축
태블로 활용 대시보드 구축 프로젝트
- 기본 태블로 기능 활용한 대시보드 제작
- 비즈니스 지표에 맞는 대시보드 구축
CH 5 데이터 분석 심화
최종 프로젝트 관력 특강
- 데이터 수집 방법 등 강의 예정
- 최종 프로젝트 준비 과정 수행
CH 6 최종 프로젝트
최종 데이터 분석 프로젝트
- SQL, Python, My, Tableau 활용한 실제 분석
데일리 루틴
스크럼(Scrum)
- 팀 활동을 위해 팀이 자체적으로 조직하는 미팅
- 팀의 방향성과 진행 정도를 논의하고 인지해 보다 효율적인 목표 달성을 도움
오전 스크럼
- 오늘 하루의 일간 목표 설정
- 지켜야 할 작은 목표 설정
- 이번 주 초에 설정된 주간 목표를 달성한 과정을 회고
오후 스크럼
- 오전에 설정한 목표를 달성한 과정을 회고하며, 달성하지 못했다면 그 이유를 분석하고 논의
CodeKata
SQL 코드가타
36. 보호소에서 중성화한 동물
프로그래머스 코딩테스트 연습
SELECT
ai.animal_id
, ai.animal_type
, ai.name
FROM
animal_ins ai
LEFT JOIN animal_outs ao
ON ai.animal_id = ao.animal_id
WHERE
(ai.sex_upon_intake LIKE 'Intact%')
AND (ao.sex_upon_outcome NOT LIKE 'Intact%')
ORDER BY
1
;
- WHERE절에 LIKE 대신 정규 표현식(Regular Expression)을 이용해 검색하는 REGEXP를 사용해도 좋다고 함
- 정규표현식을 활용하여 기본 연산자보다 복잡한 문자열 조건을 걸어 데이터 검색 가능
- 하지만 정규표현식 검색을 이용할 때 절대 사용자에게 정규식 기능을 제공해서는 안 된다고 함
- 각종 오류를 포함할 수 있고 SQL Injection에 취약해질 수 있기 때문
- 정규표현식의 검색은 개발자가 미리 정한 테두리 안에서 행해져야 함
SELECT
ai.animal_id
, ai.animal_type
, ai.name
FROM
animal_ins ai
LEFT JOIN animal_outs ao
ON ai.animal_id = ao.animal_id
WHERE
ai.sex_upon_intake REGEXP 'Intact'
AND ao.sex_upon_outcome REGEXP 'Spayed|Neutered'
ORDER BY
1
;
35. 오랜 기간 보호한 동물(2)
프로그래머스 코딩테스트 연습
SELECT
ai.animal_id
, ai.name
FROM
animal_ins ai
LEFT JOIN animal_outs ao
ON ai.animal_id = ao.animal_id
WHERE
ao.datetime IS NOT NULL
ORDER BY
DATEDIFF(ao.datetime, ai.datetime) DESC
LIMIT
2
;
SELECT
ar.animal_id
, ar.name
FROM (
SELECT
ai.animal_id
, ai.name
, RANK() OVER (
ORDER BY DATEDIFF(ao.datetime, ai.datetime) DESC
)AS rnk
FROM
animal_ins ai
LEFT JOIN animal_outs ao
ON ai.animal_id = ao.animal_id
WHERE
DATEDIFF(ao.datetime, ai.datetime) IS NOT NULL
ORDER BY
rnk
) AS ar
WHERE
ar.rnk < 3
;
Python 알고리즘 코드가타
1. 두 수의 차
프로그래머스 코딩테스트 연습
def solution(num1, num2):
if (-50000 <= num1) & (num1 <= 50000) & (-50000 <= num2) & (num2 <= 50000):
answer = num1 - num2
else:
answer = "num1, num2 제한사항을 확인해주세요."
return answer
- 문제에 써져 있는 제한 사항은 뭘까?
- 제한 사항은 테스트에서 정해준 것으로 그 범위 안에서 TestCase가 주어지는 거라고 함
- 예를 들어 이번 문제의 제한 사항이 의미하는 건 num1과 num2가 -50000보다 크거나 같으며 50000보다 작거나 같은 값 안에서 무작위로 주어진다는 것
- 제한 사항이 지켜지지 않는 문제들이 간혹 있으므로 구현하지 않는 편이 좋다고 함
- Lambda를 이용해 한 줄로 간단하게 풀 수 있음
- 람다식(lambda expression), 람다함수(lambda function)는 익명 함수(anonymous function)를 표현하는 방법임
- 익명 함수는 이름이 없는 함수를 뜻함
- 람다식 == 이름이 없는 익명 함수
- 변수에 할당하거나 다른 함수(map, filter, sorted 등)의 인자로 전달 가능
- 함수를 정의할 때 함수의 이름을 명시적으로 지정하지 않고 필요한 매개변수와 함수 본문만을 사용하여 함수를 생성하는 것을 의미
- 특정 기능을 수행하는 함수들을 한 줄로 작성할 수 있어 주로 간단한 작업을 수행하는 함수나 일회성으로 사용되는 함수를 정의할 때 사용
- 함수를 간단하게 표현할 수 있어 코드를 더 간결하게 만들 수 있음
- 주로 한 줄로 간단한 연산을 수행하는 함수를 정의할 때 사용
solution = lambda num1, num2 : num1 - num2
직무 스터디
데이터 사이언티스트 조사
온라인 강의 학습
SQLD 자격증 챌린지
1주차 학습
2주차 학습
엑셀보다 쉽고 빠른 SQL
1주차 복습
회고
- 첫 날이라 아직 뭐가 뭔지 잘 모르겠음
- 카메라, 마이크 설정 다시 해야 함 → 팀원분들이 잘 안들리신다고 함
- 주말에 python 코드가타 좀 따라잡아야겠음