반응형

■ 장고 프레임워크(Django Framework) 란?

파이썬 기반의 무료 오픈소스 웹 애플리케이션 프레임워크(Open Source Web Application Framework)이다. MTV(Model - Template - View) 아키텍처를 따르고, ORM(Object Relational Mapper)이 프로젝트의 객체들을 데이터베이스 테이블과 매핑을 도와주어 복잡한

데이터 기반 웹 사이트 개발이 쉬워질 수 있다.

Instagram, Disqus, Mozilla, NASA 등이 Django로 개발되었다.


■ 장점

  • 파이썬 기반 웹 프레임워크
  • 파이썬의 라이브러리를 사용할 수 있다.
  • 오픈소스
  • 기본적인 기능들을 미리 만들어 제공해 쉽고 빠르게 개발
  • 웹 애플리케이션이 제공되어야하는 사용자 인증, 사용자 관리 등을 기본적으로 기능 구현이 되어 있다.
  • Full Stack Framework : front, backend 등 서버가 필요로 하는 것을 모두 Django가 맡아서 함.

■ 단점

  • Django 에서 기본적으로 수많은 기능을 제공하지만 그만큼 세세한 설정 변경이나 자세한 조정이 힘들다.
  • 모든 것이 Django ORM을 기반으로 한다.
  • 작업하는데 full system의 지식이 필요하다.
반응형
반응형

제너레이터(Generator) 란?

제너레이터(Generator)는 아이터레이터(iterator)를 생성해 주는 함수이다.

아이터레이터(iterator)는 next 함수를 이용해 데이터에 순차적으로 접근이 가능한 Object 이다.

일반함수와 제너레이터(Generator) 함수의 차이점은 yield 사용함에 있다.

일반함수는 사용이 종료되면 결과값을 호출부로 반환 후 함수 자체를 종료시킨 후 메모리 상에서 클리어되지만, 제너레이터(Generator)함수는 yield를 기점으로 next() 를 통해 반환 값을 호출한 쪽으로 전달하고 그 상태로 유지된다. 따라서 메모리에 그대로 유지되는 것이다. 


■ 예시

  • for 문이 실행되며, 먼저 generator 함수가 호출된다.
  • generator 함수는 일반 함수와 동일한 절차로 실행된다. 
  • 실행 중 while 문 안에서 yield 를 만나게 된다. 그러면 return 과 비슷하게 함수를 호출했던 구문으로 반환하게 된다. 여기서는 첫번재 i 값인 0 을 반환하게 된다. 하지만 반환 하였다고 generator 함수가 종료되는 것이 아니라 그대로 유지한 상태이다.
  • x 값에는 yield 에서 전달 된 0 값이 저장된 후 print 된다. 그 후 for 문에 의해 다시 generator 함수가 호출된다. 
  • 이때는 generator 함수가 처음부터 시작되는게 아니라 yield 이후 구문부터 시작되게 된다. 따라서 i += 1 구문이 실행되고 i 값은 1로 증가한다.
  • 아직 while 문 내부이기 때문에 yield 구문을 만나 i 값인 1이 전달 된다.
  • x 값은 1을 전달 받고 print 된다. (이후 반복)
def generator(n):
    i = 0
    while i < n:
        yield i
        i += 1

for x in generator(5):
    print(x)
    
# ※ 출력 결과
# 0
# 1
# 2
# 3
# 4
반응형
반응형

■ 데코레이터(Decorator) 란?

함수의 기능을 확장하고 싶은 경우에 사용합니다.

구현상으로는 함수를 인자로 받아 함수의 기능을 추가한 후 다시 리턴해주는 형식으로 구현합니다.


■ 예시

반응형
반응형

■ 가상환경 구축

1. 기존 파이썬 버전

방법) conda create -n 가상환경 이름 anaconda

# 예시
conda create -n tf2 anaconda

2. 파이썬 버전 설정

