안녕하세요 늑대양입니다 :)
오늘은 [AI 데이터 사이언티스트 취업 완성 과정]의 둘째 날 일과를 정리하여 안내해드리도록 하겠습니다.
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/001.gif)
일과 시간 전 슬랙의 #공지사항 채널을 통해,
사전 개발환경 셋팅 및 [강의안내], [오늘의 시간표], [온라인 강의장] 에 대한 가이드 및 안내를 전달 받았습니다. (당신은 역시.. 천사...?!)
개발환경 셋팅:
Anaconda | Anaconda Distribution
Anaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine.
www.anaconda.com
- miniforge를 통한 설치 (애플 실리콘[M1, M2]의 경우)
- https://github.com/conda-forge/miniforge
GitHub - conda-forge/miniforge: A conda-forge distribution.
A conda-forge distribution. Contribute to conda-forge/miniforge development by creating an account on GitHub.
github.com
- VSC 설치 (선택사항)
- https://code.visualstudio.com/download
Download Visual Studio Code - Mac, Linux, Windows
Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.
code.visualstudio.com
추가적으로 오늘부터 온라인 강의장 및 강사님 강의를 통해, [프로그래밍 기초 : Python 강의] 학습이 시작됩니다.
Day 1. 에서 강사님이 파이썬에 대해서 강조 또 강조하셨던 것을 기억해봅시다!!
결국 코드를 짜야함!
파이썬이 매우 중요함!!!
코딩이 힘들게 느껴지면 초반부에 천천히, 차근차근, 꼼꼼하게 넘어가야함!
Day 2. 온라인 학습 범위:
- 23강
- 예상 학습 시간: 4:59:53
대주제(Part) | 중주제(Chapter) | 소주제(Clip) |
Part.1 데이터와 친해지기 | Chapter.01 일상 생활에서의 데이터 | CH01_01. 일상 생활 속의 데이터 |
Part.1 데이터와 친해지기 | Chapter.01 일상 생활에서의 데이터 | CH01_02. 생활 데이터 문해력 |
Part.1 데이터와 친해지기 | Chapter.02 기업에서의 데이터 | CH02_01. 기업에서의 데이터-지표 활용 |
Part.1 데이터와 친해지기 | Chapter.02 기업에서의 데이터 | CH02_02. 기업에서의 데이터-고객 분석 |
Part.1 데이터와 친해지기 | Chapter.02 기업에서의 데이터 | CH02_03. 기업에서의 데이터-UX 분석 |
Part.1 데이터와 친해지기 | Chapter.02 기업에서의 데이터 | CH02_04. 기업에서의 데이터-추천 및 알고리즘 |
Part.1 데이터와 친해지기 | Chapter.02 기업에서의 데이터 | CH02_05. 기업에서의 데이터_기업에서의 데이터 흐름 |
Part.1 데이터와 친해지기 | Chapter.03 데이터 직무 | CH03_01. 데이터 직무-데이터 분석가의 실무 |
Part.1 데이터와 친해지기 | Chapter.03 데이터 직무 | CH03_02. 데이터 관련 직종 |
Part.1 데이터와 친해지기 | Chapter.03 데이터 직무 | CH03_03. 데이터 분석 역량 |
Part.1 데이터와 친해지기 | Chapter.04 데이터 분석 트렌드 | CH04_01. 주요 데이터 분석 도구 |
Part.1 데이터와 친해지기 | Chapter.04 데이터 분석 트렌드 | CH04_02. 주요 데이터 시각화 도구 |
Part.1 데이터와 친해지기 | Chapter.04 데이터 분석 트렌드 | CH04_03. A/B 테스트 |
Part.2 파이썬 익숙해지기 | Chapter.01 파이썬 시작 | CH01_01. 파이썬 이해하기 |
Part.2 파이썬 익숙해지기 | Chapter.01 파이썬 시작 | CH01_02. 복잡한 설치가 필요없는 'Colab' |
Part.2 파이썬 익숙해지기 | Chapter.01 파이썬 시작 | CH01_03. Print 사용법 |
Part.2 파이썬 익숙해지기 | Chapter.01 파이썬 시작 | CH01_04. 변수에 대한 이해 |
Part.2 파이썬 익숙해지기 | Chapter.02 파이썬 기초 자료형 | CH02_01. 계산의 첫 단추 '숫자형' |
Part.2 파이썬 익숙해지기 | Chapter.02 파이썬 기초 자료형 | CH02_02. 텍스트 출력 '문자형' |
Part.2 파이썬 익숙해지기 | Chapter.02 파이썬 기초 자료형 | CH02_03. 집합 구조 '리스트' |
Part.2 파이썬 익숙해지기 | Chapter.02 파이썬 기초 자료형 | CH02_04. 시간의 표현 방법 |
Part.2 파이썬 익숙해지기 | Chapter.02 파이썬 기초 자료형 | CH02_05. 리스트와 비슷하지만 다른 '튜플' |
Part.2 파이썬 익숙해지기 | Chapter.02 파이썬 기초 자료형 | CH02_06. 딕셔너리 자료형 |
데이터 분석 기초:
Part.1 데이터와 친해지기:
권정*님 진행
데이터 분석 개념과 전반적인 내용에 대한 설명
Chapter.01 일생 생활 속의 데이터:
1. 일생 생활 속의 데이터
"데이터를 사용한다" > 그다지 어려운 일은 아님!
데이터를 사용하는 것은 고도의 트레이닝된 사람만? > 우리들도 데이터를 만들고 사용하고 있음
우리가 데이터의 주체임!!
데이터는 인류의 역사화 함께함 > 하루하루 생활하면서 데이터를 만들어감
ex) 오늘 난 동물 3마리를 잡았어!
ex) 핸드폰, 금융 기록, 심박수 등 신체 데이터 등등이 기록
ex) mbti 테스트, 설문, 사람의 질문에 답변, SNS 글, 사진, 좋아요 표시 등 모두가 데이터
일생 생활 속 데이터:
- 교육: 시험 및 수업성적, 기타자료
- 미디어: 기사 및 뉴스, 구인 공고 등
- 온라인 서비스 사용: 쇼핑, 게임, 메일, 음악 등 취미, 웹서핑
- 그 외 생활: 금융 거래, 기타
우리는 데이터를 잘 이해하고 있을까?
잘 사용하고 있는지는 한번 더 생각해보아야하는 주제 > 사용하는 데이터를 이해하고 제대로 활용하는 것!
데이터를 잘 활용하는 방법을 알아보자!!
2. 생활 데이터 문해력:
생활 속 데이터의 오해:
ex) 1940년대.. 보건전문가들이 소아마비와 아이스크림 섭취 간의 상관 관계를 발견?! > '소아마비 예방하려면 아이스크림 적게드세요!!' > 날씨라는 외생 변수가 두 변수에 공통으로 영향을 줬을 뿐... >>> 잘못된 판단
ex) x축, y축이 어떤 데이터인지는 확인하자!
데이터 문해력: 데이터로 말하고 듣고 읽고 쓰는 능력
데이터 이해의 기본:
- 출처 잘 읽기
- 데이터를 사용한 목적 이해
- 데이터 만들어진 내용 이해 (대부분의 데이터를 사용한 내용은 '집계'임을 이해하자!)
- 쓰여진 내용 외의 누락된 부분 파악 (상황을 고려)
데이터 활용은 '논리'를 기본으로함
데이터가 제대로 되어있는지, 허점은 없는지, 더 고려할 것은 없는 지 등을 함께 살펴봐야함
목적에 맞게 데이터가 사용되는지도 확인 필요
일상에서 한발짝 더 나가면 가능! > 데이터를 더 쉽게 더 제대로 사용 가능 > 사고를 더욱 넓힐 수 있음
참고도서:
데이터 분석가의 숫자유감 - 권정민 글/주형 그림 - 골든래빗 - 2021.08.10
생활 속에서 데이터를 잘 사용하는 법을 알아보았고
다음 강의 부터는 이런 데이터가 적극적으로 활용되고 있는 곳인 기업에서 데이터가 어떻게 활용되는지 알아보자!!
Chapter.02 기업에서의 데이터:
3. 지표 활용:
기업에서 데이터 사용을 크게 네 가지로 나눌 수 있음
그중 첫 번째가 지표 활용!!
업무 내 데이터 사용법:
- 지표 파악
- 고객 분석
- 사용성 분석
- 새로운 기능
좋은 지표란?: (Reference: Lean Analytics (엘리스테어 크롤 외, 2014, 한빛미디어)
- 비즈니스와 현 상황을 고려해서 적합한 지표 생성
- 회사의 단계와 목표가 잘 반영되어야 함
- 비율로 나타낼 수 있을 것
- 시간에 따른 비교가 가능한 형태로 만들 것
- 이를 통해 어떤 결론을 설명하고 다음 행동에 반영이 가능할 것
- 너무 많은 지표를 사용하지 말 것
4. 고객 분석:
기업은 고객에게 서비스를 제공하고 이윤을 창출
고객을 잘 이해하고 이에 맞는 서비스를 제공하는 것이 좋은 서비스를 만들어 나가는 데 필수적!!
다각도 분석을 위해, 데이터를 활용 가능
고객 분석:
- 이 제품을 사용하는 고객의 분포는 어떻게 되는가?
- 고객들이 가지고 있는 공통적인 특징이 있을까?
데이터를 통한 고객 이해:
- 다양한 고객 활동을 통합적으로 이해하기 위한 데이터 활용
분석 방안 사례:
- 기여도 분석: 구매 전환율, 방문 정도 등
- 코호트 분석(Cohort analysis): 유사 행동 집단의 그룹핑
- 고객 행동 패턴 분석
- 교차 분석: 서비스가 여러 플랫폼(온.오프라인 or 여러 서비스 or 웹/앱 등)에서 제공될 때, 데이터를 교차하여 보다 넓은 범위의 사용자 분석
cf) Cherry Picking:
체리 피킹(cherry picking)은 어떤 회사의 제품이나 서비스 가운데 비용 대비 효율이 뛰어나거나 인기 있는 특정 요소만을 골라 합리적으로 소비하려는 현상을 가리키는 경제 용어!
5. UX 분석:
UX(User experience): 사용자 경험 (사용성)
고객이 서비스를 잘 활용하고 있는지, 어느 부분에서 어려움을 느끼고 있는지를 세부적으로 다양한 방법으로 살펴보는 것을 의미
- 이 제품의 최종 목적은 어느 부분이며, 이를 위해서 주로 신경썼던 부분은 어디인가?
- 이 부분을 고객이 제대로 활용하고 있다는 것은 어떤 수치로 알 수 있을까?
- 서비스의 어느 부분에서 고객의 이탈이 일어날까?
데이터를 활용한 UX 분석:
목적:
- 서비스 사용자 페르소나 설정, 검층, 관찰
- 사용자의 행동 데이터를 통한 실제 상황 이해
- 실제 사용자의 UX를 이해해서 숨어있는 현상 파악
사용 방안:
- 상세 지표 해석: 페이지, 혹은 화면별 PV, 재방문 등
- User flow에 따른 Funnel(깔때기) 분석
- 활동 정보 상세 파악: 클릭, 터치, 스크롤, 체류시간 등
6. 추천 및 알고리즘:
데이터 분석, 모델링:
- 데이터를 활용하여 머신 러닝 및 예측 모델링 등을 사용, 추천 등의 고도화된 서비스 내 기능을 만들거나 분석 엔진을 만드는 과정?!
- 이게 전부는 아님 > 고급 분석을 사용하는 경우도 많지만..
추천 및 알고리즘을 통한 새로운 기능:
- 머신 러닝 등의 새로운 기술을 활용한 서비스를 만들거나 기능을 추가한다. (추천, 음성 인식 등)
- 자동으로 무언가를 처리해주는 엔진을 만든다(실시간 고객 분석 등)
추천:
대표적인 ex) 넷플릭스, 쇼핑몰, 이메일(이전 메일에 내용에 맞춰서 문장을 추천)
개인화 추천:
- 이것을 산 사람이 샀던 다른 물건
- 기존에 이거 산 지 오래 되지 않았나요?
- 이 것을 샀다면 이것도 좋아하실 거예요!
더 나은 큐레이션(Curation, 수집, 분류, 구조화하는 것):
- TOP 100 / 요일별, 날씨별, 시간별 음악 추천
- 메인 화면에 노출되는 제품 목록
이상 탐지(anomaly detection):
- 어떤 특정한 도메인에서 일반적으로 예상되는 특징을 따르지 않는 데이터나, 정상으로 규정된 데이터와 다른 특징을 가지는 데이터를 찾아내는 것
- 통계적 방법 및 머신 러닝을 통한 이상 탐지 적용 및 연구가 활발히 이루어지고 있음
사례:
- 금융 및 게임에서의 부정 거래 및 사기 파악
- 공장에서의 제품 불량, 공정 이상 사례 탐지
- 의료에서의 이상 패턴 감지 후 질병 등 진단
7. 기업에서의 데이터 흐름:
내부 데이터:
- Transaction
- Log: 실제 행동/상태 데이터 (상세한 정보 확인 가능)
- Metadata: 사용자와 상관없이 추가 서비스에서필요한 정보 (ex. 옷의 제품 번호, 옷의 가격, 특성, 상호, 색상 등등의 정보 모음)
- Data Mart
- 기타
외부 데이터:
- GA(Google Analytics 등과 같은 애널리틱스 툴, 마케팅 툴, 앱 순위, 사이트 통계 정보 등등, 크롤링 수집, 대시보드, 데이터 구매 등등으로 수집)
- 마케팅 툴
- 외부 통계 매체
- 기타
데이터 파이프라인:
- 데이터를 수집하고 관리하는 과정을 구성한 것
- 예전에는 ETL (Extract, Transform, Load)이라는 표현을 많이 사용
- 요즘에는 데이터 파이프라인!
데이터 파이프라인 구성 단계:
- Capture: 데이터 기록
- Process: 전처리
- Store: 적재
- Analyze: 분석
- Use: 분석된 데이터를 바탕으로 활용(대시보드 구성, 서비스 추천 등등)
Data science lifecycle:
서비스 로직 파악 > 문제 파악 > 필요한 데이터가 있는지 확인 > 없으면 데이터 파이프라인 파악 및 구성 > 데이터가 쌓이고는 있는데 파악이 안되면 빠진 부분 해결 > 필요한 데이터를 가공해서 분석(통계 분석, 모델링 등등) > 평가 > 기능 반영, 대시보드 구성, 의사 결정 등 데이터 활용
비즈니스 이해, 데이터 수집, 가공, 모델링, 개발 각각의 단계가 서로 유기적으로 구성 >> 데이터 라이프사이클
머신러닝 모델링의 흐름:
어떤 데이터를 갖고 머신러닝을 진행할지 문제 정의 > 훈련용 데이터 수집 > 필요한 형태에 맞게 전처리 > 훈련 > 만들어진 모델을 바탕으로 알고리즘 형태 구성 > 데이터 입력 > 예측 데이터 확인 > 평가 > 개선 > 추가 훈련 > 반복! 반복!
Chapter.03 데이터 직무:
8. 데이터 분석가의 실무:
기업에서 가장 많은 데이터를 다루는 데이터 분석가!
데이터 분석가라는 단어를 딱 들었을 때, 굉장히 멋있는 직업처럼 들림 (돈도 많이 번데... 소곤 소곤.. ㅇㅅㅇ...)
>> 사실 좀 거리가 있는 이야기 (사회를 움직이는 그런 거대한 것과는 거리가 좀 있을 수도 있음)
데이터 분석가의 정의:
- 조직이 더 나은 비즈니스 의사 결정을 할 수 있도록 데이터를 사용해서 돕는 역할
- 비즈니스 성과를 예측하고 개선하고자 컴퓨터 프로그래밍, 수학, 통계 등의 기법을 활용하여 데이터로 부터 결론(인사이트)을 이끌어냄!
- 업무 범위가 회사 별로, 부서 별로 천차만별
데이터 분석가의 분석에 필요한 시간:
데이터 가져오기: 19%
전처리: 26%
데이터 시각화:21%
모델 선택: 11%
모델 훈련: 11%
평가: 12%
모델 실행(배포, 적용): 11%
(7할은 허드렛일..ㅇㅅㅇ.. 나머지 3할 정도를 모델링 관련 작업..)
데이터 분석 관련 업무:
- 문제 정의 (여기에도 상당한 시간이 소요, 문제를 정의해서 던져주는 경우는 거의 없음)
- 데이터 협업 프로세스 정비 (데이터 라이프사이클, 프로세스 관련 협업)
- 데이터 파악 및 검증 (제대로된 데이터인지 확인 및 검증 과정 필요, 이 과정에서 빈틈이 있으면 나중에 큰일..)
- 데이터 탐색 (필요한 데이터 확인)
- 지표 관리 및 대시보드 만들기 (데이터 분석가가 어느정도 해야할 일)
- 주변에 데이터 문해력 전파 (모든 구성원이 데이터 관련 커뮤니케이션에 문제가 전혀 없으면 베스트지만 현실은 그렇지 못함)
- 등등.. (데이터와 관련된 문제 해결 프로젝트는 여러 분야, 부서에서 발생, 협업은 거의 필수적)
9. 데이터 관련 직종:
데이터 관련 직업 > 계속 빠르게 변화하는 중
- 데이터 분석가/과학자
- 데이터 엔지니어
- 그로스 해커
- 비즈니스 애널리스트
- 퍼포먼스 마케터
- 데이터 프로덕트 매니저
cf) 그로스 해킹(Growth hacking) - Reference: 위키백과
그로스 해킹은 창의성, 분석적인 사고, 소셜 망을 이용하여 제품을 팔고, 노출시키는 마케팅 방법으로 스타트업 회사들에 의해 개발되었다. 성장을 뜻하는 growth와 해킹이 결합된 단어로 고객의 반응에 따라 제품 및 서비스를 수정해 제품과 시장의 궁합을 높이는 것을 의미한다.
데이터 조직 형태의 다양성:
- DS Center of Excellence: 28%
- R&D: 22%
- Line of business (HR, Marketing, etc): 21%
- IT: 15%
- None of these: 13%
데이터 활용 분야의 증가:
- 데이터 종류의 증가
- 데이터 양의 증가
- 데이터를 기록하고 활용할 수 있는 기술의 증가
직무 포지션에 따른 업무가 혼재되어 있으므로, JD를 잘 확인하여 실제 어떤 업무를 담당하는지 확인 필요!!
10. 데이터 분석가의 역량:
Data scientist Venn diagram:
기술 인식 차이: (먼저 있는게 높은 퍼센트)
- What students learn: 파이썬, 머신러닝, 데이터 시각화, 확률 통계, 딥러닝
- What universities offer: 파이썬, 확률 통계, 머신러닝, 데이터 시각화, 고급수학
- What enterprises lack: 빅데이터 관리, 고급수학, 딥러닝, 엔지니어링 스킬, 머신러닝
Chapter.04 데이터 분석 트랜드:
11. 주요 데이터 분석 도구:
흔한 분석가 채용 공고:
자격요건:
- SQL, Python, R 등을 이용한 데이터 추출 및 가공 능력
- 기본적이 통계학, 실험 방법론 등에 대한 이해
- 코호트 분석, A/B 테스트, 퍼널 분석 등의 분석 방법론에 대한 이해 & 실무 적용 경험
- 개발자, 디자이너 등 다양한 직군의 동료들과 함께 서비스나 업무 프로세스에 실질적인 변화를 만들어 본 경험
우대사항:
- Appsflyer, Adjust 등의 어트리뷰션 툴을 사용한 경험이 있는 분
- Google Analytics, Firebase, BigQuery 등의 로그분석 툴 사용 경험이 있는 분
- 데이터 분석 환경을 구축하기 위한 파이프 라인을 만들고 관리한 경험이 있는 분
- 다양한 알고리즘을 활용하여 예측 분석을 위한 모델링을 해 본 경험이 있는 분
Python:
- 오픈소스 프로그래밍 언어
- 배우기 쉽고, 무료이며, 다양한 라이브러리가 있고, 어떤 환경에서든 사용할 수 있어서 여러 방면에서 널리 사용되고 있음
데이터 분석에서의 python:
- 프로그래밍 언어 중 배우기 용이하며, 다른 프로그래밍으로 확장 및 연계가 가능해서 사용자 증가 추세
- 과학 프로그래밍용으로 다양하게 활용할 수 있는 라이브러리들을 제공
- 데이터 처리 및 기본 통계: Numpy, SciPy, Pandas, Scikit-learn 등
- 데이터 시각화: matbplotlib, seaborn 등
R:
- 오픈소스 통계용 프로그래밍 언어
- 다양한 데이터와 호환성이 좋고 기존부터 통계 분석에 활용되었어서 관련 기능이 많음
R의 장점:
- 통계 및 비전공자에게 상대적으로 진입 장벽이 낮은 언어
- 시각화, 시스템화를 위한 각종 편의 도구 제공
- 오픈소스 기반이라 무료로 사용 가능
- 데이터 분석 관련 유용한 패키지 다수 제공 (tidyverse 등)
SQL:
RDBMS(Relational DataBase Management System, 관계형 데이터베이스)
- 데이터 용도에 따라 정리 되어 2차원의 테이블 형태(행-열)로 정리되어 있고, 각 테이블의 데이터 간에 관계를 맺음
SQL(Structured Query Language, 구조적 질의 언어)
- RDBMS의 데이터를 조회 및 관리하기 위해 만들어진 언어
- 프로그래밍 언어보다 직관적이고 데이터를 다양하게 다룰 수 있어서, 데이터를 사용하는 여러 분야에서 활용도가 높음
Google Analytics (Firebase):
- Google Analytics + Firebase = Google Analytics 4 (통합)
- 구글에서 제공
- 전체 웹 사이트의 54.6%에서 사용되며 트래픽 분석 도구 시장 점유율의 83.9%를 차지하는 웹/앱 분석 도구(W3Tech, 2021.01 기준)
- 웹/앱 로그를 이용한 상세한 트래픽 및 방문자 분석 제공
- 여러 직군에서 다용도로 활용
- 데이터를 깊이 있게 보기위해서는 유료 서비스 사용 필요
Excel (Spreadsheets):
- 표 형식으로 데이터의 조직, 분석, 저장을 가능케 하는 상호작용 컴퓨터 애플리케이션
- 셀 각각에 계산에 필요한 수치 자료를 입력하고 이를 참조하는 계산식이나 함수를 사용해 결과값을 구함
- 그래프 및 간단한 자료 관리(데이터베이스) 기능, 회계, 통계 처리 기능, 값 예측, 자동화(매크로) 기능
- MS Excel이 대표적이나 최근 Google Spreadsheet 등 여러 스프레드시트가 있음
어떤 도구를 선택해야 할까?
- Data visualization: R, Python, Visualization tools
- Modeling: R, Python
- Data processing: SQL, R, Python, Excel, Google Analytics
- Data acquisition: SQL (SQL-based query engine)
12. 주요 데이터 시각화 도구:
시각화의 필요:
숫자의 나열만으로는 파악하기 힘든 관계와 추세를 파악 가능
데이터 시각화:
세분화된 데이터를 쉽게 이해하며, 시각적으로 설득력 있고 유용한 정보로 전환 가능
데이터 시각화 활용 방안:
- 실적 파악
- 트렌드 이해
- 데이터의 빠른 이해를 통한 커뮤니케이션과 협업
- 빠르고 더 나은 의사 결정을 도움
- 보고서, 언론, 앱 등 다양한 용도에서 활용 가능
- 데이터 집계 내용과 동시 사용
Tableau:
- 전세계적으로 BI Dashboard 부문에서 가장 많은 고객사를 둔 시각화 솔루션
- 직관적이고 사용하기 쉬운 Drag & Drop 기반의 사용자 인터페이스
- 다양한 종류의 시각화 기능 및 인터랙션 제공
Google Data Studio:
- 구글의 데이터 시각화 도구
- 스프레드시트, 구글 애널리틱스, Google Ads, 빅쿼리, 유튜브 애널리틱스 등의 데이터를 쉽게 연결할 수 있음
- 빠르고 공유 및 관리가 용이함 (웹 베이스)
- 데이터 커넥터를 다양하게 지원 (RDBMS 등)
- 유저 관리 및 공동작업 용이
- 권한 관리 용이
Apache Superset:
- 아파치 재단 오픈소스 데이터 시각화 도구
- Airbnb에서 제작
- 무료
- 다양한 시각화 기능을 제공하며, 사용하기 쉬운 UX
- 다양한 데이터 소스 지원
- 다양한 계정 통합 방식 지원
Redash:
- 오픈소스 데이터 시각화 도구
- 무료 사용 가능
- 손쉬운 데이터 조회 및 시각화 적용 (SQL 쿼리 결괏값을 바로 시각화 가능)
- 다양한 데이터 소스 지원
Metabase:
- 오픈소스 데이터 시각화 도구
- 무료 사용 가능
- Adhoc한 데이터 탐색 및 대시보드화 용이 (SQL 쿼리 결괏값을 바로 시각화 가능)
- 다양한 데이터 소스 지원
- 속도가 빠르며, 탐색하기 편함
여러가지 시각화 도구 중, 현재 서비스 규모, 재정상태, 실제 사용할 사람들, 어떤 대시보드를 구성할 것인지, 우리가 사용하고 있는 데이터 소스가 어떤 것인지 등을 다방면으로 고려하여, 적재적소에 맞는 도구를 사용하면 대시보드를 만들고 유지하고 운영하는데 큰 도움이 됨!!
데이터 시각화 고려사항:
시각 체계 관련:
- 버블 차트에서의 원의 크기 (면적 자체는 직관적이지 않으며, 데이터에 대한 오해가 생길 수 있음)
- 여러 전주의적 특성(Preattentive attribute, 크기, 색상 및 모양을 도드라지게 하는 것)을 한 그래프에서 사용하면 혼란스러움
- 파이 차트, 도넛 차트의 왜곡 (각도가 뚜렷하게 구별되지 않음, 각도가 두 배라고 값이 두 배가 되지 않을 수 있음)
- 3차원 데이터 지표는 지양
- 색상 사용 고려 (너무 다양한 색상 사용은 지양)
대시보드 관련:
- 일관성 있는 그래프와 도표 사용
- 하나의 대시보드에 모든 것을 다 넣으면 혼란스러움
- 목적과 사용 내역 정의 후, 대시보드를 만들 것
13. A/B 테스트:
A/B 테스트란?
A/B 테스팅이란 임의로 나눈 두 집단에게 서로 다른 컨텐츠를 제시한 후, 두 집단 중 어떤 집단이 더 높은 성과를 보이는지 정량적으로 평가하는 방식으로 '무작위 비교 연구'라 불리는 방법을 서비스에 적용한 방법론
고객 분석을 위한 테스트:
고객 분석 방법:
- 종단적 연구: 시기 별 데이터를 비교하여 분석
- 코호트 분석 (ex. 이벤트 할 때/ 하지 않을 때를 비교, 계절별로 비교 등)
- 횡단적 연구: 같은 시기의 데이터를 나눠서 분석
- A/B 테스트
- 다변량 분석
A/B 테스트 과정:
- 실제 대상자를 두 그룹으로 나눈 후
- 두 가지 포맷의 테스트 자료(버튼, 이미지 등을 바꿈)를 만들어서 (변경점 이외에는 전부 동일하게 구성)
- 이를 A, B 그룹에 각각 제공
- 이에 따라 각 그룹이 얼마나 반응했는지를 판단
- 결과가 우수한 내용을 실전에 반영
테스트 진행 시, 고려사항:
- 테스트 목적 정립
- 어떤 지표로 평가할지 사전에 정립 (ex. 클릭 수, 체류 시간 등)
- 사용자에 대해 미리 파악 필요 (사용자의 숫자, 밸런스 있는 분포, 무작위 구분 보장을 어떻게 할 것인지)
- 테스트 결과 도출 중 변화 및 외부 간섭은 없었는지 파악
A/B 테스트의 배경:
내생성 vs 외생성:
- 내생성: 해당 시스템 내에서 결정되거나 생성되는 것
- 외생성: 시스템 밖의 요소로 결정되거나 생성되는 것
사용자의 행동:
- 많은 경우, 여러가지 요소가 복합적으로 작용함
- 외생성 및 고려하는 변수의 영향으로 명확한 요인 및 원인 분석이 어려움
- 많은 실제 상황(실무)의 경우, 내생성을 위한 시스템을 일부 요소만으로 구축하기 어려움
상관관계는 인과관계를 나타내지 않는다:
- 최대한 다른 요인을 제거함으로써 인과관계에 최대한 가까운 근거를 만들고자 함
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/009.gif)
Part.2 파이썬 익숙해지기
김현*님 진행
(강사님이 쿨하셔서 멋있으십니다..ㅇㅅㅇ..)
Chapter.01 파이썬 시작:
0. 파이썬 이해하기:
프로그래밍 언어란?
- 컴퓨터에 명령을 하기 위해 만든 언어
- Compiled Language:
- 소스코드를 기계어로 번역하여 실행파일을 만들어 실행
- PC에 실행 파일이 있어야 실행 가능
- C, C++ 등
- Interpreted Language:
- 소스코드를 한 줄씩 기계어로 번역해서 실행 결과를 보여줌
- 스크립트 언어라고도 함
- python 등
파이썬의 장점:
- 배우기 쉽다.
- 라이브러리가 방대하다.
파이썬 잘하는 법:
- 욕심내지 않기 (쉽게 지쳐 빨리 포기할 가능성 10000%...)
- 포기하지 않기
- 어려우면 한 귀로 듣고 한 귀로 흘리기
- 타이핑 많이 해보기 (눈으로 보는 것만으로는 절대 잘할 수 없고, 이해도 잘 안감)
해당 강의 특징:
- 실무에서 실제로 쓰는 내용 위주로 강의
- 중요 내용은 최소 세 번 반복 > 어렵다면 한귀로 듣고 한 귀로 흘려도 됨 (듣다보면 늘어가는 코딩 지식.. Okay..!)
1. 복잡한 설치가 필요없는 'Colab':
Colab이란?
- 구글에서 제공
- 파이썬 코드 작성, 실행 뿐만 아니라 코드 설명을 위한 문서 작성을 편리하게 할 수 있는 클라우드 서비스
Colab 실행을 위한 준비사항:
- google 계정
2. Print 사용법:
string은 양쪽에 따옴표 사용
큰 따옴표, 작은 따옴표 모두 사용 가능하며, 양쪽에 같은 따옴표 사용
3. 변수에 대한 이해:
변수:
- 데이터를 담은 박스에 이름을 붙여주는 일
변수명 = data:
- data = 변수명 >> 불가 (데이터 값은 항상 등호 오른쪽에 입력)
- 공백은 있어도 되고 없어도 됨
특징 및 규칙:
- 대소문자 구분
- 숫자로 시작하는 변수명은 사용 불가
- 공백 불가
- 기호 사용 불가 ( '_' 제외)
- 예약어 사용 불가 (if, date, del, global, class 등)
- 데이터 성격에 맞는 변수명을 사용하자!!
Chapter.02 파이썬 기초 자료형:
4. 계산의 첫 단추 '숫자형':
숫자 데이터 타입 | 사칙연산 | 복합 연산자 |
int, float | +, -, *, /, //, %, ** | x += 1 |
round | int | 변수와 상수 |
round(3.555) | int(3.555) | 상수: PI = 3.14 |
5. 텍스트 출력 '문자형':
문자 데이터 타입:
- str
- string은 양쪽에 따옴표 사용
- 큰 따옴표, 작은 따옴표 다 사용 가능하나, 양쪽에 같은 따옴표 사용
문자열 결합:
a = 'Hello'
b = 'World'
print(a + b)
print(a + ' ' + b)
print(a * 2 + ' ' + b)
print('-' * 70)
# 출력값
HelloWorld
Hello World
HelloHello World
----------------------------------------------------------------------
6. 집합 구조 '리스트':
리스트:
- 데이터를 모아 놓은 데이터타입
리스트 선언:
list_ = []
student = ['Susan', 'Jessica', 'John', 'Michael']
age = [19, 15, 16, 17]
리스트 인덱싱:
Length = 5 | |||||
'p' | 'r' | 'o' | 'b' | 'e' | |
Index | 0 | 1 | 2 | 3 | 4 |
Negative index | -5 | -4 | -3 | -2 | -1 |
리스트 값 변경:
student[1] = 'Jennie'
age[1] = 18
리스트 자르기:
student[0:2]
리스트 요소 추가, 제거, 정렬, reverse:
- append, insert, remove, pop, sort, sorted, reverse
중첩 리스트:
stu_list = [student, age]
7. 시간의 표현 방법:
datetime, now, today, strftime, strptime
라이브러리, 패키지, 모듈:
- 파이썬 파일
- 패키지 (파이썬 파일의 모음)
- 라이브러리 (패키지의 모음)
- 액셀의 함수와 비슷
- 나를 위해 누군가가 만들어 준 함수!!
datetime, now, today, date:
print(datetime.now())
print(datetime.today())
print(datetime.now().date())
strftime, strptime:
datetime.now().strftime('%Y년 %m월')
dt = '08/23/2022'
print(dt)
datetime.strptime(dt, '%d/%m/%Y')
datetime.strptime(dt, '%d/%m/%Y').strftime('%Y년 %m월 %d일')
8. 리스트와 비슷하지만 다른 '튜플':
튜플 자료형(Tuple):
- 리스트와 비슷하지만, 괄호가 [] 가 아닌 ()
- 리스트는 데이터를 추가/수정/삭제 할 수 있지만 튜플은 추가/수정/삭제 불가
집합 자료형(Set):
- 튜플과 비슷하지만 () 가 아닌 set()
- 순서가 없고, 중복을 허용하지 않음
리스트 (List) | 튜플 (Tuple) | 집합 (Set) | |
문법 | age = [19, 15, 16, 17] | age = (19, 15, 16, 17) | age = set([19, 15, 16,1 7]) |
추가/수정/삭제 | 가능 append, insert, remove, pop |
불가능 | 가능 add, update, remove |
순서 | 있음 age[0] |
있음 age[0] |
없음 |
중복 | 가능 | 가능 | 불가능 |
9. 딕셔너리 자료형:
딕셔너리(Dictionary):
{Key1 : Value1, Key2 : Value2, Key3 : Value3, ...}
{'name' : 'Jessica', 'age' : 19}
stu = {'name' : ['Susan', 'Jessica', 'John', 'Michael'], 'age' : [19, 15, 16, 17]}
stu['math'] = [50, 100, 70, 80]
del stu['math']
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/007.gif)
Day 2. 온라인 강의장 학습 범위 - 학습 완료!!
Day 2. 프로그래밍 기초 : Python
기본적으로 비대면 확정 > 교육 및 학습 환경 정리가 필요!!
온라인:
- 듀얼모니터
- 코딩실습 + 이론강의
오프라인:
- 마이크, 스피커 등 사용할 필요 X
- 줌 화면 볼 필요 X
- 전방의 화면을 보고 진행
개발환경 셋팅:
- 설치가 어려우면 쥬피터 노트북
- 설치가 괜찮으면 VSC
- 일단 진행은 주피터 노트북으로 진행
- EDA 프로젝트 까지는 로컬 환경 사용 > EDA 프로젝트 이후, 코랩으로 넘어감
아나콘다의 콘다 가상환경을 이용해서, 포맷할 일을 없애도록 하자!!!
실습 내용:
- -n 옵션을 통해, 이름 설정
- python 3.8의 경우, 굉장히 stable 한 버전이므로, 버전 통일하여 진행
이름을 변경할 경우, 고장나므로 차라리 새로 만들도록하자
환경변수를 다 뜯어고칠 수 있다면 도전해보도록 하자.. ㅇㅅㅇ..
윈도우의 경우, 계정 이름이 한글일 경우, 반드시 계정 이름을 영어로 변경하자!! >> 2000% 고통 (홀리.....)
주피터를 쓰는 방법은 해당 경로를 찾아가야함
인강(온라인 강의장)을 통해 선행학습을 진행 후, 질의응답 방식으로 진행!!
파이썬의 숫자 표현 범위는 무한대:
- 컴파일러 기반의 언어는 이미 정해져있다
- 변수를 사용할 때, 변수가 쓸 수 있는 범위가 정해져있다
- 인터프리터 언어(파이썬, R, 자바 스크립트 등)은 이론상 수치 표현범위가 무한대
- 실제로는 터지기 직전까지...ㅇㅅㅇ...
파이썬은 수치 연산에 약함 (특히 실수연산..)
ex) 3.14 -4 = -0.8599999999 >> 왜 이럴까? > 컴퓨터의 특수성 > 컴퓨터는 0, 1 밖에 모름
0.1을 이진수로 표현하면 무한소수가 나옴... (수의 체계가 다르기 때문에 어쩔 수 없는 것)
포트란(Fortran), C 등은 이런 실수 연산을 보완
수치연산 목적으로만 파이썬을 사용하면 딱히 좋지 않을 수도 있음
머신러닝, 딥러닝은 실수 계산을 엄청 많이함.. >> 파이썬에서 수치 계산만 많이 연구한 넘파이!!!
넘파이(C, C++로 구현)를 배워야 수치연산의 도구를 제대로 사용할 수 있다!!
특수연산 가능(제곱근, 몫, 나머지)
ex) 윤년 규칙 구하기!
조건: N이 4의 배수이면서, 100의 배수가 아니거나 400의 배수면 윤년이다.
나머지 연산과 '==' 을 활용하여 구현 가능
and >> 논리 연산자 중 하나
# 윤년 규칙 구하기
# 조건: year가 4의 배수이면서, 100의 배수가 아니거나 400의 배수면 윤년이다.
year = 2000
A = ((year % 4) == 0)
B = ((year % 100) != 0)
C = ((year % 400) == 0)
print(A, B, C)
print(A and B or C)
# 출력 결과
True False True
True
로직을 따져서 논리를 만드는 것이 프로그래밍!!
문자열:
싱글, 더블 quotation에 제약 X (통일만 해주면 OK, 섞어서쓰면 큰일!!)
Multi-line Statements(멀티 라인 스테이트먼트): """ 멀티라인 """
파이썬은 기본적으로 한 줄씩 읽어나가기 때문에 여러줄 표현을 하기위해서는 멀티라인을 가능하게 해주는 """멀티""" or '''라인''' 를 사용하자!
안에 있는 모든 글자를 그대로 인식하게 해줌
Escape character(이스케이프 케릭터): 특수한 의미를 갖고있는 표현 (다른 것보다 \n 과 \t 는 많이 사용하므로 반드시 외워두자!)
- \n: new line! (엔터로 인식)
- \t: tab (탭은 기본적으로 스페이스 4칸을 의미)
터미널 창을 날릴 경우, 주피터 노트북 자체가 날라감 (저장을 안했다면.... 다 날라갑니다...[윈도우 기준])
집에 갈 때 끄도록 합시다!
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/014.gif)
문자열 연산하기:
- 굉장히 중요!
- 파이썬은 문자열 연산이 정의되어있음
문자열 더하기 > concatenation
데이터 타입마다 더하는 것이 다 다르기 때문에 처음에 확실히 알고갑시다!
컴퓨터 프로그래밍의 문법은 맞다 / 틀리다 밖에 없음
문법은 100% 익혀두어야합니다!!
컴퓨터의 99%는 0과 같습니다!!
문법은 이해를 하면 좋지만 암기라도 합시다
많이 쓰다보면 자연스럽게 암기가 되고
꼭 외울필요는 없다 > 구글링!!
구글링을 위해서는 뭐가 있는지 정도는 사전에 알아야 한다!!
강의를 많이 듣는 것보다 무조건 코딩해보는 것을 추천!!
실습을 많이 해보고 강사님이 추천을 해주는 사이트에서 해보면 좋다!
강사님 추천 사이트:
- 퓨처스킬 : https://futureskill.io/
- Leetcode : https://leetcode.com/
- BOJ : https://www.acmicpc.net/
- 프로그래머스 : https://school.programmers.co.kr/learn/challenges
퓨처스킬
매일 함께 성장하는 커뮤니티
futureskill.io
LeetCode - The World's Leading Online Programming Learning Platform
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
Baekjoon Online Judge
Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.
www.acmicpc.net
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
최대한 연습!!!!!
코드는 눈으로 보는 것은 전체 학습 100의 1 정도임!!! > 아! 정도 수준에서 딱 끝남 > 무조건 짜봐야함
코드 이해의 기준 > 짤 수 있다
코드는 무조건 되는 걸 기준으로 함
이해의 기준은 코드가 짜는 것, 잘도는 것으로 함!!
프로그래밍: 우리는 컴퓨터가 돌아가는 것을 이해하고 그거대로 돌릴 수 있는 것을 연습하는 것!!
나중에는 '왜 안돌지?' 를 고민:
디버깅은 쉽지 않습니다.
코딩 자체는 타이핑을 많이 하지않음 >> 고민(고통..)의 시간이 김
곱하기의 연산 정이 = 더하기를 많이 하는 것
ex) 줄긋기: "-" * 10 = '----------'
문자열 Formatting:
- 출력 포맷은 정해져있고 안의 내용만 달라짐 > 안에 들어가는 내용 = 데이터
- 변수를 활용하여 데이터를 채움
- ex) 키오스크
1. print format 사용
2. str.format 함수 사용
3. f-string(**)
조건문, 반복문을 배우면 날개를 달게 됩니다!
메인 세가지:
- 포매팅
- 반복문
- 조건문
- %d (decimal)
- %s (string)
- %f (float)
우리가 하고 싶은 것: 데이터가 바뀌면 결과가 바뀌는 것
fruit = "오렌지"; count = 15
# 1) print formatting
print("%s가 %d개 있습니다." % (fruit, count))
>오렌지가 15개 있습니다.
# 2) str.format
print("{}가 {}개 있습니다.".format(fruit, count))
>오렌지가 15개 있습니다.
# 3) f-string
print(f"{fruit}가 {count}개 있습니다.")
>오렌지가 15개 있습니다.
세 가지 방식을 모두 알고 있자!
(강사님 개인적으로는 f-string을 선호/추천)
장단점:
print format:
- 장점: 문자 혹은 정수 등이 오는 것을 코드내에서 명시 가능
- 단점: 변수를 뒤에 몰아 쓰기 때문에 코드가 길어짐, 귀찮음
str.format: (강사님 개인적으로는 가장 사용빈도가 떨어짐)
- 장점: 중괄호만 열고 닫으면 변수가 알아서 들어감, print format에 비해 알아서 들어가는 것이 장점
- 단점: . 같은 것을 잘못 쓸 경우가 있다. (휴먼 에러..)
f-string: (강사님 개인적으로 많이쓰심, 편해서!)
- 장점: 최고장점! 짧다!, 뭐가 들어가는지 알 수 있음
- 단점: 변수의 내용을 바로 알수는 없음 (코드가 길거나, 변수 찾기가 어려울 경우), 코드를 다 찾아봐야 알 수 있음
# 예제
phone = "아이폰"
usage = 76
# 목표: "아이폰 베터리 사용량이 76% 남았습니다."
print("%s 베터리 사용량이 %d%% 남았습니다." % (phone, usage))
>아이폰 베터리 사용량이 76% 남았습니다.
print("{} 베터리 사용량이 {}% 남았습니다.".format(phone, usage))
>아이폰 베터리 사용량이 76% 남았습니다.
print(f"{phone} 베터리 사용량이 {usage}% 남았습니다.")
>아이폰 베터리 사용량이 76% 남았습니다.
코드는 중의성이 있을 경우, 실행이 안된다고 보면 됩니다.
추가기능:
usage = 76/100
그냥 쓰면 소수점 6자리까지 표현
# 추가기능 예제
phone = "아이폰"
usage = 76/100
print(usage)
>0.76
# 목표: "아이폰 베터리 사용량이 76% 남았습니다."
print("%s 베터리 사용량이 %f%% 남았습니다." % (phone, usage))
> 아이폰 베터리 사용량이 0.760000% 남았습니다.
print("%s 베터리 사용량이 %.2f%% 남았습니다." % (phone, usage))
> 아이폰 베터리 사용량이 0.76% 남았습니다.
print("%s 베터리 사용량이 %f%% 남았습니다." % (phone, usage))
print("%s 베터리 사용량이 %.2f%% 남았습니다." % (phone, usage))
print(f"{phone} 베터리 사용량이 {usage}% 남았습니다.")
# 출력
아이폰 베터리 사용량이 0.760000% 남았습니다.
아이폰 베터리 사용량이 0.76% 남았습니다.
아이폰 베터리 사용량이 0.76% 남았습니다.
# 추가기능 예제 2
phone = "아이폰"
usage = 76/101
print(usage)
>0.7524752475247525
# 목표: "아이폰 베터리 사용량이 76% 남았습니다."
print("{} 베터리 사용량이 {:.4}% 남았습니다.".format(phone, usage))
> 아이폰 베터리 사용량이 0.7525% 남았습니다.
print("%s 베터리 사용량이 %.4f%% 남았습니다." % (phone, usage))
>아이폰 베터리 사용량이 0.7525% 남았습니다.
print(f"{phone} 베터리 사용량이 {usage:.4}% 남았습니다.")
>아이폰 베터리 사용량이 0.7525% 남았습니다.
뭐는 되고 / 뭐는 안되고가 포맷마다 조금씩 다르기 때문에 포맷을 다 알고 있으면 좋다!!
cf) In [#N]
문자열 관련 함수들:
완전히 이해하려면 함수, 클래스, 매소드 까지 싹 다 알아야함 (가쥬아아아앗!!)
텍스트 전처리에 활용
# Next level!
L = [1, 2, 3]
sorted(L)
L.sort()
L 자체가 바뀌는냐 안바뀌느냐 차이점 존재
- sorted(L) 같은 경우에는 L 자체가 바뀌지 않음
- L.sort()의 경우, L 자체가 바뀜
# 문자열 삽입 join()
L = ['010', '1234', '5678']
"-".join(L)
>'010-1234-5678'
안에 들어가는 요소는 토큰
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/005.gif)
긴 글 읽어주셔서 감사합니다 :)
'AI > [부트캠프] 데이터 사이언티스트 과정' 카테고리의 다른 글
[Megabyte School : AI 데이터 사이언티스트 취업 완성 과정] Day 5. (0) | 2022.08.26 |
---|---|
[Megabyte School : AI 데이터 사이언티스트 취업 완성 과정] Day 4. (0) | 2022.08.25 |
[Megabyte School : AI 데이터 사이언티스트 취업 완성 과정] Day 3. (0) | 2022.08.24 |
[Megabyte School : AI 데이터 사이언티스트 취업 완성 과정] Day 1. (0) | 2022.08.22 |
[Megabyte School : AI 데이터 사이언티스트 취업 완성 과정] Intro. (0) | 2022.08.22 |