최근에 노트북을 새로 장만했습니다. 제 데스크탑에서 쓰던 개발환경 그대로 가져올 수 있는 방법이 있지 않을까 하는 마음에 찾아보니 여러 방법이 있더군요. 그 중에서 conda를 이용한 방법을 정리합니다. 설치방법은 간단합니다. conda로 기존의 개발환경 설치 패키지 목록을 .txt로 저장한 후 새로 설치할 곳에 목록대로 설치해달라고 요청하면 됩니다. 패키지 설치 목록 가져오기 내가 원하는 가상환경의 설치 목록을 가져오는 방법입니다. 설치 목록을 txt 파일로 저장하겠습니다. 파워쉘이나 cmd에서 실행을 할건데 자신이 복사할 가상환경이 액티브되어 있는지 반드시 확인하시고 실행하시기 바랍니다. 쥬피터에서도 물론 할 수 있습니다. 코드 앞에 !를 붙이고 실행하면 문제없이 돌아갑니다. 목록을 부르는 것이 co..
논문이 끝난 줄 알았는데 어디에 내야한다며 영어를 아주 제대로 해오라는 교수님의 말씀에 저의 모든 계획이 무너지고 있습니다. 더 잘 만들어서 포스팅을 하려고 했는데 좀 아쉽지만 어쨋든 이번 포스팅에서는 판다스의 rolling을 이용한 분석 예제을 할까 합니다. 영원히 안 올릴 수도 있을 것 같아서 준비가 덜 되었지만 맛보기로 올립니다. 이게 코딩이라기보다 금융 데이터 분석에 가까워서 카테고리에 안 맞을 수 있습니다. 어쨋든 앞선 포스팅에서 이동평균선을 rolling으로 구했었는데 이걸 가지고 다양한 각도에서 볼 수 있는 통계적 분석을 할까 합니다. CJ제일제당의 데이터를 가지고 해보겠습니다. 편의를 위해 날짜와 종가만 가지고 오겠습니다. df 통계 수치 window를 20으로 해서 할 수 있는 몇가지 통..
파이썬에서 해당폴더의 특정확장자 파일이 있는지 검색하는 방법입니다. 전체경로를 가지고 오는 것까지 하겠습니다. 두가지 방법만 설명하겠습니다. os 로 찾기 glob 로 찾기 OS 로 찾기 이전 포스팅 에서 한번 살짝 다루었는데 그때는 os를 이용해 파일 목록만 가져왔습니다. 이번에는 좀 더 업그레이드 되어서 해당 폴더에서 특정 확장자 파일목록만 가져오겠습니다. 이걸 하기 위해서는 endswith()라는 함수를 써야 하는데요. endswith()은 특정 문자열에서 제시한 것이 있는지 없는지 확인하는 함수인데 다음과 같이 쓸 수 있습니다. 'abcd'.endswith('cd') 특정 문자열 뒤에 함수를 넣어주고 확인할 문자열을 괄호안에 넣어주면 됩니다. endswith()를 이용해서 다음과 같이 진행을 합니..
파이썬 상에서 심플하게 주식차트를 만들어보겠습니다. matplotlib는 간단히 쓸때 단순한 통계적인 결과의 그래프를 많이 사용했다면 cufflinks를 사용하여 특히 금융 데이터를 다룬다면 좀 더 실제적인 그래프들을 그릴 수 있습니다. 주식종목의 과거데이터를 이용해 주식 데이터 분석을 할때 굉장히 유용하고 이를 활용해서 새로운 전략에 대한 영감을 받을 수 있지 않을까 싶습니다. 데이터는 Kosdaq 150 레버리지를 사용했습니다. 요즘 포스팅할때마다 쓰는 것 같아서 조금 그렇긴 하지만 쓰던 것 쓰는게 좋으니 또 쓰겠습니다. df 일단 plotly, cufflinks, pandas를 가져오겠습니다. import pandas as pd import cufflinks as cf import plotly.of..
데이터프레임의 타입을 바꾸는 방법입니다. 사용 데이터는 국내 etf인 kosdaq 150 레버리지의 가격입니다. df.head() 데이터프레임 타입 확인하기 데이터프레임 타입을 확인하려면 dtypes를 이용합니다. df.dtypes 각 컬럼의 타입이 나옵니다. 지금 df 같은 경우 날짜만 datatime64[ns] 이고 나머지는 int64 입니다. 데이터프레임 타입 전체 한꺼번에 바꾸기 모든 타입이 같을 때는 df.astype('타입')을 하면 바뀌기 때문에 간단합니다. 물론 무조건 되는 건 아니고 서로 바뀔 수 있는 타입이라는 가정에서 된다는 얘기입니다. astype이 만능키가 아님을 강조합니다. astype은 다루기 쉬우니깐 요령 하나를 알려드릴까 합니다. 타입이 다른게 섞여있을 때 데이터프레임을 분..
데이터프레임의 column의 이름을 바꾸는 방법입니다. column 이름바꾸기 df 국내 ETF인 kosdaq 150 레버리지입니다. df로 놓겠습니다. df의 column을 보면 한글로 되어있습니다. 작업을 편하게 하기 위해서 한글로 된 column 이름을 Date,Open,High,Low,Close로 바꾸려고 합니다. column 전체 이름 한꺼번에 바꾸기 전체 column의 이름을 바꾸고 싶다면 df.columns로 바로 할 수 있습니다. df.columns를 요청하면 다음과 같이 리스트형식 비슷하게 나옵니다. df.columns columns들을 바꾸기 위해서 다음과 같이 합니다. df.columns = ['Date','Open','High','Low','Close'] df 근데 이건 모든 걸 다..
matplotlib는 정적인 그래프를 그려서 줌인이나 줌아웃, 그래프 다운로드 등을 하려면 코드을 더 쳐서 그래프를 움직이고 변경하는 방식을 반복했습니다. 이 기능을 한번에 할 수 있는 plotly를 소개할까 합니다. plotly가 기능이 많은데 각 기능은 따로 떼어서 작성하고 이번 포스팅에서는 가장 간단한 기능만 소개하겠습니다. 설치 plotly는 아나콘다에서 기본적으로 설치되는 모듈이 아니라서 따로 설치를 해야합니다. plotly를 사용하려면 cufflinks 라는 모듈을 사용해야 그래프가 그려집니다. 데이터프레임을 iplot을 해야하는데 cufflinks가 임포트되어 있지 않으면 오류가 발생하고 작동을 안 합니다. 설치는 pip으로 하면 됩니다. 저는 쥬피터 노트북을 주로 사용해서 쥬피터 노트북 기..
matplotlib를 이용해 3D plot의 앵글을 바꾸는 방법입니다. 3D는 입체라서 여러면이 존재하는데 회전을 시켜가며 보는게 가장 정확하게 그림을 보는거지만 matplotlib는 정적인 그림이라 한면만 보여줍니다. 그래서 앵글을 바꿔서 보여주는 방식으로 되어 있습니다. view_init()를 쓰면 간단히 되어서 이번 포스팅은 굉장히 짧지 않을까 싶습니다. 이전 포스팅에서 3D plot을 그려보았는데 이번엔 다른 면을 보기 위해 각도를 바꾸겠습니다. view_init의 파라미터부터 보면 다음과 같습니다. view_init(elev=None , azim=None) elev : elevation을 약자로 쓴것으로 z plane의 각도를 의미. 입력한 각도대로 위 아래로 변화함. azim : azimuth..
matplotlib를 이용해 3D 그래프를 그려보겠습니다. 분야에 따라서 많이 쓰이는 곳도 있고 아닌 곳도 있지만 여러모로 유용하게 쓸 수 있는 툴입니다. 더 좋은 모듈이 있지만 파이썬의 기본 모듈로 그릴 수 있는 것도 좋을 것 같아서 공유의 의미로 포스팅을 할까 합니다. 3차원 그래프를 그리는 것이니 3차원 좌표가 필요합니다. 3차원 좌표를 바로 만들어서 할 수도 있고 함수에 의해 데이터가 이루어진다면 z=f(x,y) 으로 여기고 그에 맞게 데이터를 맞춰주면 됩니다. 함수에 의해 움직이는 데이터를 가지고 해보겠습니다. import numpy as np x = np.linspace(50,150,24) y = np.linspace(0.5,2.5,24) x,y = np.meshgrid(x,y) z..
넘파이의 meshgrid() 함수를 이용해 직사각형의 그리드를 만들어보겠습니다. 먼저 직사각형 그리드는 말 그대로 격자를 의미합니다. Pij=(xi,yj) 라고 하면 그림과 같이 하나의 좌표로써 표현 할 수 있는데 그림과 같이 직사각형 그리드 안에서 될 수 있도록 배치를 하는게 meshgrid의 역할입니다. meshgrid()를 이용해서 교정(?)을 해놓으면 3차원 그림을 그릴 때 유용합니다. 매개변수(Parameter) meshgrid()의 파라미터를 살펴보면 다음과 같습니다. np.meshgrid(xi, copy=True, sparse=False, indexing='xy') xi : 그리드에 나타낼 1차원 배열 벡터 copy : 디폴트는 True, False가 되면 메모리 절..
여러모로 많이 쓰이는 히스토그램 그리는 방법에 대해서 알아볼까 합니다. matplotlib를 이용해 그리는데 파라미터가 굉장히 많습니다. 그만큼 변형이 많이 되는 그래프입니다. 파라미터를 보면 굉장히 많습니다. plt.hist(x,bins=None, range=None, density=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, **kwargs) 여기서 메인으로 쓰는 파라미터만 설명을 하겠습니다. x : 데이터값으로 리스트나 ndarray 타입으로 넣음..
데이터프레임의 데이터가 많으면 원하는 자료를 눈으로 찾기가 어려운데 흔히 하는 찾기(ctrl+f)기능과 같은 역할을 하는 str.contains()를 소개하겠습니다. 예제 자료는 국내의 etf 종목리스트입니다. listing이라고 합시다. listing 468개의 종목이 있지만 내가 원하는건 레버리지가 붙은 종목인데 찾을수가 없습니다. 이럴 때 '레버리지' 만 가지고 종목을 찾아보고 싶을때 str.contains()을 씁니다. str.contains() 타입 일단 str.contains()만 했을때 어떤 타입이 나오는지 확인해보겠습니다. 이 함수는 column을 대상으로 찾는 기능이므로 찾을 대상을 column으로 지정하고 해야합니다. listing['Name'].str.contains('레버리지') b..
데이터 값이 어디에 모여있고 어디로 떨어져있는지 알 수 있는 산포도 그래프를 작성해보겠습니다. 작성 방법은 간단합니다. plt.scatter(x,y,c,marker,cmap) 정도를 이용하면 기본적인 plot을 만들 수 있습니다. x,y는 데이터 포지션으로 x축, y축을 무엇으로 할 것인지 정해줍니다. cmap으로 colorbar를 만들 수 있는데 값에 따라 색깔을 정해줍니다. 색깔을 정해주는 데이터 값을 c에 입력합니다. c는 전체 색깔리스트를 입력하는 것이니 리스트로 입력합니다. marker는 표시하는 방식인데 디폴트값은 'o'로 되어있습니다. 즉, 점으로 표시가 됩니다. 딱히 변경할게 없는 파라미터이긴 합니다. 좀 더 풍성하게 그래프를 그릴려면 scatter에 쓰이는 파라미터를 더 알고 있어야 하지..
matplotlib를 이용해 여러개의 그래프로 나오게 하겠습니다. subplot을 이용하면 가능한데 먼저 예제를 통해 설명하겠습니다. import matplotlib.pyplot as plt import numpy as np y = np.random.standard_normal((10,2)) y 2차원 데이터입니다. 2차원 데이터는 그래프가 column별로 나눠지므로 2개의 그래프가 나타나게 됩니다. 이 그래프를 한곳에 넣지 말고 각각 나눠서 넣기 위해 subplot을 사용합니다. plt.subplot(211) plt.plot(y[:,0],label='1column') plt.plot(y[:,0],'ro') plt.legend(loc=0) plt.subplot(212) plt.plot(y[:,1],lab..
matplotlib를 이용해 n차원 데이터를 그리는 방법을 살펴볼까 합니다. 2차원을 먼저 살펴보고 n차원을 그려보겠습니다. n차원 사실상 숫자가 정해져 있지 않으니 n=10으로 정하겠습니다. n차원이라 해서 어려운 건 없고 하나의 plot에 그래프 갯수가 n개 나온다는 것뿐입니다. 2차원 데이터 랜덤으로 (10,2) 모양의 데이터를 가져오겠습니다. import matplotlib as plt import numpy as np y = np.random.standard_normal((10,2)) y 그래프를 그리면 첫번째 column과 두번째 column으로 나눠집니다. plt.plot(y,lw=1.5) plt.plot(y,'ro') 2차원이라서 두개로 나눠집니다. n차원이라면 n으로 나눠지게 됩니다. 구..
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.