AI SCHOOL

[WIL] 4주차

moru_xz 2023. 1. 19. 17:22

 

 

실습 정리

 

[SQL] SQL과 데이터베이스 / select, from / as, limit, distinct

데이터란? - 어떠한 정보 - 컴퓨터에 저장되어 처리될 수 있는 형태로 표현 - 컴퓨터 안에 기록된 문자, 숫자 데이터 베이스 데이터의 집합 -> 데이터베이스 DBMS - 데이터베이스 관리 시스템 - 데이

moruxz.tistory.com

 

[SQL] WHERE / 비교연산자 / 논리연산 / BETWEEN / IN / LIKE / IS NULL

WHERE - 데이터에 조건을 부여해서 원하는 데이터만 필터링 - 여러 연산자 결합 가능 - 결합 가능 연산자의 종류 : 비교연산자(=, , !=, >=, =20 and age= 50 프로그래머스 문제 3-1 (level 1) https://school.programm

moruxz.tistory.com

 

[Python] 대통령연설기록 수집 - 1

연설문 목록 스크래핑 수집하고자 하는 대상의 URL 을 알아봅니다. 사이트에 접속한다. => HTTP 요청을 보냅니다. requests 목록을 받아온다. (번호, 대통령, 형태, 유형, 제목, 연설일자) + BautifulSoup을

moruxz.tistory.com

 

[Python] 네이버 금융 ETF 수집, json 데이터 수집

ETF란?¶ ETF(상장지수펀드)는 기초지수의 성과를 추적하는 것이 목표인 인덱스펀드로, 거래소에 상장되어 있어서 개별주식과 마찬가지로 기존의 주식계좌를 통해 거래를 할 수 있습니다. 그 구성

moruxz.tistory.com

 

[Python] Open API 사용하여 서울시 다산 콜센터 자주 묻는 질문 목록 데이터 수집

Open API¶API란?¶ Application Programming Interface의 약어입니다. 서로 다른 사양의 컴퓨터나 컴퓨터 프로그램이 데이터를 주고받을 수 있도록 하는 도구입니다. 예제에서는 사용자가 서울 열린데이터 광

moruxz.tistory.com

 

0117 키워드

<주피터 노트북>

.py 파일을 편집할 때는 -> 파이썬 내장 IDE, 주피터 Lab, 메모장, vi, Visual Studio Code, PyCharm, 서브라임텍스트 등 → 자신에게 가장 편한 것으로 사용

zerompq 오류 해결 방법 : 아나콘다 prompt 열고 pip uninstall pyzmq pip install pyzmq==19.0.2 설치

Jupyter localhost 로 실습할 때의 장점 :

  1. 오프라인에서도 사용이 가능하다. 예를 들어 산속으로 캠핑을 가서도 인터넷이 안 될 때 코딩을 할 수 있음
  2. 데이터 파일 등을 매번 로드할 필요가 없다 => 로컬 드라이브에 저장해 두면 경로만 지정하면 바로 불러올 수 있기 때문
  3. 주피터 노트북의 서버를 끄지 않는 이상 네트워크 상황에 따라 연결이 끊겨서 다시 노트북을 실행할 필요가 없음
  4. 라이브러리를 한번 설치하면 노트북을 새로 열 때마다 설치하지 않고 import 만 해서 사용할 수 있다. → colab은 설치해야 하는 라이브러리를 매번 설치해 주어야 함
  5. colab 보다 좋은 성능의 컴퓨터라면 더 빠르게 사용할 수도 있지만 그렇지 않다면 colab 이 더 빠를 수도 있음

실행모드(ESC)

  • 커서가 사라짐
  • esc + a : 위에 셀 생성
  • esc + b : 아래 셀 생성
  • esc + dd : 셀 삭제
  • esc + m : 마크다운 셀로 변경 (왼쪽에 In[] : 없음. 맠다운 문법 적용)
  • esc + y : 코드셀로 변경(왼쪽에 In[] : 있음)
  • esc + o : 접기
  • tab : 자동완성...?

편집 모드 (Enter)

  • 커서가 생김
  • shift + enter : 셀이 실행되고 다음 셀로 이동
  • ctrl + enter : 해당 셀이 실행되고 다음 셀로 이동하지 않음

<서울 120>

  1. page_no 마다 url이 변경되게 f-string 을 사용해 만든다.
  2. requests 를 사용해서 요청을 보내고 응답을 받는다.
  3. pd.read_html 을 사용해서 table tag로 게시물을 읽어온다.
  4. 3번 결과에서 0번 인덱스를 가져와 데이터프레임으로 목록의 내용을 만든다.
  5. html tag를 parsing할 수 있게 bs 형태로 만든다.
  6. 목록 안에 있는 a tag를 찾는다.
  7. a tag 안에서 string 을 분리해서 내용번호만 리스트 형태로 만든다.
  8. 4)의 결과에 "내용번호"라는 컬럼을 만들고 a tag의 리스트를 추가한다.
  9. 없는 페이지번호가 들어왔을 때의 오류에 대처한다.
  10. 반환값을 지정한다

