본문 바로가기

2017/05

Delete redundant rows in pandas dataframe import modulesimport pandas as pd Create dataframe with duplicatesraw_data = {'first_name': ['Jason', 'Jason', 'Tina', 'Jake', 'Amy'], 'last_name': ['Miller', 'Miller', 'Ali', 'Milner', 'Cooze'], 'age': [42, 42, 36, 24, 73], 'preTestScore': [4, 4, 31, 2, 3], 'postTestScore': [25, 25, 57, 62, 70]} df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age', 'preTestScore', 'postTestSc.. 더보기
나만의 주식 분석 프로그램을 활용한 2 번째 매매일지 파이썬을 이용한 새로운 알고리즘으로 주식 분석 툴을 만들어 사용한지 10일정도 되었다. 이번에 만든 프로그램은 이전 것보다 많은 양의 데이터 처리를 해서 그런지 몰라도 종목 선택이 더 적확하게 이루어 지고 있는 것 같다는 느낌이다.지난번 매매일지를 올린 이후 1주일의 시간이 더 흘렀다. 주 초반에는 매매하고 별로 움직임을 보이지 않던 종목들이 마지막 금요일을 기점으로 일제히 우 상향을 이루면서 지난 주에 이어 이번주도 수익을 내면서 마감을 하였다. 옛날 같았으면 저기 마이너스 나고 있는 기간동안 조바심이 나서 단타를 치고는 하였는데, 믿는 구석(?) 이 생긴이후로는 인간의 욕심보다 객관적인 수치에 기반한 분석이 더 정확하리라는 생각에 단타보다는 지켜보자는 마음이 생겼다. 그로 인해 일희일비 하지 않게 되.. 더보기
실시간 내 주가를 알려주는 Python Code 이번에는 실시간 주식 데이터를 가져와서 시시각각 동향을 출력하게 하려고 한다. 그 후에는 내가 보유한 종목의 주가 흐름을 계속 추적하고, 더 나아가 컴퓨터가 보유종목의 주가를 계속 오디오로 알려주게 하는데까지 알아보려고 한다. 포털사이트 다음의 증권에 올라오는 종목 시세를 참고하였다. 옛날 같으면 포털사이트에서 제공하는 주가는 20분 지연 시세를 제공하여 효용성이 많이 떨어졌던게 사실이다. 그러나 이제는 실시간 시세를 제공하고 있으므로, 증권사에서 제공하는 데이터 못지않게 빠르고 정확하다. 그래서 다음 사이트의 데이터를 가지고 와서 뚝딱뚝딱 기름칠해서 내가 필요로 하는 정보만을 추출하였다. 아래는 그 코드이다. import urllib.request, time, os, re, csv, sys def fe.. 더보기
왜 파이썬에서 멀티 프로세스를 사용하는가? | Why do we use multiprocess in python? 파이썬에서 멀티 쓰레드(Multi Thread)와 멀티 프로세스(Multi Process)를 사용하는 경우가 종종 있다. 그런데 왜 이런 모듈을 사용할까? 이유는 간단하다. 동일한 작업과정을 단시간에 효율적으로 처리하기 위해서다. 아래는 주식 분석 코드의 일부분만을 발췌해 보았다. Stock() 이라는 클래스를 정의하고 그 처리하는 과정과 처리하는데 소요된 시간을 표기하였다. 코스피, 코스닥 종목이 현 시점에서 도합 2,000 여 종목이 된다. 이를 하나씩 읽어들여 DB에 저장된 값으로 분석을 할 수도 있고, 인터넷이 연결되어 있다면 바로 주식 데이터를 다운받아 처리할 수도 있다. 이 중 하나의 방식으로 전 상장종목을 처리해 보았다. 대략 3822초가 소요되었다. 그러니까 1시간하고 약 4분 정도 걸린셈.. 더보기
if you want to split a large csv file into several smaller ones, just use 'split' in shell. I have a large csv file(10Gb). But it's too large to process on a program. There is a way to solve this problem. You can use bash command 'split'. Just take a look at an example below. $ split -l 100 data.csv this command will separate data.csv into every 100 lines with a lot of files. It's so simple. 더보기
나만의 주식 매매 프로그램을 이용한 수익 일지 개인적으로 주식 매매 경력(?)이 근 20년이 되어 간다. 지난 세월을 반추해보면, 주식만큼 날 괴롭힌게 있나 싶을정도로 천당도 맛 보았고, 지옥도 맛보게 한 것이기 때문이다. 어릴때는 일확천금에 대한 환상으로 온갖 정보를 찾아보고 섭렵하여 뭐든지 할 수 있을 것만 같았던 시절도 있었다. 그러나 세상이 내가 원하던 대로만 살아지던가. 인간의 욕심은 또 다른 욕심을 낳고, 그 욕심으로 말미암아 뜻하지 않은 일을 당하기도 하더란 말이다. 지족불욕이라 하였다. 욕심을 버리고 기계적으로 주식매매를 해보기로 마음 먹은지 10여년이 지났다. 그 간 많은 것들을 만들어보기도 하고, 폐기하기도 하였다. 물론, 지금도 진행형이다. 한 동안은 완벽하다고 생각했던 프로그램이 뜻하지 않은 변수로 사장되는 일도 있었다. 그렇지.. 더보기
Stochastic Oscillator(스탁캐스틱) 구현하기 using Python | Making Stochastic Oscillator by using Python The stochastic oscillator is calculated using the following formula: %K = 100(C - L14)/(H14 - L14) Where: C = the most recent closing price L14 = the low of the 14 previous trading sessions H14 = the highest price traded during the same 14-day period %K= the current market rate for the currency pair %D = 3-period moving average of %K 이 지표의 기초가 되는 일반적인 이론은 상승 추세에 있는 시장에서는 종가가 당일 최고가 근접 가격에 형성될 것이.. 더보기
볼린저밴드 구현하기 using python | Cal Bollinger bands using Python 파이썬을 이용해서 볼린저밴드 구현하기 Ver. 0.1def anaylize_bolllinger(df,dir_name,dest_path,date_list): df_normalize=df['Close']/df['Close'].ix[0,:] # Compute rolling mean,rolling standard deviation,upper and lower band of Bollinger rm=df['Close'].rolling(window=20,center=False).mean() rmstd=df['Close'].rolling(window=20,center=False).std() upper_band, lower_band = get_bollinger_bands(rm,rmstd) dp=df['Close'].ro.. 더보기
python pandas 에서 특정 컬럼값의 row 를 제거하기 | Deleting DataFrame row in Pandas based on column value 파이썬의 Pandas를 사용하면서 특정값의 row 가 존재할 때, 이 row 를 제거하기위해서는 그 값이 들어가는 row를 제외한 나머지 값들을 다시 dataframe으로 지정해주면 손쉽게 데이터를 처리할 수 있다. 위의 그림은 어느 특정 데이터에서 'Volume'값이 0인 값이 존재하는 row가 2개 있는 그림이다. 여기에서 이 두 항목을 제거하고 다른 데이터 핸들링이 필요할 경우에 유용하다. 아래 그림은 그 결과값이다. 더보기
OSX 스크린샷 기본 포맷 변경 jpg,png,gif,tiff,pdf | how to change ScrreenShot Image format to jpg,png,gif,tiff,pdf on OSX 맥을 사용하다 보면, 스크린샷을 찍어 활용할 경우가 허다하다. 그런데, OSX의 기본 스크린샷 포맷은 png 이다. 경우에 따라서 다른 형태로 변환을 할 필요가 생기는데 OSX 자체적으로 손 쉽게 이미지 포맷을 변환해서 스크린샷을 찍을 수 있다. 아주 간단히 터미널 명령어 하나만으로도 가능하다. 기본 터미널 명령어는 아래와 같다.defaults write com.apple.screencapture type 포맷 && killall SystemUIServer포맷 위치에 png, jpg, gif, pdf, tiff 등 다양한 형태의 이미지 포맷을 넣고 터미널에서 실행을 하면, 촬영하는 스크린샷은 해당 이미지 포맷 형태로 뱉어내어 준다. 물론 확장 포맷에 따라 화질의 차이가 있을 수 있으니 이는 사용자의 판단.. 더보기
주식 정보 데이터베이스(db) 구축하기 by using python | storing stock data into database(DB) by using python 몇 년 전부터 db에 저장된 데이터를 이용해서 종목 발굴 알고리즘을 돌려놓고 있으며, 이를 이용해 특이점이 발견된 종목은 바로바로 문자 or email 등을 통해서 알려주고 관련 데이터를 저장하게 하는 시스템을 구축해 놓은 상황이다. 관련해서 문의 글이나 메일 혹은 문자를 통해 방법을 문의하는 글이 있어 개략적이나마 기본 개념을 작성해 두려고 한다. 우선 파이썬을 이용해서 주식 데이터를 데이터베이스(db)에 저장하는 작업을 하려고 한다. 이를 위해 기본 개념 몇몇을 알고 있어야 하지만, 관심이 있으신 분들은 관련 정보를 공부해 보시길 바란다. 가장 먼저 파이썬이라는 프로그램의 기본 개념을 익혀야 할 것이다. 그런 다음 관련 모듈을 설치, 기본 문법등을 차근차근 학습하면 될 것이다. 아래 코드는 완전한 코.. 더보기