라벨이 BigData인 게시물 표시

주식 자동매매 시스템

파이썬을 이용한 주식 자동매매 시스템

이미지
파이썬을 이용한 주식 자동매매 시스템 INDEX 환경구축 키움증권 API - 연결테스트 키움증권 API - 계좌정보 조회 키움증권 API - 주문 키움증권 API - 종목정보 가져오기 포트폴리오 - 종목, 업종별 자산 포트폴리오 한국투자증권 API API reference 키움 OpenAPI+ 개발가이드 한국투자증권 OpenAPI 다운로드 및 가이드 Design https://www.design-seeds.com/in-nature/succulents/cacti-color-2/ https://create.piktochart.com/dashboard

R 에러 - DataFrame 사용 시 자주 발생하는 error

R Error, DataFrame 사용 시 자주 발생하는 error > mean(df[,c('age','weight')]); Warning message: In mean.default(df) : argument is not numeric or logical: returning NA Warning message: In mean.default(df[, c("age", "weight")]) : 인자가 수치형 또는 논리형이 아니므로 NA를 반환합니다. 숫자, 논리적이지 않은 객체를 평균내려고 할 때 발생한다. dataframe 내에 문자열이나, 전체 데이터 프레임의 평균을 계산하려고 할 때 발생하므로,   아래와 같이 해결하면 된다. 해결방법  1. mean()이 아닌, colMeans()를 사용해 column을 평균내는 함수 사용 R의 data type의 Dataframe 예제를 보면 더 쉽게 이해할 수 있다. -->  R Data Type(Scala/Vector/Dataframe) 2. 숫자벡터로 이루어진 column만 평균을 낸다. mean(df$score) 3. sapply() 이용 sapply(df, mean)

R에서 통계분석 데이터 이용하기 (foreign package)

R에서 통계분석 데이터 이용하기  foreign 패키지 SPSS, SAS, STATA 등 통계분석 소프트웨어의 파일을 불러오기 위해서 'foreign' 패키지를 이용한다. install.packages('foreign') library(foreign)      # SPSS 파일 불러오기 library(dplyr)        # 전처리 library(ggplot2)    # 시각화 library(readxl)      # 엑셀 파일 불러오기 # SPSS 파일을 Dataframe으로 가져온다 raw_welfare <- read.spss(file = 'Koweps_hpc10_2015_beta1.sav', to.data.frame = T) # 복사본을 만든다 welfare <- raw_welfare # colume에 대한 정보 분석 str(welfare) # colume 명 변경 welfare <- rename(welfare,                   sex = h10_g3,                   birth = h10_g4,                   marriage = h10_g10,                   religion = h10_g11,                   income = p1002_8aq1,                   code_job = h10_eco9,                   code_region = h10_reg7                   ) # 성별 항목 이름 부여 sex : 1 -> male 2 -> female > welfare$sex <- ifelse(welfare$sex == 1, 'male', 'female') > table(welfare$sex) ## female male ## 9086 7578 qplot(welfare$sex

[R 함수] sqldf 사용 방법

