Python에서 Yahoo 주식 데이터 가져오기

 

·       Version : MAC OS, Python 3.X, PIP3

 

Yahoo Finance(https://finance.yahoo.com/) 에서 제공하는 API 사용하여 Python에서 주식 데이터를 가져오는 방법에 대해서 알아본다.

 

Yahoo Finance API 종류가 다양하며 API에서 제공하는 데이터도 조금씩 다르다. 단순한 시계열 데이터 부터, 기업 재무제표를 제공하는 API 다양하게 제공한다. 다양한 파이썬 패키지로 제공되고 있으며 아래 링크에서 확인할 있다.

·       yahoo-finance-api : https://github.com/topics/yahoo-finance-api?l=python

이번 포스트에서는 일일 주가 데이터를 제공하는 yfinance라는 파이썬 패키지를 사용하였다.

pip3 install yfinance --user

 

패키지 설치가 완료 되었으면, yfinance import하고 원하는 종목명 날짜를 입력하면 데이터를 가져올 있다.아래 예시는 AAPL(APPLE inc) 주가 데이터를 2020 12 1일부터 데이터를 가져온다.

import yfinance as yf

yf.download('AAPL', start = '2020-12-01')

 

 

2 이상의 종목에 대한 데이터를 가져올 경우, list 형식으로 사용할 있다.

yf.download(['AAPL', 'F'],start = '2020-12-01')

 

 

배당이나, 분할, 애널리스트 평가 정보도 yfinance 패키지에서 확인할 있다.

aapl = yf.Ticker('AAPL')

 

배당 내역

aapl.dividends

분할 내역

aapl.splits

애널리스트 평가

aapl.recommendations

 

지금까지 파이썬으로 패키지를 사용하여 데이터를 가져오는것을 실습하였는데, 이렇게 수집된 데이터를 나만의 데이터베이스로 만들고, 각종 지표를 만들어서 비교해봄으로써, 의미있는 2, 3 데이터를 만들어내는것이 중요하다. 단순히 주가의 가격 변동이나 흐름이 아닌, 시장의 방향과 주가의 방향이 매칭되는 종목을 찾고, 다양한 변수를 대입하여 종목을 추천할 있는 알고리즘을 만든다면, 직감이나 일부 정보만을 가지고, 이른바 바라는 주식투자가 아닌 공학 관점에서 가까이 투자할 있지 않을까 생각해 본다.

 

 

 

2020-12-28/ Sungwook Kang / http://sungwookkang.com

 

파이선, 파이썬, python, 주식 데이터 가져오기, 파이썬 주식, 금융공학, 주식 분석, 미국 주식 

 

Python에서 Tesseract 사용하기

 

·       Version : MAC OS, Python 3.X, PIP3

 

이전 포스트에서 Tesseract 오픈소스 소프트웨어를 사용하여 이미지에 포함된 문자열을 추출하는 방법에 대해서 알아 보았다.

·       Tesseract 활용한 이미지 문자인식 : https://sungwookkang.com/1475

 

다른 포스트에도 언급한바 있지만, 이미지의 경우 배경 색상이나, 글꼴, 언어 타입에 따라 인식률에 차이가 크므로, 전처리 과정이 수반되어야 어느정도 정확도를 높일 있다. OpenCV 오픈소스로 공개된 다양한 이미지 처리 모듈을 사용하기 위해서는 파이썬을 활용할 있는데, 시작으로 파이썬에서 Tesseract 임포트하여 사용하는 방법을 설명한다. 이번 포스트의 내용을 따라하기 전에, Tesseract 프로그램이 설치되어 있어야 한다.

 

Python3.X PIP3 설치 한다. 그리고 아래 명령을 사용하여 Tesseract패키지를 설치 한다. 설치과정에서 Permission 문제가 발생하면 –user 명령을 함께 사용한다.

pip3 install pytesseract --user

pip3 install opencv-python --user

 

Python3 실행하여 아래 코드를 작성한다.

from PIL import Image

from pytesseract import *

import re

import cv2

 

img = Image.open('이미지파일명')

 

text = pytesseract.image_to_string(img,lang='euc') #한글은 'kor'

#간혹 lang 오류가 발생할경우, lang 파라메터 제거

#text = pytesseract.image_to_string(img)

 

print(text)

 

아래 결과는 인터넷에서 어느 식당에서 메뉴 사진을 찍은 이미지에서 메뉴와 가격을 추출한것이다. 아직 데이터가 정제되지 않은 상태이며 한글과 영어가 섞여 있는데, 한글은 판독하지 못한것을 확인할 있다.

 

실제 추출된 문자열에서 데이터로 활용하려면, 이미지 인식 개선, 다양한 문자열 인식, 데이터 가공을 통한 유요한 데이터 추출 등의 작업이 추가되어야 한다. 이러한 작업을 하나의 프로그램으로 만들기 위해서 오늘 실습한 코드에서 점진적으로 코드가 추가될 예정이다.

 

 

2020-12-18/ Sungwook Kang / http://sungwookkang.com

 

이미지 인식, OCR, Tesseract, 문자열 인식, OpenCV, 딥러닝, 머신러닝, 글자 인식, 이미지 분석, 파이선, 파이썬, python

 

Tesseract 활용한 이미지 문자인식

 

Tesseract 이미지로부터 텍스트를 인식하고 추출하는 소프트웨어이며 HP 연구에서에서 개발된 오픈소스 OCR 엔진이다. 현재까지도 LSTM(Long short-term memory) 같은 딥러닝 방식을 통해 텍스트 인식률을 지속적으로 개선하고 있다. Tesseract 사용하기 위해서는 관련 프로그램을 설치 해야한다. 프로그램은 아래 주소에서 다운로드 받을 있다.

·       https://github.com/tesseract-ocr/tesseract/wiki

 

필자의 경우 MAC OS에서 설치를 진행하였으며 home brew 사용하여 설치 하였다.

brew install tesseract

 

brew 설치한 경우 아래 명령으로 설치된 경로를 확인할 있다.

brew list tesseract

 

 

설치가 완료 되었으면, 이미지 파일을 읽어 문자열을 출력하도록 한다. 배경색상과 글자색상에 따른 이미지 인식률을 확인하기 위해 3가지 케이스를 테스트하였다. 실행명령은 아래와 같다.

tesseract /이미지경로/파일명 stdout

 

Image

Results

 

출력 결과를 살펴보면, 배경색과 글자색의 대비가 높을 수록 높은 인식률을 나타내고 있다. 또한 이미지속의 글자가 단순하고, 글꼴에 따라서도 인식률이 다르게 나타나는것을 확인할 있다. 글에는 포함되어 있지 않지만, 한글과 영어에 따른 인식률 차이도 발생함을 확인할 있었다.

이처럼 전체 텍스트 구조를 분석하고 인식하는 과정에 다양한 오차가 발생하기 때문에, 이미지의 인식률을 높이기 위한 전처리 과정이 필요하며, 대표적으로 OpenCV 사용하여 배경과 글자를 분리하여  작업을 진행할 있다.

 

 

 

2020-12-17/ Sungwook Kang / http://sungwookkang.com

 

이미지 인식, OCR, Tesseract, 문자열 인식, OpenCV, 딥러닝, 머신러닝, 글자 인식, 이미지 분석

 

Hive UDF (사용자 정의 함수)

 

·       Version : Hive

 

Hive UDF(User Define Function, 사용자 정의 함수) 사용자에게 HiveQL 확장할 있게 해주는 하이브의 강력한 기능이다. 자바를 이용해 구현하며 세션에 추가되면 마치 내장 함수처럼 동작하고 심지어 온라인 도움말도 제공할 있다. UDF 사용하면 하이브 쿼리가 동작하는 동일한 프로세스 안에서 마치 태스크처럼 돌아간다. 그러므로 효과적으로 동작하고 다른 시스템과의 통합 과정에서 발생하는 복잡함을 제거할 있다.

 

현재 하이브 세션에 로드된 내장함수는 SHOW FUNCTIONS 명령어를 사용하여 목록을 확인할 있다.

hive>show functions;

 

함수는 보통 자신을 설명하는 문서를 가지고 있으며 DESCRIBE FUNCTION 명령어를 사용하여 간략한 설명을 볼수 있다. EXTENDED 예약어로 확장 문서를 확인할 수도 있다.

hive>describe function concat;

 

hive>describe function extended concat;

 

함수를 사용할면 쿼리 안에서 필요한 인자를 넣고 간단히 이름으로 호출하면 된다. 어떤 함수는 지정된 개수의 인자를 받기도 하며, 어떤 함수는 인자와 데이터 형식을 받기도 하는등, 함수에 따라 필요 인수가 다를수 있다.

일반적으로 표준함수라 불리는, 하나의 로우 또는 하나 이상의 컬럼을 받아서 하나의 값을 반환하는 함수는 데이터형을 변환 (DOUBLE-> BIGINT)하거나 round(), floor(),  절대값을 계산하는 abs() 함수 같은 수학함수가 있으며, 대소문자 전환, 문자열 뒤집기, 문자열 연결등과 같은 문자열 조작 함수 등이 있다.

 

집계함수(aggregate function) 사용자 정의와 내장된 모든 집계 함수를 포함하여 0 이상의 로우 또는 하나 이상의 컬럼을 받아서 하나의 결과값을 반환한다. 대표적인 함수로 sum(), avg(), min(), max() 등이 있다.

 

테이블 생성함수(table generating function 0 또는 이상의 입력을 받아서 여러 컬럼 또는 로우를 결과값으로 생성한다. 대표적으로 array 함수가 있으며, explode() 함수는 배열을 입력받아서 배열의 요소를 ROW 반환한다.

 

2020-11-12 / Sungwook Kang / http://sungwookkang.com

 

 

Hadoop, Big Data, 하둡, 빅데이터, 데이터분석, Hive, 하이브 사용자 함수, 하이브 UDF, Hive UDF, User Define Function, Hive Function

+ Recent posts