부스트캠프 AI Tech 1기 [T1209 최보미]/U stage

Day5 학습정리 - 파이썬으로 데이터 다루기

B1001101 2021. 1. 22. 23:58

강의 복습

1. File / Exception / Log Handling

더보기

1) Exception Handling

  • 예외의 종류
    • 예상 가능한 예외: 사전에 인지할 수 있는 예외, 개발자가 반드시 명시적으로 정의해야 함
    • 예상 불가능한 예외: 인터프리터 과정에서 발생하는 예외, 개발자 실수
  • Built-in Exception: 기본적으로 제공하는 예외
    • IndexError
    • NameError
    • ZeroDivisionError
    • ValueError
    • FileNotFoundError
  • 예외 처리 구문
    • try ~ except
    • try ~ except ~ else
    • try ~ except ~ finally
  • raise: 필요에 따라 강제로 Exception 발생
  • assert: 특정 조건에 만족하지 않을 경우 예외 발생

2) File Handling

  • 파일의 종류
    • Binary 파일: 이진(법) 형식으로 저장, 컴퓨터만 이해 가능, 메모장에서 내용 깨짐 ex) 엑셀파일, 워드파일 등
    • Text 파일: ASCII/Unicode 문자열 형식으로 저장, 인간도 이해 가능, 메모장에서 볼 수 있음 ex) txt파일, HTML파일, 파이썬파일 등
  • 파이썬은 파일 처리 위해 open 키워드 사용
    • r: 읽기모드
    • w: 쓰기모드
    • a: 추가모드(파일의 마지막에 새로운 내용 추가)
    • with ~ as 구문과 함께 사용 가능
  • File Read & File Write
    • read(): txt 파일 안에 있는 내용을 문자열로 반환
    • readlines(): 한 줄씩 읽어 List 타입으로 반환
    • write(): 파일 쓰기

3) Directory

  • os 모듈
    • makedir(): 폴더 생성
  • pathlib 모듈
    • path를 객체로 다룸
    • Windows와 기타 OS(Mac, Linux)간의 호환성 높여줌
    • Windows 디렉토리: WindowsPath
    • 기타 OS 디렉토리: PosixPath

4) Pickle

  • 파이썬의 객체를 영속화(persistence)하는 built-in 객체
  • 데이터, object 등 실행중 정보를 저장 → 나중에 불러와서 사용
  • 저장해야 하는 정보, 계산 결과(모델) 등 활용이 많음

5) Logging Handling

  • print vs logging
    • console창에만 남기는 기록은 분석시 사용 불가
    • 모듈별로 별도의 logging 남길 필요도 있음
  • logging 모듈
    • 파이썬의 기본 로그 관리 모듈
    • 프로그램 진행 상황에 따라 다른 Level의 Log를 출력함
    • 개발 시점, 운영 시점마다 다른 Log가 남을 수 있도록 지원함
    • debug > info > warning > error > critical
    • Log 관리시 가장 기본이 되는 설정 정보
  • configparser
    • 프로그램의 실행 설정을 file에 저장함
    • Section, Key, Value 값의 형태로 설정된 설정 파일을 사용
    • 설정파일을 Dict Type으로 호출후 사용
  • argparser
    •  Console 창에서 프로그램 실행시 Setting 정보를 저장함
    • 거의 모든 Console 기반 Python 프로그램 기본으로 제공
    • 특수 모듈도 많이 존재하지만(TF), 일반적으로 argparse를 사용
    • Command-Line Option 이라고 부름
  • Logging formatter: log 결과값의 format 지정해줄 수 있음

2. Python data handling

더보기

1) CSV (Comma Seperate Values)

  • 필드를 쉼표(,)로 구분한 텍스트 파일
  • 엑셀에서 '다른 이름 저장'으로  사용 가능
  • 파이썬에서는 간단히 CSV 파일을 처리하기 위해 csv 객체 제공