이미지
How to use 'sqldf' function sqldf 는 R에서 sql 문법을 사용할 수 있도록 해주는 package이다. 1. Libarary load library(ggplot2) library(sqldf) mpg 데이터를 사용하기 위해 ggplot2 라이브러리를 로드한다. sqldf 함수를 사용하기 위해 sqldf 라이브러리를 로드한다. mympg <- sqldf('SELECT *, (cty+hwy)/2 AS total FROM mpg') mympg2 <- sqldf('SELECT total,                 CASE                 WHEN total > 20                 THEN "PASS"                 ELSE "FAIL"                 END AS "total2"                 FROM mympg') mympg2 <- sqldf('SELECT total,                 CASE                 WHEN total > 20                 THEN "PASS"                 ELSE "FAIL"                 END AS "total2"                 FROM mympg') mympg3 <- sqldf('SELECT total,                 CASE                 WHEN total > 30                 THEN "A"                 WHEN total > 20                 THEN "B&q

[R 함수] dplyr 패키지 함수 사용 방법

How to use 'dplyr' package dplyr  패키지 함수 데이터 전처리 작업에 가장 많이 사용되는 패키지다. dplyr 함수 기능 filter() 행 추출 select() 열(변수) 추출 arrange() 정렬 mutate() 변수 추가 summarise() 통계치 산출 group_by() 집단별로 나누기 left_join() 데이터 합치기(열) bind_rows() 데이터 합치기(행) filter select arrange mutate summarise group_by left_join bind_rows mpg %>%   group_by(manufacturer) %>%   summarise(mean_hwy = mean(hwy)) %>%   arrange(desc(mean_hwy)) %>%   head(3)

HIVE와 HIVE SQL

이미지
HIVE 를 사용하는 이유 맵리듀스를 직접 작성하지 않고 쿼리언어로 비정형 데이터 분석이 가능하다. 하이브는 하둡에서 맵리듀스를 직접 돌리는 대신, 사용자가 SQL(Simple Query Language)로 쿼리를 작성하면 자동으로 맵리듀스 작업으로 변경해주는 쿼리 엔진이다. HIVE 구조 Metastore 하이브에서 생성한 테이블 스키마를 저장하는 곳. 테스트용으로 더비(derby) 임베디드 데이터베이스를 사용하면 된다. 실제 서비스용으로는 MySQL과 같은 데이터베이스를 사용할 수 있다. HiveQL 사용자가 쿼리를 입력하면 쿼리를 분석해 수행 계획을 작성하고 이에 따라 맵리듀스 코드를 생성한다. MapReduce 맵리듀스 작업 HiveQL에 의해 생성된 맵리듀스로 맵리듀스 작업이 수행된다.  TS/SelOperator들을 수행할 수 있도록 코드가 생성된다.  SerDe라는 추상 계층을 통해 계산에 필요한 데이터를 맵리듀스의 인풋 아웃풋 포매터로부터 읽어 들인다. HIVE 실행 내부 절차 Hive - Hadoop Flow executeQuery 사용자가 쿼리를 실행한다. getplans 드라이버(Driver)는 컴파일러(Compiler)에 쿼리 플랜을 요청한다. getMetaData 컴파일러는 쿼리를 파싱(parsing)한 후 의미분석기와 로지컬 플랜 생성기를 거친 후 맵리듀스 코드를 생성한다. 이 과정에서 하이브 테이블의 컬럼 정보와 컬럼 매핑(metadata) 정보를 Metastore로부터 가져온다. sendMetaData 컴파일러에서 요청한 테이블의 메타정보를 전달한다. sendPlans 컴파일러의 결과물인 맵리듀스와 플랜을 실행엔진(execution engine)으로 전달한다. executePlan 컴파일러에서 생성한 플랜을 수행한다. DDL 작업을 위해서 메타데이터에 접근한다. 더불어 job.xml을 생성해 쿼리 플래너가 작성한 맵리듀스 작업을 수행한다.

R - Database 와 연동하기

R - Oracle JDBC 연동하기 oracle jdbc 계정생성 Oracle JDBC 와 연동 library(rJava) library(RJDBC) library(DBI) drvName <- 'oracle.jdbc.driver.OracleDriver'; id <- 'ruser' pwd <- '111111' url <- 'jdbc:oracle:thin:@localhost:1521:XE' # 1. Driver Loading drv <- JDBC(driverClass = drvName,             classPath = 'c:\\java_hive_lib\\ojdbc6.jar') # 2. Connection conn <- dbConnect(drv, url, id, pwd) # 3. Statement sqlstr <- 'SELECT MONTHS_BETWEEN(sysdate,hiredate) AS day, sal FROM emp' # 4. ResultSet emp <- dbGetQuery(conn, sqlstr);< # 5. Close dbDisconnect(conn) library(ggplot2) p <- ggplot(emp, aes(x = DAY, y = SAL)) + geom_line() library(plotly) ggplotly(p) R - Hive 연동하기 R에서 hive에 접근하기 위해 Linux에서 Hive service를 실행시킨다. # 하둡실행 > start-all.sh # hive service 실행 > hive --service hiveserver Driver와 URL 만 바꾸면 다른 database와 연동가능 library(rJava) library(RJDBC) library(DBI) # Hive 연동 (Linux : server1) drvName &l

R 인터랙티브 그래프 그리기

이미지
인터랙티브 그래프(Interactive Graph) 마우스 움직임에 반응하며 실시간으로 형태가 변하는 그래프다. HTML 포맷으로 저장 가능하며, 일반 사용자들도 웹 브라우저를 통해 그래프를 조작할 수 있다. plotly plotly Document ggplot 그래프를 인터랙티브 그래프로 바꿔준다.  > install.packages('plotly') library(plotly) library(ggplot2) # 배기량(displ)에 따른 고속도로연비(hwy) , 구동방식(drv) p <- ggplot(data = mpg, aes(   x = displ,    y = hwy,     col = drv )) + geom_point() ggplotly(p) HTML 파일로 저장 Viewer > Save as Web Page htmlwidgets 사용하는 방법 > install.packages('htmlwidgets') library(htmlwidgets) # 위에서 사용한 p(ggplot Graph) 사용 pp <- ggplotly(p) saveWidget(pp, file = "aa.html")

[R 함수] KoNLP 패키지 이용해 한글 분석

이미지
KoNLP 패키지를 이용해 블로그를 분석한 결과 KoNLP(Korean Natural Language Processing) 패키지 KoNLP github 한글 자연어 분석 패키지로 한국어를 분석할 수 있는 총 27개의 함수가 들어 있다. KoNLP 패키지를 사용하기 위해서는 rJava, memoise 패키지가 필요하다. 패키지 설치 install.packages("rJava") install.packages("memoise") install.packages("KoNLP") 패키지 로드 library(rJava) library(memoise) library(KoNLP) library(dplyr) library(stringr) rJava 설치되어 있는 jdk 를 연동하는 역할 rJava를 설치한 후 library를 로드하면 오류가 발생한다. error : JAVA_HOME cannot be determined from the Registry solution : 환경변수 setting system 변수에  JAVA_HOME C:\Program Files\Java\jdk-9.0.4 추가 memoise stringr 특수문자 제거를 위해 사용 텍스트 파일에 있는 한글 분석 useNIADic(); txt <- readLines('hiphop.txt') head(txt) install.packages('wordcloud')

[R 함수] ggplot2 패키지를 이용해 그래프 만들기

이미지
ggplot2 는 The Grammar of Graphics에 기반하여 그래프를 만드는 시스템이다.  ggplot2에 data를 제공하고, 변수들을 어떻게 매핑할 지, 어떤 방법으로 그래프를 그릴지 설정한다. ggplot2를 처음 사용할 때 배우기 좋은 사이트 http://r4ds.had.co.nz/data-visualisation.html http://r4ds.had.co.nz/graphics-for-communication.html https://www.datacamp.com/courses/data-visualization-with-ggplot2-1 배경 설정하기 ggplot(data = mpg, aes(x = displ, y = hwy)) 그래프 추가하기 산점도(Scater Plot) geom_point() 축 범위를 조정하는 설정 xlim() , ylim() 막대 그래프(Bar Chart) 집단 간 차이 표현하기  geom_col() : 평균 막대 그래프 막대의 높이가 데이터의 값을 나타내도록 하려면 geom_col()을 사용한다. 데이터를 있는 그대로 남겨둔다.  geom_bar() : 빈도 막대 그래프 x의 위치에 나타나는 각 그룹의 빈도 수를 나타낸다. ( 또는 가중치의 합계)   # "suv" 차종을 대상으로  # 평균 cty 가 가장 높은 회사 다섯 곳을 막대 그래프로 표현  # 막대는 연비가 높은 순으로 정렬  mpg.suv <- mpg[ mpg$class == "suv", c('cty', 'manufacturer', )]  result2 <- aggregate(cty~manufacturer, mpg.suv, mean) result2 <- head(result2[order(result2$cty, decreasing = T), ], 5)  ggplot(data = result2, aes(x = manufacture

[R 함수] aggregate, apply 사용 방법

이미지
Googlevis R과 Google chart API 의 인터페이스를 제공한다. 실습을 위한 데이터를 얻기 위해 설치했다. 아래와 같이 설치하면, Fruits와 같은 데이터셋을 사용할 수 있다. install('googlevis') library('googleVis') Fruits aggregate(x, by, function, ... )  > banana <- Fruits[Fruits$Fruit == 'Bananas',] Fruits 데이터 셋에서, Banana의 판매 수익을 알고 싶을 경우 어떻게 할 것인가?  아래와 같이 'Bananas' 를 직접 Hard coding해서, 'Bananas'의 정보를 얻을 수는 있을 것이다. 만약, 문자가 변경되어 'Oranges', 'Apples' 를 보고 싶다면? 매번 변경해줘야 한다.   이런 Hard coding은 하지 않도록 해야한다.   aggregate 는 Group By 같은 기능을 통해 이런 문제해결에 도움을 주는 함수다.   aggregate (함수를 적용할 대상~기준, 데이터 , 함수) 데이터를 기준에 따라 분할하고 각각에 대한 요약 통계를 계산(함수를 이용해) 한 다음 결과를 편리한 형식으로 반환한다. (Splits the data into subsets, computes summary statistics for each, and returns the result in a convenient form) ## Default S3 method: aggregate(x, ...) ## S3 method for class 'data.frame' aggregate(x, by, FUN, ..., simplify = TRUE, drop = TRUE) ## S3 method for class 'formula&

R에서 외부 데이터 이용하기 (Excel, csv)

이미지
Excel 파일을 사용하기 위해서 Package 설치 console 창에서 readxl 패키지 설치  > install.packages('readxl') 설치가 제대로 되지 않았을 경우 설치된 경로를 확인해 package를 삭제하고 다시 설치해야한다.  ⌕ C:\Users\student\AppData\Local\Temp\RtmpCu2rjY\downloaded_packages package 사용하기 library(package명) Excel 데이터 파일 준비 사용할 데이터 파일 (Excel) 을 프로젝트 폴더 안에 붙여넣으면 R studio에서 확인할 수 있다. 데이터 로드하기 패키지를 매번 로드해 줘야 하기 때문에 함수로 만들었다. exdata <- function(){ library(readxl); # 같은 workspace 에 존재하는 파일이기 때문에 파일명만 명시해도 된다 data <- read_excel('excel_exam.xlsx'); return(data); } data <- exdata(); colnames(data) <- c('a','b','c','d','e') mean(data$math) read_excel 속성 # column명이 없는 데이터인 경우 첫 줄을 column명으로 만들지 않도록 col_names = F 설정 data <- read_excel('excel_exam_nohead.xlsx', col_names = F); # Excel 파일의 2번째 sheet에 있는 데이터를 읽어온다 data <- read_excel('excep_exam_3.xlsx', sheet =2); csv 파일 이용하는 방법 getcsv <- fun

R Data Type

Scala 단일 차원의 값 , 길이가 1인 벡터를 의미 > a <- 3 NA(Not Available) 데이터 값이 없음 변수에 NA 값이 저장되어 있는지 확인할 때는 is.na() 함수를 사용한다 is.na(변수명) NULL 변수가 초기화되지 않았을 때 사용 어떤 변수에 NULL이 저장되어 있는지 확인할 때는 is.null() 함수를 사용 is.null(변수명) Vector 한가지 타입만 저장가능 주어진 값들을 모아 벡터 생성 c( , , , ) 객체에 이름을 저장 / 반환 names(x) <- c("kim","so", "parck") names(x) 벡터 x의 n번째 요소 x[n] 벡터 x에서 n번째 요소를 제외한 나머지. 여러개 제외 가능 x[-n] x[-n1,-n2, , ,-nk] 벡터 x로부터 idx_vector에 지정된 요소를 얻어옴 -- 벡터 x의 start부터 end까지의 값을 반환 x2 <- x[start:end] List Matrix 한가지 타입만 저장가능 > matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow=3) [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 > matrix(c(1, 2, 3, 4, 5, 6, 7, 8, 9), nrow=3, byrow=TRUE) [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9 > colnames(m1) <- c('c1','c2','c3'); > rownames(m1) <- c('r1','r2','

R Studio

R 프로그래밍을 위한 환경설정 R을 설치하면 기본적으로 console 화면에서 tab(자동완성), 키보드 방향키 위/아래를 눌러서 이전/이후 명령 이력을 볼 수 있다.  더 많은 기능을 이용하고 싶다면, IDE를 설치하면 된다.  RStudio 는 명령 콘솔 외에 파일 편집, 데이터 보기, 명령 히스토리, 차트 등을 손쉽게 접근할 수 있게 해준다.  자세한 설치 방법은 아래 사이트에 자세히 나와있다. R 프로그래밍환경설정 R 기본툴 RStudio

jdk1.8/Hadoop2.9.0/Hive2.2/

이미지
Install File 설치 파일 준비 Hadoop 다운로드 페이지에서 releases > Apache release archive site에 가면 모든 버전을 다운 받을 수 있다. 하둡다운로드 하이브다운로드 jdk다운로드 ↓ cd 다운로드 tar xvfz jdk-8u161-linux-x64.tar.gz cp -r jdk1.8.0_161/ /usr/local/jdk1.8 cd /usr/bin ln -s /usr/local/jdk1.8/bin/java java tar xvfz hadoop-2.9.0.tar.gz cp -r hadoop-2.9.0 /usr/local/ tar xvfz apache-hive-2.2.0-bin.tar.gz cp -r apache-hive-2.2.0-bin /usr/local/hive Generate SSH Key SSH Key : 서버간의 통신을 위한 프로토콜 ssh-keygen is a standard component of the Secure Shell (SSH) protocol suite found on Unix and Unix-like computer systems used to establish secure shell sessions between remote computers over insecure networks, through the use of various cryptographic techniques. # ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa # ssh-copy-id -i /root/.ssh/id_dsa.pub root@slave1 SSH Key profile setting JAVA_HOME=/usr/local/jdk1.8 HADOOP_HOME=/usr/local/hadoop-2.9.0 HIVE_HOME=/usr/local/hive CLASSPA

Linux에서 CSV파일 사용방법

이미지
Linux 에서 CSV 파일 한글 깨지는 현상 Solution 파일을 메모장으로 연다 다른 이름으로 저장 인코딩 방식 UTF-8로 변경 데이터 로드 전 처리 데이터에 있는 column 명 삭제 sed -e '1d' cafeUTF.csv > cafe.csv 데이터가 " "로 둘러싸여 있는 경우 현재 폴더에서 이름으로 검색 후 데이터에 "를 제거 find . -name airports.csv -exec perl -p -i -e 's/"//g' {} \; Before delete first row After delete first row

Linux : Oracle에서 데이터베이스 구축

이미지
Linux Terminal에서 데이터베이스 구축하기 데이터 파일을 저장할 Directory 생성 누구나 읽기/쓰기 가능하도록 권한 열기 # mkdir /oradata # chmod 777 /oradata Oracle Database 실행 # sqlplus SQL > 테이블 생성 (Linux terminal) SQL > CREATE TABLE customer( id VARCHAR(10) NOT NULL PRIMARY KEY, name NCHAR(5) age INT, address NCHAR(5) ) TABLESPACE shopping_db; MariaDB 와 Oracle의 차이점 테이블 생성 구문 뒤에 테이블이 생성될 테이블 스페이스를 지정 NVARCHAR 대신 NCHAR를 사용 데이터베이스 구축 SQL > INSERT INTO customer VALUES('hong', '홍길동', 22, '경기') Web에서 데이터베이스 구축하기 127.0.0.1:8080/apex 로 접속 Workspace 서로 다른 workspace 안에 있는 데이터는 접근 못함.  web으로 접속할 때만 있는 개념  실제 User는 schema를 기준으로 접속한다. Internal은 기본적으로 Oracle에서 제공하는 Workspace이며, 다른 workspace, user를 생성하는 용도로 사용한다. oracle web server csv 파일을 이용한 테이블 생성과 데이터 로드 SQL Workspace > Utility Utility > Data workshop Linux: oracle db 관리자로 접속 Linux의 oracle database를 관리하는 계정은 System이다. 비밀번호는 설치 시 설정했던 비밀번호를 사용한다. web에서 구축한 데이터에 접근하는 방법

Linux에 Oracle 설치하기

이미지
Oracle 설치 파일 다운로드 oracle-xe-11.2.0-1.0.x86_64.rpm.zip Window > Linux 다운로드 폴더로 copy Oracle Database 11g Release 2 zip 파일 압축 풀기 다운로드 파일로 이동 > 다운로드 파일 확인 > 압축풀기 # cd 다운로드 # ls -l oracle* # unzip oracle* rpm 파일 설치 임시로 가상 메모리 추가 Oracle Database Express 11g를 설치하려면 최소 1990MB 이상의 가상 메모리가 필요 임시로 가상 메모리 추가 가상 메모리용 파일 생성 파일을 가상 메모리로 포맷 가상 메모리 활성화 가상 메모리 용량 확인 # dd if=/dev/zero of=/swapfile bs=1024 count=4194304 # mkswap /swapfile # swapon /swapfile # swapon -s 결과 # swapon /swapfile swapon: /swapfile: insecure permissions 0644, 0600 suggested. # swapon -s Filename Type Size Used Priority /dev/sda1 partition 2047996 134528 -1 /swapfile file 4194300 0 -2 rpm 파일 설치 # cd Disk1/ # ls -l oracle* # yum -y localinstall oracle* 아래와 같이 실패 할 경우 swap 용량이 부족해서 발생하는 오류 >> 가상 메모리 추가 Total size: 564 M Installed size: 564 M Downloading packages: Running transaction check Running transaction test Transaction test succe

공공 데이터 수집하기 (CSV)

이미지
데이터 수집 (Open data 이용) dataexpo   공공 데이터 포털 서울 열린 데이터 광장 공공 데이터 포털에서 데이터 다운로드 받기 XLSX, CSV, XML, JSON 형태로 다운로드 가능 분석용 데이터로 CSV 파일을 사용 CSV는 ' , '를 기준으로 field가 나눠짐 excel로 연결해 데이터 구조 확인

Eclipse에서 Hadoop 연동하기

이미지
Hive  Hadoop 과 Java project를 연결하는 역할 Hive를 사용하면 Java project에서 Hive SQL로 쉽게 Data를 요청할 수 있다 Hive는 SQL을 사용해 Hadoop으로 MapReduce를 요청한다 Linux OS 에서 Hadoop 준비하기 Hadoop Server 실행 Run the Linux OS on VMware. Open a Linux terminal and run Hadoop. Verifying the execution of a Java process with "jps" # start-all.sh # jps Hive 실행 # hive 사용할 데이터 공공데이터 가져오는 방법    Linux에서 CSV파일 사용하는 방법 경기도에 있는 음식점정보 (까페) Create Table Field Delimited ',' Line Delimited '\n' CREATE TABLE cafe ( City STRING, PlaceName String, PermitDate Date, BusinessStatus String, MultipleFacilities String, TotalSize Double, HygieneIndustry String, HygieneName String, NumberAddress String, StreetAddress String, Zipcode Int, Latitude Double, Longitude Double ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS TEXTFILE; 데이터 로드 load data local inpath '/root/csv/cafe.csv' o

HIVE 설치오류 (Install Error)

이미지
HIVE Install Error  1. jdk version error - solution - error  [root@server1 ~] # hive ... Exception in thread "main" java.lang.RuntimeException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java: 444 ) at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java: 626 ) at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java: 570 ) at java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 62 ) at java.base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 43 ) at java.base / java.lang.reflect.Method.invoke(Method.java: 564 ) at org.apache.hadoop.util.RunJar.main(RunJar.java: 160 ) Caused by: java.lang.RuntimeException: Unable to