<대통령 기록관과의 차이점>

  • 대통령기록관에서는 내용수집할 때 내용만 가져옴
  • 서울 120에서는 분류, 내용 함께 가져올 예정
  • read_html()을 통해서 여러 데이터프레임을 병합하는 방법 배움
import time
import pandas as pd
import numpy as np
import requests
from bs4 import BeautifulSoup as bs
  • time : 간격을 두고 가져오기 위해 사용
  • pandas : 파이썬에서 사용할 수 있는 엑셀과 유사한 데이터분석 도구
  • numpy : 파이썬에서 사용할 수 있는 공학용 계산기
  • requests : 매우 작은 브라우저로 웹사이트의 내용과 정보를 불러옴
  • BeautifulSoup : requests로 가져온 웹사이트의 html 태그를 찾기위해 사용

BeautifulSoup와 BeautifulSoup4 차이

beautifulsoup4 안의 BeautifulSoup 모듈을 불러와서 사용

<인코딩>

  • cp949가 깨지면 utf-8 사용해보기

<상세정보를 위한 링크정보 수집>

  • get : 필요한 데이터를 Query String 에 담아 전송
  • post : 전송할 데이터를 HTTP 메시지의 Body의 Form Data에 담아 전송
  • get 과 post 여부는 브라우저의 네트워크 탭의 Headers > Request Method 를 통해 확인

<try 구문 작성시>

  • 안전하게 맨 위에 작성해 주면 어떤 오류든 대처가능하기 때문에 오류를 줄이는데 도움이 됩니다.
  • 여러 페이지를 수집할 때 어떤 상황에서 오류가 날지 예측이 잘 안 되거나 예외상황이 있다든지 하면 오류가 날만한 곳 맨 위에 try 구문을 작성합니다.
  • 오류가 났을 때 오류 메시지가 떠야 어떤 오류인지 보고 수정할 수 있는데 오류가 났는데도 예외 관련 문구를 디테일하게 작성하지 않으면 어떤 오류인지 찾기 어렵다는 단점도 있습니다.

<append 위치에 따른 차이>

  • 리스트에 불필요한 데이터 저장하지 않음 -> 반환값이 없으면 굳이 append 할 필요 없음
  • 만약 테이블이 비어져있는데 append가 위에 있으면 비어있는 테이블도 추가

<네트워크 이슈 대비>

  1. 페이지마다 파일로 저장하는 방법도 있습니다.
  2. 생성된 파일을 한 번에 읽어와서 리스트로 만들어 줍니다.
  3. 리스트에 담긴 데이터프레임을 concat()으로 합쳐서 하나의 데이터프레임으로 만듭니다.

<주피터 안에서 pip install 과 터미널로 설치하는 방법 두가지가 있는데차이>

  • 환경의 차이
  • 아나콘다 : 가상환경을 사용하기 위해 사용 → 컴퓨터 전체에 설치되는 것이 아니라(base)라는 터미널 문구는 가상환경을 의미
  • (base) 안에 설치되지 않으면 No Module Not Found Error와 같은 오류 발생
  • 주피터 내부에서 설치됐을 때 (base) 안에 설치되기도 하지만 경우에 따라서 다른 경로에 설치되기도 함

<concat에서 axis >

  • axis = 0일 때는 행으로 붙음
  • axis = 1 하면 열로 붙는데 인덱스 값이 같아야 옆으로 붙음

 

0118 키워드

<병합>

  • 수집한 내용을 tolist() 를 통해 리스트로 변환 후 concat 으로 병합합니다.
  • view_detail 변수 안에 들어있는 값은 series 형태이기 때문에 concat() 으로 병합하기 위해서는 리스트 형태로 되어있어야 함
  • how = 'left' 내용번호가 중간에 누락 되어 수집이 되지 않는 것이 있다면 결측치로 보이게 된다
  • how = 'right' 내용번호는 수집되었지만 목록에 없는 경우 목록 내용이 결측치로 보임
  • merge 는 컬럼, 혹은 인덱스 기준으로 병합
  • join 은 인덱스 기준으로 병합

<JSON>

  • JSON(제이슨, JavaScript Object Notation)은 속성-값 쌍( attribute–value pairs and array data types (or any other serializable value)) 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
  • 비동기 브라우저/서버 통신 (AJAX)을 위해, 넓게는 XML(AJAX가 사용)을 대체하는 주요 데이터 포맷
  • 특히, 인터넷에서 자료를 주고 받을 때 그 자료를 표현하는 방법으로 알려져 있다. 자료의 종류에 큰 제한은 없으며, 특히 컴퓨터 프로그램의 변수값을 표현하는 데 적합