2) 웹 & HTML

  • Web (World Wide Web, WWW)
    • 인터넷의 정식 명칭
    • 데이터 송수진: HTTP 프로토콜 사용
    • 데이터 표시: HTML 형식 사용
    • 요청→처리→응답→렌더링 순서로 동작
  • HTML (Hyper Text Markup Language)
    • 웹 상의 정보를 구조적으로 표현하기 위한 언어
    • 제목, 단락, 링크 등 요소 표시를 위해 태그(tag) 사용
    • 모든 요소들은 <> 안에 둘러쌓여 있음
    • 모든 HTML은 트리 모양의 포함관계를 가짐
    • 일반적으로 웹 페이지의 HTML 소스파일은 컴퓨터가 다운로드 받은 후 웹 브라우저가 해석/표시

3) 정규식 (regular expression)

  • 정규 표현식, regexp 또는 regex 등으로 불림
  • 복잡한 문자열 패턴을 정의하는 문자 표현 공식
  • 특정한 규칙을 가진 문자열의 집합 추출
  • 기본 문법
    • [] : [와 ] 사이의 문자들과 매치
    •  - : 범위 지정
    • . : 줄바꿈 문자 \n 제외한 모든 문자와 매치
    • * : 앞에 있는 글자
    • + : 앞에 있는 글자 최소 1회 이상 반복
    • {} : 반복 횟수 지정
    • ? : 반복 1회
    • | : or
    • ^ : not
  • 정규식 연습장: https://regexr.com/
 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

  • re 모듈
    • search: 한 개만 찾기, findall: 전체 찾기
    • 추출된 패턴은 tuple로 반환

4) XML (eXtensible Markup Language)

  • 데이터의 구조와 의미를 설명하는 Tag(markup)를 사용하여 표시
  • 태그와 태그 사이에 값 표시, 구조적인 정보 표현 가능

5) Beautifulsoup

  •  HTML, XML 등 Markup 언어 Scraping을 위한 대표적인 도구
  • 모듈 호출: from bs4 import BeautifulSoup
  • 객체 생성: BeautifulSoup()
  • 패턴 찾는 함수
    • find_all(): 해당 패턴 모두 반환
    • find()
    • get_text(): 반환된 패턴의 값 반환

6) JSON (JavaScript Object Notation)

  • 원래 Javascript의 표현 방식
  • 간결하고 데이터 용량이 적으며 코드로의 전환이 쉬움
  • XML의 대체제로 많이 활용됨

마스터클래스 / 피어세션

오늘은 마스터클래스가 있는 날이었다. 마스터가 학생들의 질문을 모아서 답변해주는 형식으로 진행되었는데 역시 AI에 대한 질문이 많았고 그 외에 학습 방향, 프로그래밍 개념 등에 대한 질문들도 있었다. 좋은 질문과 답변들이 많았는데 그중 가장 인상 깊었던 건 주식을 하면서 세상이 어떻게 돌아가는지 배우라는 것이었다.

오늘 피어세션에서 발표한 내용은 자바와 파이썬의 visibility를 비교하는 것이었다. 학교에서 자바로 객체지향 프로그래밍을 배웠었는데 파이썬 객체지향을 공부하면서 차이점을 비교해보면 좋을 것 같아서 이 주제를 선정했다. 급하게 준비하느라 내용이 많이 부실한데 나중에 파이썬에서 __로 private 선언하는 것에 대해 더 깊이 있게 정리하고 오버라이딩과 오버로딩에 대해서도 추가로 정리해야겠다.

Visibility.pdf
0.14MB


코멘트

 오늘 강의 내용은 프로그래밍 할 때, 특히 데이터를 다룰 때 알아둬야 할 것들이었다. pathlib과 logging모듈, pickle, configparser와 argparser 등 생소한 내용이 좀 있었다. 특히 pathlib은 디렉토리 다룰 때 굉장히 유용해 보인다. 그리고 정규식은 배울 때마다 항상 생소하고 배워도 배워도 끝이 없는 것 같다.

 어느새 부스트캠프 첫 번째 주가 끝났다. 정신없이 한 주가 지나간 것 같다. 다음주에는 매일 과제와 퀴즈가 있다고 하는데 걱정된다. 주말동안 이번주에 배운 내용을 복습하고 다음주에 배울 내용도 미리 예습해놔야겠다.