본문 바로가기
Study (Data Science)/ML

CSV, XML, JSON

by 콜라찡 2022. 12. 8.
  • 모듈(module) : 파이썬으로 만든 코드가 들어간 파일 .py
  • 패키지(package) : 기능적으로 동일하거나 동일한 결과를 만드는 모듈들의 집합 또는 폴더. 종종 라이브러리라고도 불림
  • 라이브러리(library) : 모듈과 패키지의 집합. 패키지보다 포괄적인 개념이나 패키지와 혼용되어 사용되기도 함.
    • sys
    • os
    • glob
  • PIP(Package Installer for Python) : 패키지 관리자로 파이썬을 설치하면 기본으로 설치됨
  • PyPA(Python Packaging Authority) : 파이선 패키지를 관리하고 유지하는 그룹
  • PyPI(The Python Package Index) : 파이썬 패키지들의 저장소

  • sys.path : 현재 폴더와 파이썬 모듈들이 저장되는 위치를 리스트 형태로 반환
  • sys.path.append() : 자신이 만든 모듈의 경로를 append 함수를 이용해서 추가함. 그 후 추가한 디렉터리에 있는 파이썬 모듈을 불러와 사용할 수 있다.
  • os.chdir() : 디렉터리 위치 변경
  • os.getcwd() : 현재 자신의 디렉터리 위치를 반환
  • os.mkdir() : 디렉터리 생성
  • os.rmdir() : 디렉터리 삭제 (단, 디렉터리가 비어 있을 경우)
  • glob.glob() : 해당 경로 안의 디렉터리나 파일들을 리스트 형태로 반환
  • os.path.join() : 경로(path)를 병합하여 새 경로 생성
  • os.listdir() : 디렉터리 안의 파일 및 서브 디렉터리를 리스트 형태로 반환
  • os.path.exists() : 파일 혹은 디렉터리의 경로 존재 여부 확인
  • os.path.isfile() : 파일 경로의 존재 여부 확인
  • os.path.isdir() : 디렉터리 경로의 존재 여부 확인
  • os.path.getsize() : 파일의 크기 확인

CSV

Comma Seperated Value의 약자로, 쉼표로 구분된 파일. 각각의 칼럼(column)을 쉼표(,)로 구분

 

#- 1. 데이터를 준비합니다.
fields = ["title", "singer", "released date"]
rows = [ ["Tho Box","Roddy Ricch","2019-12-19"],
               ["Don't Start Now", "Dua Lipa", "2019-11-01"],
               ["Life Is Good", "Future Featuring Drake", "2020-02-10"],
               ["Blinding", "The Weeknd", "2019-11-29"],
               ["Circles", "Post Malone","2019-08-30"]]
               
#- 2. 판다스를 이용해 데이터를 csv 파일로 저장합니다.
import pandas as pd

df=pd.DataFrame(rows, columns=fields)
df.to_csv('pandas.csv',index=False)

#- 3. 동일한 내용을 csv.writer를 이용해 수행해 봅니다.
import csv 

filename = "test.csv"
with open(filename, 'w+', newline='\n') as csv_file: 
    csv_writer = csv.writer(csv_file) 
    csv_writer.writerow(fields) 
    csv_writer.writerows(rows)

print("완료")

#- test.csv 파일을 직접 열어서 눈으로 살펴 보세요. -#
df = pd.read_csv('test.csv')
df

XML

Aiffel lms

  • Extensible Markup Language의 약자, 다목적 마크업 언어
    • 다목적 마크업 언어 : 태그라고 불리는 꺾쇠 모양의 괄호(< >)로 구분된 언어. like HTML
  • API에서 데이터를 요청하고 저장할 때 XML이나 JSON 형식을 이용해 데이터를 교환
  •  요소(element)들로 이루어져 있음
  • 요소는 <열린 태그> 내용 </닫힌 태그>가 기본적인 구조, 속성(attribute) 값을 가질 수 있음