방법) conda create -n 가상환경 이름 python=파이썬 버전 anaconda

# 예시
conda create -n tf2 python=2.8 anaconda

 가상환경 접속

방법) conda activate 가상환경 이름

# 예시
conda activate tf2

 기본(base) 환경으로 돌아오기 

conda deactivate

 가상환경 삭제

방법) conda remove --name 가상환경이름 --all

# 예시
conda remove --name tf2 --all

반응형
반응형

여러 데이터 비교를 위한 결과 HTML 수정

Jupyter Notebook을 이용하여 두 데이터를 비교해서 확인 하고 싶은 경우가 있다.

물론 두 데이터를 print() 함수와 display() 함수를 이용하여 수직적으로 확인할 수 있겠지만

데이터의 양이 많을 경우 수직적으로 나타내는 데이터는 확인이 어렵다.

아래 작업을 통해 HTML을 수정함으로써 데이터의 양이 많더라도 수평적으로 쉽게 데이터를 비교할 수 있다.


 Source Code

from IPython.display import display_html
def display_side_by_side(*args):
    html_str=''
    for df in args:
        html_str += df.to_html()
    display_html(html_str.replace('table','table style="display:inline"'), raw=True)

 예시) 여러 데이터프레임 결과 비교

반응형
반응형

 두 데이터프레임의 결과를 비교하기 위한 준비

display_side_by_side 함수는 여러데이터를 비교하기 위해 생성한 함수이다.

(아래 링크에서 자세한 내용 확인)

 

[Python] 여러 데이터 비교를 위한 결과 HTMl 수정

여러 데이터 비교를 위한 결과 HTMl 수정 Jupyter Notebook을 이용하여 두 데이터를 비교해서 확인 하고 싶은 경우가 있다. 물론 두 데이터를 print() 함수와 display() 함수를 이용하여 수직적으로 확인할

hyunmin1906.tistory.com

Soruce Code

 

hyunmin94/hyunmin

Contribute to hyunmin94/hyunmin development by creating an account on GitHub.

github.com


 데이터프레임(DataFrame) 병합

※ (1~4번) 기준 두개의 DataFrame 데이터 준비

 merge 함수

두 데이터프레임을 기준열 혹은 index를 이용하여 병합할때 사용한다.


1) inner join

두 데이터프레임에서 공통적으로 존재하는 열의 데이터를 기준으로 inner 병합한다.

Default
on = "사원번호"
how = "inner"

2) outer join

  • 공통적으로 존재하는 열을 기준으로 두 데이터프레임의 전체 데이터를 병합
  • 공통적으로 존재하지 않는 열의 데이터는 NaN으로 자동처리 된다.
빨간색 : 두 데이터프레임 중 한쪽에만 존재하는 데이터

3) left join

기준열에서 공통적인 데이터와 왼쪽에 위치한 데이터프레임의 데이터를 병합

빨간색 : 공통적인 데이터를 제외하고 왼쪽 데이터프레임에 존재하는 데이터만 병합된걸 알 수 있다.

4) right join

기준열에서 공통적인 데이터와 오른쪽에 위치한 데이터프레임의 데이터를 병합

빨간색: 공통적인 데이터를 제외하고 오른쪽 데이터프레임에 존재하는 데이터만 병합된걸 알 수 있다.


※ (1~2번) 기준 두개의 DataFrame 데이터 준비

1) left_on, right_on

공통적인 열은 없지만 양쪽의 공통적인 데이터형식을 갖고 있으며, 이를 이용하여 조인하고 싶을 경우 사용 

2) left_index, right_index

데이터프레임의 index 값을 통해 join을 하기 위해 기준 데이터의 index를 join 하고자 하는 열로 지정함


■ join 함수

두 데이터프레임의 index를 기준으로 join이 이루어진다.



■ concat 함수

단순히 데이터를 연결할때 사용한다.


열로 데이터 연결(병합)

행으로 데이터 연결(병합)

반응형

+ Recent posts