기본 콘텐츠로 건너뛰기

라벨이 파이썬인 게시물 표시

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

파이썬(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) 람다함수(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)을 이용한 선형 회귀분석(linear regression)

파이썬의 statsmodels 라이브러리를 이용해 간단하게 선형 회귀분석을 해볼 수 있다. 예시를 통해 살펴보자. 먼저 아래와 같이 예시 데이터프레임을 만든다. 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 , 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 ] body = pd . DataFrame( { 'height' : height, 'weight' : weight } ) body . tail() 위 코드에 대한 설명은 "파이썬(Python) Pandas를 이용한 데이터프레임(DataFrame) 만들기" 포스팅을 통해 확인할 수 있다. 위 코드를 Jupyter Notebook을 통해 실행해보면 아래와 같이 데이터 프레임이 만들어진 것을 확인할 수 있다. 선형 회귀분석은 아래와 같은 가정을 만족해야 한다. 선형 회귀분석을 할 때에는 데이터가 아래의 가정을 따르는지 먼저 생각해보는 습관을 기르자. - 변수의 선형 상관관계 : 선형 회귀분석은 종속변수(Y)와 독립변수(X)가 선형의 상관 관계를 가지는 것을 가정한다. 선형의 상관관계가 아닐 경우, 다른 회귀분석 방법을 사용하거나, 새로운 변수를 추가하거나, 기존의 변수를 로그, 지수등의 방법으

파이썬(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