Boostcamp AI Tech

[Boostcamp Day-5] Python - Data Handling

ju_young 2021. 8. 6. 10:28
728x90

CSV(Comma Separate Value)

 

필드를 쉼표(,)로 구분한 텍스트 파일로 간단히 말해 엑셀 양삭의 데이터를 프로그램에 상관없이 쓰기 위한 데이터 형식이다. csv파일을 notepad로 열어보면 각 데이터가 ","로 이루어져 있는 것을 확인할 수 있었을 것이다. notepad는 textfile을 열어 보듯이 readline()으로 한 줄씩 가져올 수 있다. 하지만 이렇게 사용하면 전처리가 필요하므로 csv 모듈을 import하여 csv 객체를 활용할 수 있다.

import csv
reader = csv.reader(f, delimeter=',', quotechar='"', quoting=csv.QUOTE_ALL)

- delimeter(default=,) : 글자를 나누는 기준

- lineterminator(default=\r\n) : 줄 바꿈 기준

- quotechar(default=") : 물자열을 둘러싸눈 신호 문자

- quoting(default=QUOTE_MINIMAL) : 데이터 나누는 기준이 quotechar에 의해 둘러싸인 레벨

 


HTML(Hyper Text Markup Language)

html은 웹 상의 정보를 구조적으로 표현하기 위한 언어이며 각종 tag를 사용한다. 기본적인 구조는 "<html> –<head> –<title>–<body> –<p>"으로 되어있고 다음과 같이 작성할 수 있다.

<!doctype html>
<html>
    <head>
        <title>Hello</title>
    </head>
    <body>
        <p>Hello</p>
    </body>
</html>

정규식(regular expression)

regexp 또는 regex 등으로 불리고 복잡한 문자열 패턴을 정의하는 문자 표현 공식이다. 예시로 다음과 같은 표현이 가능하다.

http://bit.ly/2WNudWK

기본 문법

- [abc] : [와 ]사이의 문자들과 매치하는 의미

- [a-zA-Z] : 알파벳 전체, [0-9] - 숫자 전체

- . : 줄바꿈 문자인 \n를 제외한 모든 문자와 매치

- * : 앞에 있는 글자를 반복해서 나올 수 있다는 의미

- + : 앞에 있는 글자를 최소 1회 이상 반복

- {m, n} : 반복 횟수를 지정

- ? : 반복 횟수가 1회

- | : or

- ^ : not

 

re

파이썬에서는 re모듈을 사용하여 정규표현식을 사용할 수 있다.

import re
re.findall("[a-z]", contents)

XML(eXtensible Markup Language)

데이터의 구조와 의미를 설명하는 TAG(MarkUp)을 사용하여 표시하는 언어이다. TAG와 TAG 사이에 값이 표시되고, 구조적인 정보를 표현할 수 있다.

<?xml version="1.0"?>

<고양이>

    <이름>나비</이름>

    <품종>샴</품종>

    <나이>3</나이>

    <중성화>예</중성화>

    <발톱제거>아니요</발톱제거>

    <등록번호>Izz138</등록번호>

    <소유자>이강</소유자>

</고양이>

xml도 html과 같이 구조적인 markup 언어이며 정규표현식으로 parsing이 가능하다. 가장 많이 쓰이는 parser로 beautifulsoup이 있다.


BeautifulSoup

BeautifulSoup은 html, xml 등의 markup 언어를 scraping을 위한 대표적인 도구이다.

설치

conda 가상 환경으로 lxml과 beautifulsoup 설치한다.

activate <가상환경 이름>

conda intall lxml
conda install -c anaconda beautifulsoup4=4.5.1

사용

from bs4 import BeautifulSoup #모듈 호출

soup = BeautifulSoup(books_xml, 'lxml') #객체 생성
soup.find_all('author') #tag 찾는 함수 find_all

get_text()를 사용하여 반환된 패턴의 값을 반환할 수 있다.


JSON(JavaScript Object Notation)

원래 웹 언어인 Java Script의 데이터 객체 표현 방식이다. 간결성으로 기계/ 인간이 모두 이해하기 편하고 데이터 용량 또한 적으로 code로 전환이 쉽다. 요즘에는 xml 대체제로 많이 활용되고 있다.

https://www.flickr.com/photos/xmodulo/26106186415

위처럼 python의 dict type과 유사하면 key:value 쌍으로 데이터가 표시된다. 또한 파이썬에서는 json 모듈을 사용해서 다음과 같이 읽거나 쓸 수 있다.

import json

#read

with open("json_example.json", "r", encoding="utf8") as f:

    contents = f.read()

    json_data = json.loads(contents)

    print(json_data["employees"])

#write

dict_data = {'Name' : 'Zara', 'Age' : 3, 'Class' : 'Second'}

with open("data.json", "w") as f:

    json.dump(dict_data, f)
728x90