[Day 66] Section3 Review

2022. 4. 27. 14:18AI/Codestates

728x90
반응형

Summary

  • CLI ( Command 기반 ) - Keyboard
    <-> GUI ( Graphic 기반 ) - Mouse
    • Top 5 기본 명령어
      • pwd : 현재경로
      • mkdir : 디렉토리 생성
      • cd : 해당 디렉토리로 이동
      • ls : 디렉토리안 파일 목록 출력
      • cat : 파일 출력
  • python 가상환경 : 패키지 충돌을 일으키지 않기 위해 각 독립적인 환경을 만들어줌
  • 아나콘다 가상환경 
    • conda creat --name {이름} python={버전}
  • SQL ( Structured Query Language )
  • DataBase 사용이유?
    • 파일 크기가 커지게 되면 한줄한줄 읽어오는데 걸리는 시간이 오래걸림
  • 기본키 : 테이블을 대표하는 키
    • NOT NULL
    • NO 중복
    • 대표성을 가져야 함
  • 외래키 : 두 테이블을 서로 연결하는데 사용되는 키
  • 트랜잭션 : 일련의 작업들에 대한 연속처리 단위
  • ACID
    • Atomicity ( 원자성 ) : 전부성공하거나 전부실패해야 되어야 한다는 것
    • Consustency ( 일관성 ) : 데이터베이스 상태는 이전과 같이 유효해야한다는 것
    • Isolation ( 고립성 ) : 하나의 트랜잭션이 다른 트랜잭션과 독립되어야 한다는 것
    • Durability ( 지속성 ) : 해당기록은 영구적이어야 한다는 것
  • CSV 파일 합치기
import psycopg2

host = '***'
user = '***'
password = '***'
database = '***'

connection = psycopg2.connect(
    host=host,
    user=user,
    password=password,
    database=database
)
db_create = """CREATE TABLE passenger(
    Id INT NOT NULL PRIMARY KEY,
    Survived INT,
    Pclass INT,
    Name VARCHAR(128),
    Sex VARCHAR(12),
    Age FLOAT,
    Siblings_Spouses_Aboard INT,
    Parents_Children_Aboard INT,
    Fare FLOAT
)"""

cur = connection.cursor()
cur.execute("DROP TABLE IF EXISTS passenger")
cur.execute(db_create)
connection.commit()
connection.close()
import pandas as pd
import os
import sqlalchemy
from sqlalchemy import create_engine

DATA_PATH = os.getcwd()
df = pd.read_csv(f'{DATA_PATH}/titanic.csv')
df = df.reset_index().rename(columns = {'index' : 'id'})
db_connection = create_engine('postgresql 주소')
df.columns = ['id', 'survived', 'pclass', 'name', 'sex', 'age', 'siblings_spouses_aboard', 'parents_children_aboard', 'fare']
conn = db_connection.connect()

dtypesql = {'id':sqlalchemy.types.INTEGER(), 
            'Survived':sqlalchemy.types.INTEGER(),
            'Pclass':sqlalchemy.types.INTEGER(),
            'Name':sqlalchemy.types.VARCHAR(128),
            'SEX':sqlalchemy.types.VARCHAR(12),
            'Age':sqlalchemy.types.FLOAT(),
            'SSA':sqlalchemy.types.INTEGER(),
            'PCA':sqlalchemy.types.INTEGER(),
            'Fare':sqlalchemy.types.FLOAT()
}

df.to_sql(name='passenger', con=conn, if_exists='append', index=False,dtype=dtypesql)
  • 파라미터 ( Parameter ) : 함수를 정의할 때 소괄호애 들어가는 것
  • 인수 ( Arguments ) 
    • 필수 인수 ( Required Arguments ) : 위치를 지키며 전달되는 인수
    • 키워드 인수 ( Keyword Arguments ) : 파라미터 이름을 사용해 전달되는 인수
    • 기본 인수 ( Defult Arguments ) : 파라미터에서 기본으로 사용되는 값
  • 데코레이터 ( @ )
  • 객체지향언어 : 객체를 사용하는 프로그래밍 방법
  • 디버깅
    • Python 3.7버전 이상 breakpoint() 사용
  • Deepcopy
    • Deepcopy를 하지 않은 상태에서는 새로운 값을 추가해주게 되면 두 변수 모두 값이 추가된다.
    • 그래서 Deepcopy를 사용해서 컨테이너 주소값을 다르게 가져오고 할당된 값의 주소값은 가져오는 방식

 

  • HTML ( Hyper Text Markup Language ) 
    • Element : ex) head, body, div, li 등 
    • 마치 뼈대를 연상
  • CSS ( Cascading Style Sheets )
    • 마치 살과 옷을 연상
  • JS
    • 동적인 역할을 담당
  • DOM ( Document Object Model ) : 문서객체모델
    • Object들을 구조화 하는 것
  • Requests 라이브러리 : 해당 url에 모든 값을 가져옴
