기본 콘텐츠로 건너뛰기

라벨이 python인 게시물 표시

Flask 설치하기 - 가상환경에 Flask 개발 환경 구축하기

Flask(플라스크)를 사용하기 위해서는 Python(파이썬)이 설치되어 있어야 한다. 파이썬이 설치되어 있는지 확인하기 위해 설치된 파이썬 버전을 확인한다. 1 python --version 파이썬이 설치되어 있지 않으면 Python 공식 홈페이지 에서 가이드에 따라 파이썬을 먼저 설치해야 한다. 파이썬이 설치되어 있으면 아래 순서대로 Flask를 설치해 사용할 수 있다. 먼저 Flask 프로젝트를 시작할 폴더를 만들고, 폴더로 이동한다. 1 2 mkdir my-flask-folder cd my-flask-folder Flask를 설치하기 전에 프로젝트 별로 격리된 환경을 만들어 주기 위해 가상환경을 만든다. 1 python3 -m venv venv 가상환경을 만들었으면 가상환경을 사용하기 위해 활성화 작업을 해야 한다. 1 . venv/bin/activate 가상 환경이 활성화 되면 터미널에 (venv) 로 시작하는 가상환경 이름이 표시된다. 이제 pip를 이용해 가상 환경에 Flask를 설치한다. 1 pip install Flask 터미널에 아래와 같이 Flask가 설치 된 것을 확인할 수 있다. Flask 외 다른 프로그램도 함께 설치되었다. Flask가 정상적으로 설치되었는지 확인하기 위해 설치된 Flask 버전을 확인한다. 1 flask --version 터미널에 아래와 같이 설치된 Flask의 버전을 확인할 수 있다. 이제 Flask가 정상적으로 설치되었으니, Flask를 맘껏 사용하면 된다. Flask 설치에 대한 더 자세한 내용을 알고 싶으면  Flask 설치 공식 문서 에서 확인하면 된다. 참고로 나중에 가상환경을 종료하고 싶을 때는 아래와 같은 명령어를 입력하면 된다. deactivate

[virtualenv] 가상환경 실행 시키기

개발 환경에 가상환경(virtualenv)을 설치 하였다면, 다음에 작업할 때 가상 환경을 활성화시켜야 한다. 가상환경(virtualenv)을 실행 시키고 종료하기 위해서 아래와 같이 간단한 명령어를 입력해주면 된다. # virtualenv(가상환경) 설치 pip install virtualenv # 가상환경 폴더로 이동 cd [ env_name ] # 가상환경 실행 source [ env_name ] /bin/activate # 가상환경 종료 deactivate 끝.

파이썬(Python)을 이용한 DAU 구하기

