[Daily Contents] 파이썬 데이터 분석


데이터 과학!

데이터의 분석과 활용이 개인과 조직의 새로운 힘이 되고 경쟁력이 되는 시대입니다. 데이터 사이언스는 데이터 수집, 큐레이션, 통계 분석과 기계학습 등의 다양한 기술과 지식을 활용하여 복잡한 데이터로부터 인사이트를 얻거나 지능화된 시스템을 구현하기 위한 모든 업무를 총칭.

  • 소프트웨어 컴퓨터 공학(SW 개발, 기계학습, 데이터 사이언스)
  • 수학 통계학(모델 연구, 기계학습, 데이터 사이언스)
  • 도메인 및 절차 지식(SW 개발, 모델 연구, 데이터 사이언스)

데이터 과학의 툴셋

매우 많다. 단지 SSAFY 생활 중에 대체로 익힌다.

데이터 분석 프로세스

목표설정 > 데이터 획득 > 데이터 준비 > 데이터 탐색 > 모델링 및 구축 > 발표 및 적용
개발자 입장(Python) : 수집(requests, BeautifulSoup, Scrapy) > 처리(Database, SQLAlchemy, Pandas) > 분석(Pandas, Numpy, Scipy) > 적용(Matplotlib, Plot.ly)

Quiz

Q. 데이터 탐색 과정의 일부로서 시각화, 통계 분석, 간단한 모델링 등을 이용해 데이터를 다양한 각도에서 관찰하고 이해하는 과정을 뜻하는 말은?
A. 탐색적 데이터 분석, EDA(Exploratory Data Analysis)

Q. Jupyter라는 이름은 3개의 프로그래밍 언어에서 따왔다. 어떤 언어일까?
A. J-Julia, P-Python, R-R

Jupyter Notebook

  • Jupyter = Ju(lia) + Pyt(on) + R
  • 웹 기반 + 통합 개발 환경 + 인터랙티브
  • 노트북 = 문서(마크다운) + 코드 + 시각화 + 수식 표현
    • 실행되는 문서!!
  • IPython에서 시작(2014년)
  • 데이터 과학 분야의 표준 도구(De Facto)
  • 코드 작성과 실행, 출력 보기, 시각화 출력

Jupyter Notebook에서 할 수 있는 것들

  • 마크다운으로 문서화를 할 수 있다.
  • Python 등 코드를 실행하고 결과를 확인할 수 있다.
    • REPL(Read Evaluate Print Loop), Interactive, 대화형 콘솔
  • 노트북 도움말 : h,
  • API 도움 받기 : help(), ?, ??
  • 자동완성 : TAB
  • Tool Tip : Shift + tab
  • Magic 명령어 : % 또는 %%, %magic, %load, %run, %history, %Ismagic…
  • 시각화 자료를 통합할 수 있다.
  • 수식 표현이 가능하다.
    • $, $$ : LaTeX
    • \begin, \end
  • 쉘을 실행할 수 있다.
    • 쉘에서!
    • 또는 터미널 실행창 열기(New -> Terminal)
  • 만들어진 노트북으로 슬라이드쇼를 할 수 있다.

    • html로 저장 : jupyter nbconvert some-notebook.ipynb –to slides
    • 웹 서버로 실행 : jupyter nbconvert some-notebook.ipynb –to slides –post serve
    • RISE : rise.readthedocs.io
  • 어디에 쓸까?
    • 데이터 분석과 개발 과정 전반에서 사용
    • 개발 프로토타입을 만들 때
    • 그냥 개발용으로(지원 언어 40+)
  • 누가 쓸까?
    • 데이터를 다루는 누구나!
    • 개발과 기록을 한번에, 내보내기와 공유

Jupyter Notebook 시작하기

  • 설치형
    • 그냥 설치(Python, pip)
    • anaconda : 패키지 + 환경관리
    • docoker
  • 서비스형
    • Google Colab
    • Kaggle
    • Cloud : AWS, GCP, Azure

목표 설정(기획)의 중요성

  • 기획
    • 40대 사원을 멘토로 붙이며 경영진과 여사원간의 회식을 정기적으로 열며 휴일에 사원들에게 스터디그룹과 회식을 시킴으로서 이직률 감소를 추구
  • 결과
    • ???

결론 : 데이터 잘 구하자.

데이터 구하기

  • Raw Data : RDB, DW, Data Lake, File(CSV, log, txt, Excel), Service, …
  • Open Dataset, Open API
  • 스크래핑
  • 손맛
  • 돈맛

Open Dataset, Open API

  • https://aihub.or.kr/
  • https://www.kaggle.com/
  • 등등

스크래핑

  • 파이썬으로 쉽고 편하게 스크래핑을 개발할 수 있다.
  • request, urllib3
  • scrapy
  • selenium
  • 파싱 : BeautifulSoup, lxml, JSON
  • ‘데이터 크롤링의 세계’ 참고(0729 Live)

데이터 처리와 분석

데이터 과학의 80%는 데이터 클리닝에 소비되고, 나머지 20%는 그걸 불평하는데 쓰인다.
  • pandas + python + SciPy + NumPy
  • 데이터를 불러오고
    • 닦고 채우고 자우고 자르고 붙이고 돌리고 묶고 분류하고 계산하고 변형한 뒤
  • 분석 저장하거나 다음 단계로 전달
  • pandas 유용

시각화(데이터 분석)

  • 분석된 숫자가 있는데 왜 필요할까?
  • 필요성 : 앤스컴 콰르텟

    • 같은 데이터를 표현하더라도 어떤 기준을 잡느냐(평균, 표본분산, 상관관계 등)에 따라 그래프의 모양은 천차만별.
    • 예뻐서 : 사람들이 이해하기 쉽게 전달하려고
    • EDA의 중요한 과정
    • 데이터 탐색 : 데이터 이해, 트랜드와 패턴 파악, 특이값 찾아내기, 모델 선정
    • 패턴을 인식하는 인간의 능력 활용하기
    • 데이터 리터러시(데이터 문해력)
    • 시각화 방법 선택 > 다방면으로 살펴보기
  • 데이터 시각화 형태 고르는 방법(없는 주소?)

    • https://brunch.co.kr/@joecool/148
  • How to Choose the Right Type of Chart for Your Message
    • https://education.microsoft.com/ko-kr/course/0a60eeb6/1

시각화

  • 많이 사용하는 라이브러리들
    • matplotlib : 기본
    • seaborn : matplotlib 기반
    • plot.ly and ploy.ly express : Javascript, Interactive
    • Bokeh
    • Altair and vega
    • 모두 Jupyter Notebook에서 사용 가능

개선하기

  • 협업
    • nbconvert, nbviewer, binder : Publish
  • Jupyter Lab : 차세대 Notebook
  • 성능
    • 코드 : 프로파일링(%time, %timeit, %prun)
    • GPU 가속 : CUDA, cuDF
    • Clustering/parallelism : dask, vaex
  • JIT : PyPy, numba
  • Cloud
    • AWS SageMaker
    • GCP AI Platform
    • Azure ML Notebook
    • Jetbrains DataLore
  • Alt. Tool
    • VSCode도 노트북 지원
    • Jetbrains DataSpell

Closing

  • 컨퍼런스/커뮤니티 : PyCon, PyData, JupyterCon
  • 참조
    • (책) 파이썬 라이브러리를 활용한 데이터 분석
    • (책) 파이썬 데이터 사이언스 핸드북
    • (책) 밑바닥부터 시작하는 데이터 과학
    • (web) jupyterbook, kaggle, dacon, github, etc

댓글남기기