# 설치 필요 터미널에서
pip install requests
url = www.naver.com
res = resquest.get(url)
# 값 불러오기 (str 형태로)
res.text
# res.content
  • BeautifulSoup 라이브러리 : 예쁜 그릇에 원하는 스프를 담아서 골라 먹는 것처럼 사용한다는 뜻
# 설치 필요 터미널에서
pip install bs4
from bs4 import BeautifulSoup

soup = BeautifulSoup(res.text , 'html.parser')
soup
  • Tip
# 네이버 영화 제일최근 영화코드 불러오기
soup, page = get_page(search_url)
sel = soup.select('.search_list_1 > li a')
movie_code = []
for ele in sel :
    if movie_title.lower() in ele.text.lower() :
        code = ele
        movie_code.append(int(code.attrs['href'].split('=')[1]))
print(max(movie_code))

 

  • Open API를 기업에서 제공하는 이유?
    • 제 3의 수익창출
    • 기업홍보
    • 로드 밸런싱 ( 부하분산 )
  • HTTP API = WEB API
  • CRUD METHOD
    • Create, Read, Update, Delete
  • REST API
    • GET : 데이터를 조회
    • POST : 데이터를 생성
    • PATCH : 데이터를 업데이트 ( 일부변경 )
    • PUT : 데이터를 업데이트 ( 전체 변경 )
    • DELETE : 데이터를 삭제
  • 트위터 API
api_key = '***'
api_key_secret = '***'
access_token = '***'
access_token_secret = '***'
auth = tweepy.OAuthHandler(api_key, api_key_secret)
auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth)
  • NoSQL ( Not Only SQL ) : 관계형 데이터베이스 모델을 사용하지 않음
    • 데이터의 구조가 거의 또는 전혀 없는 대용량의 데이터를 저장하는 경우
    • 클라우드 컴퓨팅 및 저장공간을 최대한 활용하는 경우
    • 빠르게 서비스를 구축하고 데이터 구조를 자주 업데이트 하는 경우
  • MongoDB
  • Pymongo
from pymongo import MongoClient

HOST = '***'
USER = '***'
PASSWORD = '***'
DATABASE_NAME = '***'
COLLECTION_NAME = 'openweather'
MONGO_URI = f"mongodb+srv://{USER}:{PASSWORD}@{HOST}/{DATABASE_NAME}?retryWrites=true&w=majority"


clt = MongoClient(MONGO_URI)
db = clt[DATABASE_NAME]
collection = db[COLLECTION_NAME]
  • 하나의 데이터 삽입
collection.insert_one(openweather)
  • 여러가지 데이터 삽입
collection.insert_many(dont_touch)
  • 특정 부분만 find ( 0 : 추출하지 않음, 1 : 추출함 )
user_list = collection.find({}, {'_id' : 0, 'user' : {'login' : 1, 'id' : 1, 'node_id' : 1}})
  • [ SQLite ] INSERT OR IGNORE : 해당 데이터가 없으면 INSERT
  • Linux Container 란?
    • 프로세스의 구획화 -> 공간분리
    • 네트워크의 구획화 -> 각각의 독립적인 IP주소
    • 파일 시스템의 구획화 -> 저장소의 분리
  • Docker 란? : OS를 일치시켜주는 기술
    • Register : Image 저장소  ex) LP를 모아둔 장소
    • Image : CD와 같은 정적인 파일 또는 프로그램 ex) LP판
    • Container : 실행중인 Image의 인스턴스 ex) LP 플레이어
  • Docker 이미지 불러오기
docker image pull docker/whalesay:latest
  • Docker 컨테이너 런
docker container run --name myName docker/whalesay:latest cowsay boo
  • Docker 웹서버 구축
docker container run --name my_web --rm -p 818:80 httpd
  • Docker copy
docker container cp ./ my_web:/usr/local/apache2/htdocs/
  • Flask : 마이크로 웹 프레임 워크 -> 뭔가를 만들어 낼 수 있는 도구
  • @app.route
  • Bootstrap
 

Accordion

Build vertically collapsing accordions in combination with our Collapse JavaScript plugin.

getbootstrap.com

  • WSGI : 서버와 어플/프레임 워크를 연결해주는 중간다리.
  • Heroku : 클라우드 플랫폼 배포 서비스
  • 대시보드 : 데이터를 표현하는 일종의 도구, 데이터를 시각화 해서 보기 쉽게 보고하기 위해 사용
  • UTC : 영국을 기준으로 시차를 규정한 시간
  • 객체부호화
    • Pickle
import pickle

with open('model.pkl','wb') as pickle_file:
    pickle.dump(model, pickle_file)
import pickle

model = None
with open('model.pkl','rb') as pickle_file:
   model = pickle.load(pickle_file)
728x90
반응형