XML Parsing (구문분석)

어떤 문자열을 의미있는 token으로 분해하여 문법적 의미와 구조를 반영한 parse tree를 만드는 과정.

파이썬 표준 lib인 ElementTree나 외부 BeautifulSoup lib 를 import 하여 실행함.

 

 ElementTree

  • Element() : 태그 생성
  • SubElement() : 자식 태그 생성
  • tag : 태그 이름
  • text : 텍스트 내용 생성
  • attrib : 속성 생성
  • write() : XML 파일로 저장
  • 리스트(list)와 유사한 메서드를 제공
    • append(), insert(), remove(), pop()
# ElementTree로 XML 코드 만들기
import xml.etree.ElementTree as ET

person = ET.Element("Person")
name = ET.Element("name")
name.text = "이펠"
person.append(name)

age = ET.Element("age")
age.text = "28"
person.append(age)

ET.SubElement(person, 'place').text = '강남'

ET.dump(person)

>> <Person><name>이펠</name><age>28</age><place>강남</place></Person> 이렇게 만들어짐
------------
# XML 파일로 저장하기
ET.ElementTree(person).write('person.xml')

BeautifulSoup (훨씬간단)

!pip install bs4
from bs4 import BeautifulSoup
import os

with open('books.xml',"r",encoding='utf8') as f:
    booksxml = f.read() 
    #- 파일을 문자열로 읽기

soup = BeautifulSoup(booksxml,'lxml') 
#- BeautifulSoup 객체 생성 : lxml parser를 이용해 데이터 분석

for title in soup.find_all('title'): 
#-  태그를 찾는 find_all 함수 이용
    print(title.get_text())
----------------------------------
XML Developer's Guide
Midnight Rain
Maeve Ascendant
Oberon's Legacy
The Sundered Grail
Lover Birds
Splish Splash
Creepy Crawlies
Paradox Lost
Microsoft .NET: The Programming Bible
MSXML3: A Comprehensive Guide
Visual Studio 7: A Comprehensive Guide

 

JSON

Aiffel lms

 

  • JavaScript Object Notation,  웹 언어인 JavaScript의 데이터 객체 표현 방식.
  • 웹 브라우저와 다른 애플리케이션 사이에서 HTTP 요청으로 데이터를 보낼 때 널리 사용하는 표준 파일 포맷 중 하나로, XML과 더불어 웹 API나 config 데이터를 전송할 때 많이 쓰임.
  • 트위터는 개발자용 사이트를 통해 여러 가지 API를 JSON 형태로 제공
  • 구조가 python의 dictionary 와 유사해 xml보다 다루기가 쉬움
  • 대부분의 웹이 java기 때문에 json 파일을 만날 일이 많음.
  • 파이썬의 dictionary는 JSON으로 저장할 수 있음.,

JSON Parsing

# 파이썬의 dictionary를 JSON으로 저장하기
import json

person = {
      "first name" : "Yuna",
      "last name" : "Jung",
      "age" : 33,
      "nationality" : "South Korea",
      "education" : [{"degree":"B.S degree", "university":"Daehan university", "major": "mechanical engineering", "graduated year":2010}]
       } 

with open("person.json", "w") as f:
    json.dump(person , f)
    
=================================================================
# JSON 파일을 파이썬의 dictionary로 읽어오기
import json

with open("person.json", "r", encoding="utf-8") as f:
    contents = json.load(f)
    print(contents["first name"])
    print(contents["education"])

 

728x90

'Study (Data Science) > ML' 카테고리의 다른 글

이미지처리 Basic  (0) 2022.12.12
상관계수, 경사하강법, 손실함수, RMSE, 경사하강법, 선형회귀  (0) 2022.12.09
문자열다루기, 정규표현식  (0) 2022.12.08
Matplotlib, Seaborn  (0) 2022.12.07
Scikit-Learn  (0) 2022.12.07

댓글