0. DAU(Daily Active Users, 일별 활성 사용자)는 앱 또는 웹을 사용한 사용자 수를 일별 집계한 값이다. 게임 앱이라고 가정한다면, 일별 게임 플레이한 유저 수가 DAU라 할 수 있다. 유저 수는 중복을 제거한다. DAU에 대한 자세한 설명은  위키피디아 에서 확인할 수 있다. 1. 먼저 매일 게임을 플레이한 유저를 기록하는 PLAYS라는 가상의 DataFrame이 있다고 하자. Pandas 라이브러리 를 이용해 user_id와 플레이한 date가 기록되어 있는 간단한 샘플 데이터프레임을 아래와 같이 만든다. 1 2 3 4 5 6 7 8 import pandas as pd user_id = [ '1' , '4' , '6' , '1' , '2' , '8' , '10' , '1' ] created_at = [ '2019-01-03' , '2019-01-03' , '2019-01-03' , '2019-01-03' , '2019-01-04' , '2019-01-04' , '2019-01-04' , '2019-01-04' ] plays = pd . DataFrame({ 'user_id' : user_id, 'created_at' : created_at}) plays . tail() tail() 메서드를 이용해 아래와 같이 PLAYS 데이터프레임이 잘 만들어진 것을 확인할 수 있다. Jupyter Notebook 을 이용하면 바로 확인할 수 있다. 2. DAU는 "일별로 유저 수 집계", "중복 유저 제거" 2가지 조건을 충족시켜야 한다. 즉 날짜(created_

파이썬(Python) 데크(Deque) 자료구조

Deque(데크)는 Double-Ended Queue 의 줄임말로, 아래 그림과 같이 자료의 앞(왼쪽)과 뒤(오른쪽) 즉, 양방향에서 데이터를 처리할 수 있는 Queue형 자료구조이다. List(리스트)와 비슷하지만, 컨테이너의 앞과 뒤에서 원소를 삽입, 제거하는 것이 빠르다. <Deque 구조> Python에서는 collections 라이브러리를 통해 쉽게 이용할 수 있다. collections.deque의 기본 문법은 아래와 같다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 from collections import deque friends_list = [ "john" , "jane" , "peter" ] friends_deq = deque(friends_list) print(friends_deq) # 오른쪽(마지막)에 추가 friends_deq . append( "daniel" ) print(friends_deq) # 왼쪽(첫 번째)에 추가 friends_deq . appendleft( "young" ) print(friends_deq) # 모든 요소들 앞으로 당기거나 밀어내기 friends_deq . rotate( 2 ) print(friends_deq) friends_deq . rotate( - 2 ) print(friends_deq) # 오른쪽(마지막) 삭제 & 반환 print(friends_deq . pop()) print(friends_deq) # 왼쪽(첫 번째) 삭제 & 반환 print(friends_deq . popleft()) print(friends_deq) 끝.

파이썬(Python) 람다함수(lambda)

파이썬에서 람다함수(lambda)가 있다. 간단한 함수를 간결하게 한 줄로 작성할 수 있다. 아래의 예시를 통해 자세히 살펴보자. 1 2 3 4 5 6 7 8 9 10 # lambda function # lambda arguments : only one expression def generalAdd (x, y): return x + y lambdaAdd = lambda x, y : x + y print(generalAdd( 2 , 3 )) print(lambdaAdd( 2 , 3 )) 위 코드는 일반적인 함수와 람다함수를 비교한 값이다. 두 개 함수 모두 5를 return한다. 1개의 return을 가지는 1개의 expression을 함수로 작성할 때 1줄로 편리하게 작성할 수 있는 장점이 있다. 단 람다함수는 함수의 이름이 없다. 익명함수라고 불린다. 람다함수의 문법은 아래와 같다. lambda arguments : only one expression 간결하게 함수를 표현할 수 있기 때문에, 함수 안에 함수를 삽입할 때 유용하게 사용된다. 아래의 코드를 통해 예시를 살펴보자. 1 2 3 4 5 6 def exponential (x): return lambda a : a ** x square = exponential( 2 ) print(square( 3 )) exponential(2)를 통해 x에 2를 대입하여 제곱함수를 만들어 square에 할당했다. 그리고 square(3)을 통해 3^2 = 9를 출력하게 된다. 끝.

파이썬(Python) replace 함수로 텍스트 공백 없애기

파이썬의 replace 함수를 이용해 텍스트의 공백을 없앨 수 있다. replace 함수는 string에서 사용할 수 있는데 문법은 아래와 같이 간단하다. some_string.replace('old', 'new') replace를 이용해 공백을 없애기 위해서는 replace를 "old = 공백, new = 아무것도 입력하지 않음"으로 바꿔주면 된다. 아래의 예제를 통해서 살펴보자. 1 2 3 4 5 text = "Good Morning Good Afternoon Good Evening Good Night" # 텍스트 공백 제거 text_no_space = text . replace( ' ' , '' ) text_no_space text.replace(' ', '')에서 첫 번째 따옴표엔 공백이 1개 들어가 있고, 두 번째 따옴표엔 아무런 입력내용 없이 따옴표 두 개가 연속적으로 타이핑된 것에 주의하자. 아래와 같이 text의 공백이 모두 제거된 것을 확인할 수 있다. 끝.

파이썬(Python)을 이용한 히스토그램 그리기

파이썬을 이용해 히스토그램을 그릴 수 있다. 예시를 통해 살펴보자. 먼저 아래와 같이 body라는 데이터프레임을 만든다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import pandas as pd height = [ 170 , 168 , 177 , 181 , 172 , 171 , 169 , 175 , 174 , 178 , 170 , 167 , 177 , 182 , 173 , 171 , 170 , 179 , 175 , 177 , 186 , 166 , 183 , 168 ] weight = [ 70 , 66 , 73 , 77 , 74 , 73 , 69 , 79 , 77 , 80 , 74 , 68 , 71 , 76 , 78 , 72 , 68 , 79 , 77 , 81 , 84 , 73 , 78 , 69 ] # DataFrame 만들기 body = pd . DataFrame( { 'height' : height, 'weight' : weight } ) body . tail() 위 코드에 대한 설명은 " 파이썬(Python) Pandas를 이용한 데이터프레임(DataFrame) 만들기 " 포스팅에 설명해 놨으니 참고하자. 아래의 코드가 이번 포스팅의 메인인 히스토그램을 그리는 방법에 대한 설명이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # 히스토그램 그리기 import matplotlib.pylab as plt import numpy as np body[ 'height' ] . plot(kind = "hist" , range = ( 160 , 190 ), bins = 12 , edgecolor = "b

파이썬(Python)을 이용한 피어슨 상관계수 구하기

피어슨 상관계수(Pearson correlation coefficient)는 두 변수 간의 상관관계를 확인하기 위한 가장 기본적인 방법이다. 피어슨 상관계수를 사용할 때 주의해야할 사항은 아래와 같다. - 상관관계가 인과관계를 의미하는 것은 아니다. 단순히 두 변수의 연관성을 확인하는 것이다. - 두 변수가 정규분포일 때 잘 작동한다.  - 이상치(outlier)에 민감하므로, 이상치는 제거하는 것이 좋다. - 두 변수가 완전히 동일하면 피어슨 상관계수는 1.0이다. 완전히 반대방향으로 동일하면 -1.0, 전혀 상관 없으면 0이다. 세부적인 해석은 아래와 같이 한다. - -1.0과 -0.7 사이이면, 강한 음적 선형관계 - -0.7과 -0.3 사이이면, 뚜렷한 음적 선형관계 - -0.3과 -0.1 사이이면, 약한 음적 선형관계 - -0.1과 +0.1 사이이면, 거의 무시될 수 있는 선형관계 - +0.1과 +0.3 사이이면, 약한 양적 선형관계 - +0.3과 +0.7 사이이면, 뚜렷한 양적 선형관계 - +0.7과 +1.0 사이이면, 강한 양적 선형관계 파이썬을 통해 피어슨 상관계수를 쉽게 구할 수 있다. 예시를 통해 알아보자. height, weight의 두 변수를 가지는 body라는 DataFrame을 만들었다. DataFrame을 만드는 과정은 아래의 포스트에서 확인할 수 있다.  "파이썬(Python) Pandas를 이용한 데이터프레임(DataFrame) 만들기" body 데이터프레임으로 피어슨 상관계수를 구하는 코드는 아래와 같다.  1 2 corr = body . corr(method = 'pearson' ) corr Jupyter Notebook으로 구하면 아래와 같은 결과를 얻는다. 표의 행과 열을 살펴보면 "height - height", "weight - weight"는 1이

파이썬(Python) Pandas를 이용한 데이터프레임(DataFrame) 만들기

파이썬(Python)에서 데이터를 다루는데 Pandas 라이브러리가 유용하게 쓰인다. Pandas에서 데이터를 핸들링 하기 위해서는 데이터를 데이터프레임(DataFrame)으로 만들어 주는 것이 유용하다. 아래는 height와 weight라는 리스트를 합쳐서 DataFrame을 만드는 코드이다. 1 2 3 4 5 6 7 8 9 10 11 12 import pandas as pd height = [ 170 , 168 , 177 , 181 , 172 , 171 , 169 , 175 , 174 , 178 ] weight = [ 70 , 66 , 73 , 77 , 74 , 73 , 69 , 79 , 77 , 80 ] body = pd . DataFrame( { 'height' : height, 'weight' : weight } ) body 1. pandas를 import한 뒤 통상 "pd"로 별칭을 붙여 사용한다. 2. 데이터가 리스트든, csv든 데이터프레임으로 만들 때는 "pd.DataFrame()"을 사용한다. Jupyter Notebook으로 코드를 실행해보면 아래와 같이 데이터프레임이 잘 만들어짐을 확인할 수 있다. 끝.

SQL - DAU 산출

0. DAU(Daily Active Users, 일별 활성 사용자)는 앱 또는 웹을 사용한 사용자 수를 일별 집계한 값이다. 게임 앱이라고 가정한다면, 일별 게임 플레이한 유저 수가 DAU라 할 수 있다. 유저 수는 중복을 제거한다. DAU에 대한 자세한 설명은 위키피디아 에서 확인할 수 있다. 1. 먼저 매일 게임을 플레이한 유저를 기록하는 PLAYS라는 가상의 DB가 있다고 하자. user_id와 플레이한 date가 기록되어 있는 간단한 샘플 DB를 아래와 같이 만든다. 1 2 3 4 5 6 7 CREATE TABLE PLAYS(user_id integer, created_at date); INSERT INTO PLAYS VALUES ( 1 , '2019-01-03' ); INSERT INTO PLAYS VALUES ( 2 , '2019-01-03' ); INSERT INTO PLAYS VALUES ( 3 , '2019-01-03' ); INSERT INTO PLAYS VALUES ( 1 , '2019-01-04' ); INSERT INTO PLAYS VALUES ( 2 , '2019-01-04' ); PLAYS 테이블이 잘 만들어졌는지 확인한다. 1 SELECT * FROM PLAYS; 아래와 같이 (user_id, | created_at)으로 이루어진 PLAYS 테이블이 생성된 것을 확인할 수 있다. 2. DAU는 "일별로 유저 수 집계", "중복 유저 제거" 2가지 조건을 충족시켜야 한다. 즉 date()를 기준으로 count()를 하되 distinct를 사용하여 중복 유저를 제거한다. user_id의 중복을 제거하고, unique한 값만 사용하기 위해 "distinct user_id"로 작성하였다. &qu