새로운 데이터 만들어 삽입하기

주가예측 딥러닝 모델 제작 프로세스를 따라가보는 과정입니다.
사용된 패키지, 함수 등 모든 과정을 이해하려고 부담 갖지 않으셔도 됩니다.

함수 및 라이브러리에 대한 자세한 설명은 선택과정에서 배울 수 있습니다.

주식 데이터에 들어있는 기본 데이터들을 가공하여, 이동평균, 거래량이동평균, 이격도 등을 계산하여 데이터프레임에 추가해보도록 하겠습니다.

  • 종가: 해당 날짜의 마감 주가
  • 이동평균: 해당 날짜 이전 N일 간의 평균치
  • 이격도: 주가와 이동평균 간의 차이 비율

지시사항

이 문제는 별도 제출이 필요 없는 실습입니다.

  1. 미리 만들어진 코드의 주석과 의미를 확인합니다.
  2. 실행 버튼을 눌러 각 코드의 실행 결과를 확인해보세요.
  3. 새롭게 추가된 이동평균값(MA)과 이격도값(disp)을 확인해보세요.

Tip

사용된 코드들의 의미는 다음과 같습니다

  • df[‘Adj Close’]: df라는 데이터프레임에서 ‘Adj Close’ 열만 추출
  • .rolling(windows=5): 데이터를 5개 행씩 묶어서 계산
  • .mean(): 값들의 평균을 계산
  • df.insert(): 데이터프레임에 새로운 열 삽입

코드를 외울 필요는 없으며, 이런 코드가 있구나! 정도로만 이해하고 넘어가셔도 충분합니다.

from datetime import datetime #날짜와 시간을 쉽게 조작할 있게 하는 클래스 제공

import pandas as pd

import matplotlib.pyplot as plt

from elice_utils import EliceUtils

pd.set_option('display.max_columns', None)

elice_utils = EliceUtils()

 

 

# 주식 데이터 불러오기

df = pd.read_csv('stock.csv')

 

 

# 수정 종가 이동평균(MA: Moving Average) 구하기

ma5 = df['Adj Close'].rolling(window=5).mean() # 수정 종가 5 이동평균

ma20 = df['Adj Close'].rolling(window=20).mean() # 수정 종가 20 이동평균

ma60 = df['Adj Close'].rolling(window=60).mean() # 수정 종가 60 이동평균

 

 

# 이동평균 추가하기

df.insert(len(df.columns), "MA5", ma5) # 'MA5'라는 이름으로 ma5 추가

df.insert(len(df.columns), "MA20", ma20) # 'MA20'라는 이름으로 ma20 추가

df.insert(len(df.columns), "MA60", ma60) # 'MA60'라는 이름으로 ma60 추가

 

 

# 거래량 5 이동평균 추가

vma5 = df['Volume'].rolling(window=5).mean() # 거래량의 5 이동평균 구하기

df.insert(len(df.columns), "VMA5", vma5) # 'VMA5'라는 이름으로 vma5 추가

 

 

# --- 이격도 추가 --- #

# 수정 종가 데이터를 5 이동평균 값으로 나눈 비율

disp5 = (df['Adj Close']/df['MA5'])*100

 

# 이격도 데이터를 'Disp5'라는 이름으로 추가

df.insert(len(df.columns), "Disp5", disp5)

 

 

 

# 데이터 확인

print('이동평균 이격도가 추가된 주가 데이터')

print(df)

 

