Python handling: Data

soominlee·2022년 8월 3일
0

🐍 Python

목록 보기
12/14

*해당 게시글은 <NAVER boostcourse> 에서 수강한 강의를 바탕으로 정리한 내용입니다.
Python data type
  1. CSV
  2. Web
  3. XML
  4. JSON

1. CSV

: Comma Seperate Value

(basic)

  • Open 키워드를 사용해 한줄 씩 읽어올 수 있음
  • comma로 데이터가 구분되기 때문에 .split(',') 로 데이터를 구분해줌

❗ text 파일 형태로 데이터 처리 시 문장 내 comma에 대한 전처리 과정이 필요함
▶ 간단한 csv 파일 처리를 위한 python에서 csv 객체를 제공함

csv 객체 활용
  • encoding을 신경써야함
    * read 할 때 : (window) cp949 (linux/mac) utf8
    • write 할 때 : utf8
  • quotechar : 데이터를 둘러싸는 기호
    * 웬만하면 작은 따옴표 ' 사용

❗ csv 파일은 해당 방법으로 다룰 수 있지만 판다스라는 아주 편리한 라이브러리로 쉽게 다룰 수 있음

2. Web

: World Wide Web

  • 데이터 송수신을 위한 HTTP 프로토콜을 사용함
  • 데이터를 표시하기 위해 HTML 형식을 사용함
웹 동작 방식
  1. 요청 : 웹주소, Form, Header 등 (클라이언트 → 서버)
  2. 처리 : Database 처리 등 요청에 대응 (서버)
  3. 응답 : HTML, XML 등으로 결과 반환 (서버 → 클라이언트)
  4. 렌더링 : HTML, XML 표시 (클라이언트)
HTML

: 웹 상의 정보를 구조적으로 표현하기 위한 언어

  • 모든 HTML은 트리 모양의 포함 관계를 가지며, 웹페이지의 HTML 소스 파일은 컴퓨터에서 다운받은 후 웹 브라우저가 해석/표시
  • HTML의 규칙을 분석하여 데이터 추출이 가능함
Regular expression (정규식; regexp, regex)

: 복잡한 문자열 패턴을 정의하는 문자 표현 공식

  • 특정한 규칙을 가진 문자열의 집합을 추출함
  • HTML은 tag를 사용하여 일정한 형식이 존재하기 때문에 정규식으로 추출이 용이함
  • 정규식 연습장으로 정규식 표현방법에 대해 익힐 수 있음 (http://www.regexr.com/)
🐍 regex in python
import re	
import urllib.request # url로부터 데이터를 받아오는 라이브러리

url = 'url'
html = urllib.request.urlopen(url)
html_contents = str(html.read())
id_results = re.findall(r"([A-Za-z0-9]+\*\*\*)", html_contents)

# html source 내에 있는 id를 모두 출력
for result in id_results:
	print(results)  
  • re 모듈을 사용해서 정규식을 사용할 수 있음
  • 추출된 패턴은 tuple로 반환됨
  • 함수
    - search : 한개만 찾기
    - findall : 전체 찾기

3. XML

: eXtensible Markup Language

  • 데이터의 구조와 의미를 설명하는 Tag(markup)을 사용하여 표시하는 언어임
  • Tag와 Tag 사이에 값이 표시되며, 구조적인 정보를 표현할 수 있음
  • HTML과 같이 구조적인 markup 언어임
  • 가장 많이 쓰이는 도구인 beautifulsoup으로 Scraping함
  • lxml과 html5lib과 같은 parser를 사용함
🐍 XML in python
! conda install -c anaconda beautifulsoup4

from bs4 import BeautifulSoup # 모듈 호출

soup = BeautifulSoup(books_xml, "lxml") # 객체 생성
soup.find_all("author") # 서치 함수로 tag 찾음

4. JSON

: JavaScript Object Notation

  • JavaScript(웹언어)의 데이터 객체 표현 방식
  • 데이터 용량이 적고 Code로의 전환이 쉽다는 장점이 있음
  • XML의 대체제로 많이 활용되고 있음
  • Python의 Dictionary type과 유사함 (Key, value pair) → 데이터 저장 및 읽기는 dict type과 상호 호환 가능함
  • 웹에서 제공하는 API는 대부분 정보 교환 시 JSON을 활용함
🐍 JSON in python
import json 

# json read
with open("json_example.json", "r", encoding="utf8") as f:
	contents = f.read()
    json_data = json.loads(contents)
    print(json_data["employee"]

# json write
json_data = {'Name':'Zara', 'Age':7, 'Class':'First'}

with open("data.json", "w") as f:
	json.dump(dict_data, f)
profile
Soominlee

0개의 댓글