코로나가 장기화되면서 화상으로 많은 것들이 이루어지고 있습니다. 대학원 다닐때는 학교에서 줌이 제공되어서 여러모로 요긴하게 썼는데 이제 졸업이니 ㅜ 줌을 쓰려면 40분씩 하던지 다른 걸 써야합니다. 그런데 줌으로 아이패드 미러링해서 작업을 많이 했는데 skype나 네이버는 아이패드 미러링이 불가능한 것 같습니다. 그래도 할 수 있는 방법이 있나 싶어서 찾아보았습니다~! Lonely screen 이라는 프로그램이 있더군요!! 거기다 공짜입니다. 요긴하게 쓸 수 있는 것 같습니다. 이번 포스팅에서는 아이패드 미러링 하는 방법을 쓸까 합니다. LonelyScreen 설치하기 설치 사이트를 링크해두겠습니다. https://www.lonelyscreen.com/download.html AirPlay Receive..
최근 PC와 스마트폰 파일을 무선으로 전송하는 법을 알게 되어서 공유의 의미로 포스팅합니다. cx탐색기라는 앱으로 할 수 있는데요. 요즘 정말 세상 좋아졌다는걸 다시 느낍니다. 파일전송하는 방법은 다음과 같습니다. 1. 구글 스토어에서 cx탐색기앱 검색해 설치합니다. 2. cx탐색기앱을 열어 네트워크 탭에 네트워크에서 액세스를 누릅니다. 3. 아래와 같은 그림이 나옵니다. 체크할 부분을 체크하고 시작을 누릅니다. 공용컴퓨터면 보안을 위해 무작위 비밀번호를 체크합니다. 그럼 무작위로 비밀번호가 지정됩니다. 집 컴퓨터면 저장을 위해 무작위 비밀번호를 체크하지 않으면 비밀번호를 저장해서 쓸 수 있으니 편합니다. 숨겨진 파일을 전송하고자 한다면 숨겨진 파일표시에 체크하시고 아니면 체크하지 않습니다. 4. 시작을..
판다스로 단순 이평선을 구할 때는 판다스 내에 rolling을 이용한 방식으로 구합니다. 그런데 커스텀하게 만든다면 결국 recursive 알고리즘을 쓰게 되어있습니다. 왜냐하면 주식데이터는 시간과 값으로 이루어져 있고 시간에 따른 변화를 분석하는 것이 보통 금융데이터 분석을 하는 목적이기 때문입니다. 결론적으로 Recursive를 써야하니 속도 개선이 필요합니다. 이번 포스팅에서는 판다스를 이용할 때의 속도 개선입니다. Exponentially weighted moving average(EWMA)라는 지수가중평균선을 만들어 분석하는 시간이 얼마나 드는지 확인해보겠습니다. 판다스로 EWMA를 바로 만들 수 있지만 임의로 만들어서 해보겠습니다. EWMA EWMA에 대한 자세한 설명은 나중에 기회가 되면 따..
Recursive algorithm의 경우에 대해 알아보겠습니다. 이전 포스팅에서 numba와 cython을 가지고 속도 개선을 했는데 Recursive algorithm은 통하지 않습니다. 그 이유와 개선 방법에 대해 설명하겠습니다. 참고로 현재 속도개선에 관한 포스팅은 python for finance라는 책을 참고해서 포스팅하고 있습니다. 그런데 책대로 해도 다 되는 건 아니라서 여기저기 참고하면서 블로그에 정리를 하고 있습니다. 이러면서 공부가 되는거겠죠? 아무튼 정리의 목적이 크니 알아두셨으면 합니다. Recursive algorithm 재귀라고 하는 방법입니다. 고등학교 수학시간에 수열에서 배운 점화식을 얘기합니다. 함수를 만들면 만든 함수를 이용해 다음 수를 계산하는 방법입니다. 예로 팩토리..
알고리즘을 구성했을 때 파이썬에서 속도 개선을 위한 시도입니다. 어느 알고리즘을 하느냐에 따라 속도 차이는 있을 수는 있습니다. 알고리즘 이론에서 배우는 복잡한 알고리즘 말고 간단한 알고리즘으로 이전 포스팅에서 얘기한 속도 개선방안 중 어느 것이 효율적인지 확인해보도록 하겠습니다. 알고리즘은 소수 찾는 방법을 만들건데 메르센소수나 페르마 소수 같은 수학 지식이 들어간 방법 말고 소수의 정의대로 알고리즘을 만들어서 시도를 하겠습니다. 소수는 1과 자기자신으로만 나누어지는 숫자를 의미합니다. 예로 2,3,5,7 이런 수가 있습니다. 숫자가 작으면 금방 소수인지를 알아낼 수 있지만 숫자가 커지면 굉장히 어려워집니다. 소수를 찾는 규칙이 따로 존재하면 규칙을 사용하면 되지만 현재로서는 그런 규칙은 부분적으로만 ..
Loop의 퍼포먼스 개선입니다. 순수 파이썬, numpy, numda와 cython으로 평균을 구하는 루프를 만들어 시간 비교를 해보겠습니다. 시간 측정을 위해서 %time 과 %timeit을 쓰려고 합니다. %time은 한 줄의 코드 실행시간을 측정할 때 사용할 수 있고 %timeit은 코드를 여러 번 시도를 한 후 시간 측정을 해서 오차범위를 알려줍니다. Python 파이썬의 내장함수로만 평균을 구해보겠습니다. %time은 코드 한 줄로 해야되니 평균을 구하는 함수를 만들어서 진행을 하겠습니다. import random def average_python(n): s = 0 for i in range(n): s += random.random() return s/n n= 1000000 %time avera..
파이썬은 간결하고 직관적으로 쓸 수 있는 장점이 있는 반면에 굉장히 느린 코드입니다. 루프나 알고리즘을 실행하면 다른 언어에 비해 시간이 오래걸립니다. 간단한 구조는 시간이 얼마 안 걸려서 큰 문제는 없겠지만 알고리즘이 복잡해지고 데이터 크기가 커지면 시간은 굉장히 중요한 요소가 됩니다. 답은 간단하게 속도가 빠른 C 나 C++을 쓰면 되지만 갑자기 C를 배워서 할 수 있는 실정이 안 된다면 파이썬 안에서 개선할 방안을 찾아야 합니다. 개선 방안으로는 다음과 같이 있습니다. Vectorization(벡터화) : 좌표값이나 행렬로 값을 모으는 것을 벡터화라고 합니다. 주로 수학이나 공학에서 쓰는 행렬개념과 비슷합니다. 벡터를 행렬표시로 변환해서 쓰면 행렬 계산으로 넘어가 계산을 하게 되는 건데 그런 학술적..
다른 캡처 프로그램을 쓰지 않고 간편하게 웹페이지 전체 캡쳐하는 방법을 알게 되서 공유겸 포스팅합니다. 전체 화면은 스크롤을 하면서 캡쳐해야해서 캡처도구로는 한계가 있는데 개발자 모드를 활용하면 손쉽게 전체 화면 캡처를 할 수 있습니다. 그 방법은 아래 내용에서 확인하시길 바랍니다. 네이버 메인 페이지를 캡쳐해보겠습니다. 웹페이지 전체 캡쳐하기 1. 크롬에서 네이버에 들어간 후 개발자 모드를 엽니다. F12를 누르면 개발자 모드가 열립니다. 2. 개발자 모드를 연 상태에서 Ctrl+Shift+p를 누릅니다. 그러면 위 그림같이 쓰는 란이 하나 생깁니다. 3. 쓰는 란에 Capture를 칩니다. 아래 그림처럼 여러가지 명령어가 나오는데 Capture full size screenshot을 선택합니다. 4...
pip은 파이썬을 설치하면 내장되어 있기 때문에 따로 설치가 필요없지만 업그레이드를 하거나 재설치를 해야하는 경우 쓰는 방법입니다. 제가 소개하는 건 윈도우 버전이고 맥이나 리눅스는 그에 맞게 명령어를 써주면 됩니다. get-pip.py 파일 받기 cmd를 켠후 다음을 입력합니다. curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 그러면 현재 지정된 폴더에 get-pip.py이 생깁니다. pip 설치 pip을 설치하기 위해 다음을 씁니다. python get-pip.py 설치가 완료 되었습니다. no such file or dictory python get-pip.py를 했는데 no such file or dictory라며 안 되는 경우가 있습니다. 일반..
cmd에서 pip으로 설치를 할 때 Ignoring invalid distribution -ip 이라는 메세지가 뜹니다. 이건 ~으로 이루어진 폴더 때문인데 임시폴더를 만들어놨는데 아직 지우지 않았거나 이름이 잘못 배정되어 있는 경우에 저런 폴더가 나타납니다. 그래서 유효하지 않는 값을 무시하겠다고 메세지가 뜨는 겁니다. 작업을 진행하는데 아무 지장은 없지만 신경이 쓰인다면 해당 폴더에 가서 '~'로 시작하는 폴더를 지우면 됩니다. 해당 폴더를 가보았더니 ~ip 와 ~ip-20.1.1-py3.6.egg-info 라는 폴더가 있었습니다. 해당 폴더를 지우면 Ignoring invalid distribution -ip 라는 오류가 나오지 않게 됩니다.
파이썬에서 SQLite3을 이용해 db파일의 행추가 ,삭제를 해볼까 합니다. 행 추가 행을 추가하려면 'INSERT INTO 테이블명 VALUES (삽입할 내용)'을 입력합니다. 삽입할 내용은 테이블과 열이 맞아야 합니다. 그렇지 않으면 오류 발생하고 써지지 않습니다. stock이라는 테이블을 만들겠습니다. import sqlite3 as sq3 con = sq3.connect('./stocks.db') cursor = con.cursor() con.commit() q = con.execute q('SELECT * FROM sqlite_master').fetchall() 현재 테이블은 3 개의 열로 되어 있으니 3개의 내용으로 넣어줍니다. 아무거나 넣어보겠습니다. insert = "INSERT INTO ..
파이썬에서 SQL을 간단하게 쓸 수 있는 SQLite3 테이블 생성,변경,제거 방법입니다. SQLite3은 파이썬에 내장되어 있어서 파이썬 내에서 바로 쓸 수 있고 SQL 구문을 사용하기 때문에 다른 SQL 프로그램과 유사한 문법으로 할 수 있습니다. 다만, 말그대로 lite 한 버전이기 때문에 시스템 규모가 커지면 PostgreSQL이나 MySQL 같은 프로그램을 사용하는게 좋습니다. 입문자용으로 보면 될 것 같습니다. 파일 만들기 파일이 있어야 데이터를 넣을 수 있기 때문에 파일부터 만들겠습니다. connect 메쏘드를 이용하면 해당 db에 연결됩니다. 파일이 없는경우 db 파일을 생성하게 됩니다. import sqlite3 as sq3 con = sq3.connect('./stocks.db') 탐색..
FinanceDataReader라는 라이브러리가 있어서 소개겸 포스팅하려 합니다. 이 라이브러리를 쓰면 국내 주식, 미국 주식, 지수, 환율, 주요 암호화폐 가격 데이터를 가져올 수 있습니다. 제가 이 포스팅을 쓰는 이유는 자꾸 잊어버려서 코드를 저장하고자 쓰는 내용이라 원하는 내용이 없을 수도 있습니다. 그리고 라이브러리에서 코드를 바꿔버리거나 서비스를 중지하면 되지 않을 수 있으니 안 되시면 FinancedataReader 가이드 사이트나 Github에서 확인하시기 바랍니다. Install 다음 코드를 파이썬 prompt나 파워쉘에서 입력해 설치를 합니다. 쥬피터에서는 맨 앞에 느낌표(!)를 붙입니다. pip install finance-datareader 전체 종목 코드 가져오기 국내와 미국 주식 ..
Checkbutton의 세가지 모양에 대해 알아보겠습니다. GUI 창이 떴을 때의 Checkbutton 모습을 임의로 만들 수 있는데 다음과 같은 형태로 만들 수 있습니다. 목차 체크 불가능 버튼 체크 불가능 버튼을 만들려면 tk.Checkbutton의 파라미터에 state = disabled 를 추가합니다. 체크가 된 상태로 만들고 싶다면 select 메쏘드를 사용합니다. select를 넣으면 체크가 된 상태로 GUI 창이 뜹니다. deselect를 넣으면 체크가 안 된 상태로 창이 뜨게 됩니다. import tkinter as tk root = tk.Tk() check1 = tk.Checkbutton(root, text='Disabled',variable=tk.IntVar(),state= 'disab..
notna와 notnull을 이용하여 결측치가 아닌 값을 찾는 방법입니다. isin이나 isna로 하는 게 더 편하긴 하지만 쓰기 나름이라서 누군가는 필요할 수도 있으니 일단 포스팅을 하겠습니다. 예제로 데이터프레임을 하나 만들겠습니다. df = pd.DataFrame(dict(level=[1,2,3,4,5,np.nan],age=[12,13,18,20,np.nan,23])) df notna 와 notnull 의 기능 notna 와 notnull 은 isna와 반대로 결측치가 아닌 값을 찾아내는 기능을 가지고 있습니다. 그래서 bool로 출력이 되는데 결측치에는 False로 나오게 됩니다. df_notna = pd.notna(df) df_notna df_notnull = pd.notnull(df) df_n..