일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- MLP
- 백준
- 디자인 패턴
- 통계학
- 자바 영화 api
- C# 프로젝트
- Dehaze
- 경사하강법
- 머신러닝
- 인공지능
- 코딩테스트
- API
- 정규화
- 대학원 급여
- 딥러닝 실험 깃 버전관리
- 딥러닝
- 파이썬 경사하강법
- 의료 ai 대학원 월급
- 인공지능 깃 버전관리
- 디자인패턴
- python
- 대학원 월급
- 로스트아크
- pandas
- DCP
- 자바
- 영화 api
- 파이썬
- 자바 프로젝트
- 활성화 함수
- Today
- Total
대학원 일기
파이썬으로 데이터 다루기 본문
파이썬으로 데이터 다루기
File / Exception / Log Handling
Exception Handling(예외 처리)
예상 가능한 예외
- 발생 여부를 사전에 인지할 수 있는 예외
- 사용자의 잘못된 입력, 파일 호출 시 파일 없음
- 개발자가 반드시 명시적으로 정의해야 함
예상 불가능한 예외
- 인터프리터 과정에서 발생하는 예외, 개발자 실수
- 리스트의 범위를 넘어가는 값 호출, 정수 0으로 나눔
- 수행 불가 시 인터프리터가 자동 호출
파이썬의 예외 처리
- try-except 문법
(if문과 문법적으로는 처리가 가능하지만, 파이썬에서는 예외 처리문으로 하는 것을 권장함)
- 0으로 숫자를 나눌 때 예외처리 하기
(ZeroDivisionError는 파이썬에서 기본적으로 제공하는 예외인 Built-in Error임)
- Bulit-in Exception: 기본적으로 제공하는 예외
(전체적으로 예외 처리를 Exception하는 방법도 있으나, 예외가 어디서 발생했는 지 모르는 단점이 있음)
- try-except-else(비추)
- try-except-finally(비추)
raise 구문
- 필요에 따라 강제로 Exception을 발생
assert 구문
- 특정 조건에 만족하지 않을 경우 예외 발생
(assert 코드 부분이 예외가 발생하면 False일 때 Error를 발생시켜 코드를 멈춤)
File Handling
File system, 파일 시스템: OS에서 파일을 저장하는 트리구조 저장체계
파일의 종류
- 기본적인 파일 종류로 text 파일과 binary 파일로 나눔
- 컴퓨터는 text 파일을 처리하기 위해 binary 파일로 변환시킴
- 모든 text 파일도 실제는 binary 파일, ASCII/Unicode 문자열 집합으로 저장되어 사람이 읽을 수 있음
Python File I/O(Input/Output)
- 파이썬은 파일 처리를 위해 "open" 키워드를 사용함
파이썬 File Read
- read() txt 파일 안에 있는 내용을 문자열로 변환
- with 구문과 함께 사용하기
- 한줄씩 읽어 List Type으로 반환함
- 실행 시마다 한 줄씩 읽어오기
- 단어 통계 정보 산출
파이썬 File Write
- mode는 "w", encoding="utf8"
- mode "a"는 추가모드(append)
파이썬의 directory 다루기
- os 모듈을 사용하여 Directory 다루기
- 디렉토리가 있는지 확인하기
- 최근에는 pathlib 모듈을 사용하여 path를 객체로 다룸
Log 파일 생성하기
1) 디렉토리가 있는지, 2) 파일이 있는지 확인 후
Pickle
- 파이썬의 객체를 영속화(persistence)하는 built-in 객체
- 데이터, object 등 실행 중 정보를 저장 → 불러와서 사용
- 저장해야하는 정보, 계산 결과(모델) 등 활용이 많음
Logging Handling
로그 남기기 - Logging
- 프로그램이 실행되는 동안 일어나는 정보를 기록으로 남기기
- 유저의 접근, 프로그램의 Exception, 특정 함수의 사용
- log를 저장하는 방법: Console 화면에 출력, 파일 남기기, DB에 남기기 등등
- 기록된 로그를 분석하여 의미있는 결과를 도출할 수 있음
- 실행 시점에서 남겨야 하는 기록, 개발 시점에서 남겨야하는 기록
logging 모듈
- 파이썬의 기본 Log 관리 모듈
logging level
- 프로그램 진행 상황에 따라 다른 Level의 Log를 출력함
- 개발 시점, 운영 시점마다 다른 Log가 남을 수 있도록 지원함
- DEBUG > INFO > WARNING > ERROR > Critical 순서
- Log 관리 시 가장 기본이 되는 설정 정보
데이터 파일 위치, 파일 저장 장소, Operation type 등 이러한 정보를 설정해줄 방법이 필요
1) configparser - 파일에
2) argparser - 실행시점에
configparser
- 프로그램의 실행 설정을 file에 저장함
- Section, Key, Value, 값의 형태로 설정된 설정 파일을 사용
- 설정 파일을 Dict type으로 호출 후 사용
configparser file
argparser
- Console 창에서 프로그램 실행시 Setting 정보를 저장함
- 거의 모든 Console 기반 Python 프로그램에서 기본으로 제공
- 특수 모듈도 많이 존재하지만(TF), 일반적으로 argparse를 사용
- Command-Line Option 이라고 부름
Logginf formmater
- Log의 결과값의 format을 지정해줄 수 있음
Log config file
Python data handling
CSV(Comma Separate Values)
- CSV, 필드를 쉼표(,)로 구분한 텍스트 파일
- 엑셀 양식의 데이터를 프로그램 상관없이 쓰기 위한 데이터 형식이라고 생각하면 됨
- 탭(TSV), 빈칸(SSV) 등으로 구분해서 만들기도 함
- 통칭하여 character-separted values(CSV) 부름
- 엑셀에서는 "다른 이름 저장"기능으로 사용 가능
CSV 파일 읽기 예제
CSV 파일 쓰기 예제
CSV 객체로 CSV 처리
- Text 파일 형태로 데이터 처리 시 문장 내에 들어가있는 "," 등에 대해 전처리 과정이 필요
- 파이썬에서는 간단히 CSV 파일을 처리하기 위해 csv객체를 제공함
CSV 객체 활용
Web
- World Wide Web(WWW), 줄여서 웹이라고 부름
- 우리가 늘 쓰는 인터넷 공간의 정식 명칭
- 팀 버너스리에 의해 1989년 처음 제안되었고, 원래는 물리학자들간 정보 교환을 위해 사용됨
- 데이터 송수신을 위한 HTTP 프로토콜 사용, 데이터를 표시하기 위해 HTML 형식을 사용
웹의 동작
HTML(Hyper Text Markup Language)
- 웹 상의 정보를 구조적으로 표현하기 위한 언어
- 제목, 단락, 링크 등 요소 표시를 위해 Tag를 사용
- 모든 요소들은 꺾쇠 괄호 안에 둘러 쌓여 있음. // <title>Hello world</title>
- 모든 HTML은 트리 모양의 포함관계르 가짐
- 일반적으로 웹 페이지의 HTML 소스 파일은 컴퓨터가 다운로드 받은 후 웹 브라우저가 해석/표시
- 정보의 보고, 많은 데이터들이 웹을 통해 공유됨
- HTML도 일종의 프로그램, 페이지 생성 규칙이 있음: 규칙을 분석하여 데이터의 추출이 가능
- 추출된 데이터를 바탕으로 하여 다양한 분석이 가능
정규식 (regulat expression)
- 정규 표현식, regexp 또는 regex 등으로 불림
- 복잡한 문자열 패턴을 정의하는 문자 표현 공식
- 특정한 규칙을 가진 문자열의 집합을 추출
정규식 기본 문법
문자 클래스 [ ] : [와] 사이의 문자들과 매치라는 의미
ex) [abc] ← 해당 글자가 a,b ,c 중 하나가 있다.
"-" 사용으로 범위를 지정할 수 있음
정규식 기본 문법 - 메타문자
XML
- 데이터의 구조와 의미를 설명하는 TAG(Mark up)를 사용하여 표시하는 언어
- TAG와 TAG 사이에 값이 표시되고, 구조적인 정보를 표현할 수 있음
- HTML과 문법이 비슷, 대표적인 데이터 저장방식
JSON
- JavaScript Object Notation
- 원래 웹 언어인 Java Script의 데이터 객체 표현 방식
- 간결성으로 기계/인간이 모두 이해하기 편함
- 데이터 용량이 적고, Code로의 전화이 쉬움
- 이로 인해 XML의 대체제로 많이 활용되고 있음
- key:value 쌍으로 데이터 표시
JSON in Python
- json 모듈을 사용하여 손 쉽게 파싱 및 저장 가능
- 데이터 저장 및 읽기는 dict type과 상호 호환 가능
- 웹에서 제공하는 API는 대부분 정보 교환 시 JSON 활용
- 페이스북, 트위터, Github 등 거의 모든 사이트
- 각 사이트마다 Developer API의 활용법을 찾아 사용
JSON Read
- JSON 파일의 구조를 확인 → 읽어온 후 → Dict Type처럼 처리
JSON Write
- Dict Type으로 데이터 저장 → json 모듈로 write
'Computer programming > python' 카테고리의 다른 글
[python] pprint: 쉽고 예쁘게 출력하기 (0) | 2022.01.21 |
---|---|
[Python] re 모듈(regex: 정규식 모듈) (0) | 2022.01.21 |
파이썬 기초 문법 III (0) | 2022.01.19 |
파이썬 기초 문법 II (0) | 2022.01.11 |
파이썬 기초 문법 I (0) | 2022.01.08 |