대학원 일기

파이썬으로 데이터 다루기 본문

Computer programming/python

파이썬으로 데이터 다루기

대학원생(노예) 2022. 1. 19. 16:54

파이썬으로 데이터 다루기

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으로 호출 후 사용

config file

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
Comments