이동평균 및 이격도가 추가된 주가 데이터 Date High Low Open Close Volume Adj Close MA5 \ 0 2020-03-02 55500 53600 54300 55000 30403412 55000 NaN 1 2020-03-03 56900 55100 56700 55400 30330295 55400 NaN 2 2020-03-04 57600 54600 54800 57400 24765728 57400 NaN 3 2020-03-05 58000 56700 57600 57800 21698990 57800 NaN 4 2020-03-06 57200 56200 56500 56500 18716656 56500 56420.0 5 2020-03-09 56500 56500 56500 56500 0 56500 56720.0 6 2020-03-10 54900 53700 53800 54600 32106554 54600 56560.0 7 2020-03-11 54400 52000 54300 52100 45707281 52100 55500.0 8 2020-03-12 52100 52100 52100 52100 0 52100 54360.0 9 2020-03-13 51600 46850 47450 49950 59462933 49950 53050.0 10 2020-03-16 50900 48800 50100 48900 33339821 48900 51530.0 11 2020-03-17 49650 46700 46900 47300 51218151 47300 50070.0 12 2020-03-18 48350 45600 47750 45600 40152623 45600 48770.0 13 2020-03-19 46650 42300 46400 42950 56925513 42950 46940.0 14 2020-03-20 45500 43550 44150 45400 49730008 45400 46030.0 15 2020-03-23 43550 42400 42600 42500 41701626 42500 44750.0 16 2020-03-24 46950 43050 43850 46950 49801908 46950 44680.0 17 2020-03-25 49600 47150 48950 48650 52735922 48650 45290.0 18 2020-03-26 49300 47700 49000 47800 42185129 47800 46260.0 19 2020-03-27 49700 46850 49600 48300 39896178 48300 46840.0 20 2020-03-30 48350 46550 47050 47850 26797395 47850 47910.0 21 2020-03-31 48500 47150 48000 47750 30654261 47750 48070.0 22 2020-04-01 47900 45800 47450 45800 27259532 45800 47500.0 23 2020-04-02 46850 45350 46200 46800 21621076 46800 47300.0 24 2020-04-03 47600 46550 47400 47000 22784682 47000 47040.0 25 2020-04-06 48800 47250 47500 48700 23395726 48700 47210.0 26 2020-04-07 50200 49000 49650 49600 31524034 49600 47580.0 27 2020-04-08 49750 48600 49600 48600 25010314 48600 48140.0 28 2020-04-09 49800 48700 49750 49100 22628058 49100 48600.0 29 2020-04-10 49250 48650 48950 49250 17839111 49250 49050.0 .. ... ... ... ... ... ... ... ... 75 2020-06-19 52900 51600 52600 52900 18157985 52900 51880.0 76 2020-06-22 52600 51800 52000 52000 13801350 52000 52300.0 77 2020-06-23 52800 51100 52500 51400 18086152 51400 52160.0 78 2020-06-24 53900 51600 51900 52900 24519552 52900 52300.0 79 2020-06-25 53000 51900 52100 51900 18541624 51900 52220.0 80 2020-06-26 53900 52200 52800 53300 21575360 53300 52300.0 81 2020-06-29 53200 52000 52500 52400 17776925 52400 52380.0 82 2020-06-30 53900 52800 53900 52800 21157172 52800 52660.0 83 2020-07-01 53600 52400 53400 52600 16706143 52600 52600.0 84 2020-07-02 52900 52100 52100 52900 14142583 52900 52800.0 85 2020-07-03 53600 52700 53000 53600 11887868 53600 52860.0 86 2020-07-06 55000 53800 54000 55000 19856623 55000 53380.0 87 2020-07-07 55900 53400 55800 53400 30760032 53400 53500.0 88 2020-07-08 53900 52900 53600 53000 19664652 53000 53580.0 89 2020-07-09 53600 52800 53200 52800 17054850 52800 53560.0 90 2020-07-10 53200 52300 53100 52700 13714746 52700 53380.0 91 2020-07-13 53800 53100 53300 53400 12240188 53400 53060.0 92 2020-07-14 53800 53200 53700 53800 14269484 53800 53140.0 93 2020-07-15 55000 54300 54400 54700 24051450 54700 53480.0 94 2020-07-16 54800 53800 54800 53800 16779127 53800 53680.0 95 2020-07-17 54700 54100 54200 54400 10096174 54400 54020.0 96 2020-07-20 54800 54000 54800 54200 10507530 54200 54180.0 97 2020-07-21 55400 54800 55200 55300 18297260 55300 54480.0 98 2020-07-22 55500 54700 55300 54700 12885057 54700 54480.0 99 2020-07-23 54700 53800 54700 54100 16214932 54100 54540.0 100 2020-07-24 54400 53700 54000 54200 10994535 54200 54500.0 101 2020-07-27 55700 54300 54300 55600 21054421 55600 54780.0 102 2020-07-28 58800 56400 57000 58600 48431566 58600 55440.0 103 2020-07-29 60400 58600 60300 59000 36476611 59000 56300.0 104 2020-07-30 60100 59000 59700 59000 19285354 59000 57280.0 MA20 MA60 VMA5 Disp5 0 NaN NaN NaN NaN 1 NaN NaN NaN NaN 2 NaN NaN NaN NaN 3 NaN NaN NaN NaN 4 NaN NaN 25183016.2 100.141794 5 NaN NaN 19102333.8 99.612130 6 NaN NaN 19457585.6 96.534653 7 NaN NaN 23645896.2 93.873874 8 NaN NaN 19306098.2 95.842531 9 NaN NaN 27455353.6 94.156456 10 NaN NaN 34123317.8 94.896177 11 NaN NaN 37945637.2 94.467745 12 NaN NaN 36834705.6 93.500103 13 NaN NaN 48219808.2 91.499787 14 NaN NaN 46273223.2 98.631327 15 NaN NaN 47945584.2 94.972067 16 NaN NaN 47662335.6 105.080573 17 NaN NaN 50178995.4 107.418856 18 NaN NaN 47230918.6 103.329010 19 50585.0 NaN 45264152.6 103.116994 20 50227.5 NaN 42283306.4 99.874765 21 49845.0 NaN 38453777.0 99.334304 22 49265.0 NaN 33358499.0 96.421053 23 48715.0 NaN 29245688.4 98.942918 24 48240.0 NaN 25823389.2 99.914966 25 47850.0 NaN 25143055.4 103.156111 26 47600.0 NaN 25317010.0 104.245481 27 47425.0 NaN 24867166.4 100.955546 28 47275.0 NaN 25068562.8 101.028807 29 47240.0 NaN 24079448.6 100.407747 .. ... ... ... ... 75 52405.0 50001.666667 22278960.4 101.966076 76 52562.5 50085.833333 19284646.2 99.426386 77 52670.0 50131.666667 18540201.6 98.542945 78 52820.0 50216.666667 18109593.0 101.147228 79 52895.0 50276.666667 18621332.6 99.387208 80 53025.0 50367.500000 19304807.6 101.912046 81 53085.0 50445.000000 20099922.6 100.038183 82 53155.0 50561.666667 20714126.6 100.265856 83 53060.0 50658.333333 19151444.8 100.000000 84 52975.0 50756.666667 18271636.6 100.189394 85 52880.0 50838.333333 16334138.2 101.399924 86 52885.0 50928.333333 16750077.8 103.034845 87 52780.0 51008.333333 18670649.8 99.813084 88 52660.0 51073.333333 19262351.6 98.917507 89 52585.0 51132.500000 19844805.0 98.581031 90 52605.0 51205.833333 20210180.6 98.726115 91 52780.0 51279.166667 18686893.6 100.640784 92 52865.0 51359.166667 15388784.0 101.242002 93 52990.0 51414.166667 16266143.6 102.281227 94 53065.0 51475.833333 16210999.0 100.223547 95 53140.0 51561.666667 15487284.6 100.703443 96 53250.0 51634.166667 15140753.0 100.036914 97 53445.0 51725.000000 15946308.2 101.505140 98 53535.0 51814.166667 13713029.6 100.403818 99 53645.0 51885.000000 13600190.6 99.193253 100 53690.0 51953.333333 13779862.8 99.449541 101 53850.0 52046.666667 15889241.0 101.496897 102 54140.0 52215.000000 21916102.2 105.699856 103 54460.0 52378.333333 26634413.0 104.795737 104 54765.0 52548.333333 27248497.4 103.002793 [105 rows x 12 columns]

코드 실행이 완료되었습니다.

 

광고는 2개 포스터로 마무리 한다. 더 가져오면 알리는 목적이 아니게 될 것 같아서 ^^

'!A. Basics' 카테고리의 다른 글

[001] 컴퓨터 기초 지식  (0) 2021.03.14
블로그로 배우는 시대는 끝이 나겠구나...  (0) 2020.10.01
리줌 키보드 RK201 한 영 전환 키  (0) 2020.08.09
브런치에서 이동  (0) 2019.04.01
브런치에서 이동  (0) 2019.04.01

+ Recent posts