<API란>

  • Application Programming Interface의 약어입니다.
  • 서로 다른 사양의 컴퓨터나 컴퓨터 프로그램이 데이터를 주고받을 수 있도록 하는 도구입니다.
  • 예제에서는 사용자가 서울 열린데이터 광장의 서버에서 데이터를 요청할 수 있게 합

<Open API>

  • Open API는 개발자라면 누구나 사용할 수 있도록 공개된 API를 의미합니다.
  • 서울 열린데이터 광장에서는 Open API를 제공하여 사용자들이 데이터에 편리하게 접근할 수 있도록 하고 있습니다.

<XML>

  • eXtensible Markup Language의 약어입니다.
  • 인터넷 상에서 구조화된 데이터를 전송하기 위해 만들어진 형식입니다.
  • XML은 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템끼리 데이터를 쉽게 주고 받을 수 있게 하여 HTML의 한계를 극복할 목적으로 만들어졌습니다.

<API 사용 이유>

  1. 허락된 사람에게만 정보를 제공하고 누가 수집해 갔는지 알기 위해
  2. 유료로 데이터를 판매하고 있는 사이트는 데이터 용량 등에 따라 과금하기도 합니다.
  3. 공공데이터는 실시간성으로 제공하고자 하는 데이터의 경우 예) 부동산실거래가 정보 등
  4. 특정 사이트에 무리하게 네트워크 요청을 보내면 서버에 무리가 갈 수 있습니다.

예) 만약에 50명이 특정 카페24의 작은 쇼핑몰에 요청을 한번에 보내면 서버를 다운시킬 수도 있습니다.

API용 서버를 따로 두게 되면 데이터를 무리하게 읽어 갔을 때 운영하고 있는 서비스의 서버에 무리가 가지 않게 분리해서 운영할 수 있습니다. 네이버, 카카오, 유튜브 등은 API를 따로 제공하고 있습니다.

API를 제공할 때 제공할 수 있는 데이터에 한해서 제공합니다. 예를들어 페이스북에서는 자기계정에 대한 데이만 가져갈 수 있게 API를 제공하고 있습니다.

<웹스크래핑 vs api>

  • 웹 데이터를 수집하는 방법은 크게 웹 스크래핑API를 이용한 요청 방식 두 가지가 있습니다.
  • 웹 스크래핑은 브라우저에 보여지는 정보를 사용자가 자동화된 툴로 수집하는 것입니다.
  • API는 Application Programming Interface의 줄임말로, 서로 다른 소프트웨어끼리 서비스를 제공하기 위한 사양을 의미합니다. 여기서는 서버에 정보를 요청하기 위한 방법이라고 생각하면 됩니다.

<REST>

  1. HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고,
  2. HTTP Method(POST, GET, PUT, DELETE)를 통해
  3. 해당 자원(URI)에 대한 CRUD Operation을 적용하는 것을 의미합니다.

장점

  • HTTP 프로토콜의 인프라를 그대로 사용하므로 REST API 사용을 위한 별도의 인프라를 구축할 필요가 없다.
  • HTTP 프로토콜의 표준을 최대한 활용하여 여러 추가적인 장점을 함께 가져갈 수 있게 해 준다.
  • HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능하다.
  • Hypermedia API의 기본을 충실히 지키면서 범용성을 보장한다.
  • REST API 메시지가 의도하는 바를 명확하게 나타내므로 의도하는 바를 쉽게 파악할 수 있다.
  • 여러 가지 서비스 디자인에서 생길 수 있는 문제를 최소화한다.
  • 서버와 클라이언트의 역할을 명확하게 분리한다.

단점

  • 표준이 자체가 존재하지 않아 정의가 필요하다.
  • 사용할 수 있는 메소드가 4가지밖에 없다.
  • HTTP Method 형태가 제한적이다.
  • 브라우저를 통해 테스트할 일이 많은 서비스라면 쉽게 고칠 수 있는 URL보다 Header 정보의 값을 처리해야 하므로 전문성이 요구된다.
  • 구형 브라우저에서 호환이 되지 않아 지원해주지 못하는 동작이 많다.

'AI SCHOOL' 카테고리의 다른 글

[ML] Clustering  (0) 2023.03.12
[통계분석] 상관분석 / 회귀분석  (0) 2023.02.16
[통계분석]  (0) 2023.02.15
[통계분석] 확률분포 / 정규분포 / 기술통계(분위수, 편차)  (0) 2023.02.13
[WIL] 3주차  (0) 2023.01.12