In [56]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
In [57]:
# 5-MA : 5일 간 추이의 평균값을 출력한 것
# 데이터 호출
bitcoin = pd.read_csv('D:/workspaces/WinterStudy2022/datasetBitcoin/BitCoin.csv')
In [58]:
# 데이터 확인
bitcoin.head()
Out[58]:
Unnamed: 0 | Date | Open | High | Low | Close | Volume | Market Cap | |
---|---|---|---|---|---|---|---|---|
0 | 0 | 2017-09-22 | 3628.02 | 3758.27 | 3553.53 | 3630.70 | 1.194830e+09 | 60152300000 |
1 | 1 | 2017-09-21 | 3901.47 | 3916.42 | 3613.63 | 3631.04 | 1.411480e+09 | 64677600000 |
2 | 2 | 2017-09-20 | 3916.36 | 4031.39 | 3857.73 | 3905.95 | 1.213830e+09 | 64918500000 |
3 | 3 | 2017-09-19 | 4073.79 | 4094.07 | 3868.87 | 3924.97 | 1.563980e+09 | 67520300000 |
4 | 4 | 2017-09-18 | 3591.09 | 4079.23 | 3591.09 | 4065.20 | 1.943210e+09 | 59514100000 |
In [59]:
# 데이터전처리
bitcoin.isnull()
bitcoin = bitcoin[(bitcoin['Date'] >= '2016-06-01') & (bitcoin['Date'] <= '2017-06-30')]
# sort_values를 이용한 오름차순 정렬(기준 : Date)
bitcoin_sorted = bitcoin.sort_values(by=['Date'], axis=0)
print(bitcoin_sorted.head())
print(bitcoin_sorted.tail())
Unnamed: 0 Date Open High Low Close Volume \ 625 625 2016-06-01 431.86 431.86 426.34 429.11 34042500.0 594 594 2016-06-02 386.59 386.63 372.39 376.52 49249300.0 565 565 2016-06-03 400.52 411.91 395.78 407.71 91212500.0 534 534 2016-06-04 424.28 424.53 422.73 423.41 59091000.0 504 504 2016-06-05 447.94 461.38 447.07 459.60 72796800.0 Market Cap 625 6498830000 594 5865740000 565 6121400000 534 6533260000 504 6947800000 Unnamed: 0 Date Open High Low Close Volume \ 88 88 2017-06-26 2590.57 2615.25 2376.29 2478.45 1.663280e+09 87 87 2017-06-27 2478.45 2552.45 2332.99 2552.45 1.489790e+09 86 86 2017-06-28 2553.03 2603.98 2484.42 2574.79 1.183870e+09 85 85 2017-06-29 2567.56 2588.83 2510.48 2539.32 9.499790e+08 84 84 2017-06-30 2539.24 2559.25 2478.43 2480.84 8.602730e+08 Market Cap 88 42514000000 87 40677900000 86 41906700000 85 42150300000 84 41689100000
In [60]:
# bitcoin 원본파일 확인 결과 정상.
# 일자로만 계산한다면 394가 나와야 함.
len(bitcoin_sorted)
Out[60]:
377
In [61]:
# x축과 y축을 조건에 맞게 조절
# x축 : 범위를 이동하면서 5일마다 평균을 산출.
x = bitcoin_sorted['Date']
# x축의 index값을 재부여하기 위하여 신규 list 생성
# Series 데이터 가공에 유리하도록 만들기 위함.
bitcoin_index_list = []
for i in range(len(x)):
bitcoin_index_list.append(i)
bitcoin_index_list
Out[61]:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376]
In [62]:
# 0부터 순차적으로 부여된 index_list를 Series_x에 삽입
x.index = bitcoin_index_list
x
for i in range(len(x)):
print(x[i])
2016-06-01 2016-06-02 2016-06-03 2016-06-04 2016-06-05 2016-06-06 2016-06-07 2016-06-08 2016-06-09 2016-06-10 2016-06-11 2016-06-12 2016-06-13 2016-06-14 2016-06-15 2016-06-16 2016-06-17 2016-06-18 2016-06-19 2016-06-20 2016-06-21 2016-06-22 2016-06-23 2016-06-24 2016-06-25 2016-06-26 2016-06-27 2016-06-28 2016-06-29 2016-06-30 2016-07-01 2016-07-02 2016-07-03 2016-07-04 2016-07-05 2016-07-06 2016-07-07 2016-07-08 2016-07-09 2016-07-10 2016-07-11 2016-07-12 2016-07-13 2016-07-14 2016-07-15 2016-07-16 2016-07-17 2016-07-18 2016-07-19 2016-07-20 2016-07-21 2016-07-22 2016-07-23 2016-07-24 2016-07-25 2016-07-26 2016-07-27 2016-07-28 2016-07-29 2016-07-30 2016-07-31 2016-08-01 2016-08-02 2016-08-03 2016-08-04 2016-08-05 2016-08-06 2016-08-07 2016-08-08 2016-08-09 2016-08-10 2016-08-11 2016-08-12 2016-08-13 2016-08-14 2016-08-15 2016-08-16 2016-08-17 2016-08-18 2016-08-19 2016-08-20 2016-08-21 2016-08-22 2016-08-23 2016-08-24 2016-08-25 2016-08-26 2016-08-27 2016-08-28 2016-08-29 2016-08-30 2016-08-31 2016-09-01 2016-09-02 2016-09-03 2016-09-04 2016-09-05 2016-09-06 2016-09-07 2016-09-08 2016-09-09 2016-09-10 2016-09-11 2016-09-12 2016-09-13 2016-09-14 2016-09-15 2016-09-16 2016-09-17 2016-09-18 2016-09-19 2016-09-20 2016-09-21 2016-09-22 2016-09-23 2016-09-24 2016-09-25 2016-09-26 2016-09-27 2016-09-28 2016-09-29 2016-09-30 2016-10-01 2016-10-02 2016-10-03 2016-10-04 2016-10-05 2016-10-06 2016-10-07 2016-10-08 2016-10-09 2016-10-10 2016-10-11 2016-10-12 2016-10-13 2016-10-14 2016-10-15 2016-10-16 2016-10-17 2016-10-18 2016-10-19 2016-10-20 2016-10-21 2016-10-22 2016-10-23 2016-10-24 2016-10-25 2016-10-26 2016-10-27 2016-10-28 2016-10-29 2016-10-30 2016-10-31 2016-11-01 2016-11-02 2016-11-03 2016-11-04 2016-11-05 2016-11-06 2016-11-07 2016-11-08 2016-11-09 2016-11-10 2016-11-11 2016-11-12 2016-11-13 2016-11-14 2016-11-15 2016-11-16 2016-11-17 2016-11-18 2016-11-19 2016-11-20 2016-11-21 2016-11-22 2016-11-23 2016-11-24 2016-11-25 2016-11-26 2016-11-27 2016-11-28 2016-11-29 2016-11-30 2016-12-01 2016-12-02 2016-12-03 2016-12-04 2016-12-05 2016-12-06 2016-12-07 2016-12-08 2016-12-09 2016-12-10 2016-12-11 2016-12-12 2016-12-13 2016-12-14 2016-12-15 2016-12-16 2016-12-17 2016-12-18 2016-12-19 2016-12-20 2016-12-21 2016-12-22 2016-12-23 2016-12-24 2016-12-25 2016-12-26 2016-12-27 2016-12-28 2016-12-29 2016-12-30 2016-12-31 2017-01-01 2017-01-02 2017-01-03 2017-01-04 2017-01-05 2017-01-06 2017-01-07 2017-01-08 2017-01-09 2017-01-13 2017-01-14 2017-01-15 2017-01-16 2017-01-17 2017-01-18 2017-01-19 2017-01-20 2017-01-21 2017-01-22 2017-01-23 2017-01-24 2017-01-25 2017-01-26 2017-01-27 2017-01-28 2017-01-29 2017-01-30 2017-01-31 2017-02-01 2017-02-02 2017-02-03 2017-02-04 2017-02-05 2017-02-06 2017-02-07 2017-02-08 2017-02-09 2017-02-13 2017-02-14 2017-02-15 2017-02-16 2017-02-17 2017-02-18 2017-02-19 2017-02-20 2017-02-21 2017-02-22 2017-02-23 2017-02-24 2017-02-25 2017-02-26 2017-02-27 2017-02-28 2017-03-01 2017-03-02 2017-03-03 2017-03-04 2017-03-05 2017-03-06 2017-03-07 2017-03-08 2017-03-09 2017-03-13 2017-03-14 2017-03-15 2017-03-16 2017-03-17 2017-03-18 2017-03-19 2017-03-20 2017-03-21 2017-03-22 2017-03-23 2017-03-24 2017-03-25 2017-03-26 2017-03-27 2017-03-28 2017-03-29 2017-03-30 2017-03-31 2017-04-01 2017-04-02 2017-04-03 2017-04-04 2017-04-05 2017-04-06 2017-04-07 2017-04-08 2017-04-09 2017-04-13 2017-04-14 2017-04-15 2017-04-16 2017-04-17 2017-04-18 2017-04-19 2017-04-20 2017-04-21 2017-04-22 2017-04-23 2017-04-24 2017-04-25 2017-04-26 2017-04-27 2017-04-28 2017-04-29 2017-04-30 2017-05-01 2017-05-02 2017-05-03 2017-05-04 2017-05-05 2017-05-06 2017-05-07 2017-05-08 2017-05-09 2017-05-13 2017-05-14 2017-05-15 2017-05-16 2017-05-17 2017-05-18 2017-05-19 2017-05-20 2017-05-21 2017-05-22 2017-05-23 2017-05-24 2017-05-25 2017-05-26 2017-05-27 2017-05-28 2017-05-29 2017-05-30 2017-05-31 2017-06-01 2017-06-02 2017-06-03 2017-06-04 2017-06-05 2017-06-06 2017-06-07 2017-06-08 2017-06-09 2017-06-13 2017-06-14 2017-06-15 2017-06-16 2017-06-17 2017-06-18 2017-06-19 2017-06-20 2017-06-21 2017-06-22 2017-06-23 2017-06-24 2017-06-25 2017-06-26 2017-06-27 2017-06-28 2017-06-29 2017-06-30
In [63]:
# 참조된 데이터값이 5개씩 참고되어야 하지만
# 1 ~ 5, 2 ~ 6과 같이 범위가 유지된 채로 움직여야 한다.
# 그러기 위해서는 5개씩 참조가 잘 이루어지고 있는지를 확인해야 한다.
# temp_list = 5개씩 데이터가 참조되는지를 확인하는 리스트
temp_list = []
# new_x_list = 새로운 x축을 담당할 리스트
new_x_list = []
for i in range(len(x)):
# temp_list에 x[i]원소를 넣는다.
temp_list.append(x[i])
# 만약 참조된 데이터가 5개라면
if len(temp_list) == 5:
# "a ~ b"라는 새로운 원소를 만든 후
temp_element = "{0} ~ {1}".format(temp_list[0], temp_list[4])
# new_x_list에 추가한다.
new_x_list.append(temp_element)
del temp_list[0]
print(new_x_list)
print(len(new_x_list))
['2016-06-01 ~ 2016-06-05', '2016-06-02 ~ 2016-06-06', '2016-06-03 ~ 2016-06-07', '2016-06-04 ~ 2016-06-08', '2016-06-05 ~ 2016-06-09', '2016-06-06 ~ 2016-06-10', '2016-06-07 ~ 2016-06-11', '2016-06-08 ~ 2016-06-12', '2016-06-09 ~ 2016-06-13', '2016-06-10 ~ 2016-06-14', '2016-06-11 ~ 2016-06-15', '2016-06-12 ~ 2016-06-16', '2016-06-13 ~ 2016-06-17', '2016-06-14 ~ 2016-06-18', '2016-06-15 ~ 2016-06-19', '2016-06-16 ~ 2016-06-20', '2016-06-17 ~ 2016-06-21', '2016-06-18 ~ 2016-06-22', '2016-06-19 ~ 2016-06-23', '2016-06-20 ~ 2016-06-24', '2016-06-21 ~ 2016-06-25', '2016-06-22 ~ 2016-06-26', '2016-06-23 ~ 2016-06-27', '2016-06-24 ~ 2016-06-28', '2016-06-25 ~ 2016-06-29', '2016-06-26 ~ 2016-06-30', '2016-06-27 ~ 2016-07-01', '2016-06-28 ~ 2016-07-02', '2016-06-29 ~ 2016-07-03', '2016-06-30 ~ 2016-07-04', '2016-07-01 ~ 2016-07-05', '2016-07-02 ~ 2016-07-06', '2016-07-03 ~ 2016-07-07', '2016-07-04 ~ 2016-07-08', '2016-07-05 ~ 2016-07-09', '2016-07-06 ~ 2016-07-10', '2016-07-07 ~ 2016-07-11', '2016-07-08 ~ 2016-07-12', '2016-07-09 ~ 2016-07-13', '2016-07-10 ~ 2016-07-14', '2016-07-11 ~ 2016-07-15', '2016-07-12 ~ 2016-07-16', '2016-07-13 ~ 2016-07-17', '2016-07-14 ~ 2016-07-18', '2016-07-15 ~ 2016-07-19', '2016-07-16 ~ 2016-07-20', '2016-07-17 ~ 2016-07-21', '2016-07-18 ~ 2016-07-22', '2016-07-19 ~ 2016-07-23', '2016-07-20 ~ 2016-07-24', '2016-07-21 ~ 2016-07-25', '2016-07-22 ~ 2016-07-26', '2016-07-23 ~ 2016-07-27', '2016-07-24 ~ 2016-07-28', '2016-07-25 ~ 2016-07-29', '2016-07-26 ~ 2016-07-30', '2016-07-27 ~ 2016-07-31', '2016-07-28 ~ 2016-08-01', '2016-07-29 ~ 2016-08-02', '2016-07-30 ~ 2016-08-03', '2016-07-31 ~ 2016-08-04', '2016-08-01 ~ 2016-08-05', '2016-08-02 ~ 2016-08-06', '2016-08-03 ~ 2016-08-07', '2016-08-04 ~ 2016-08-08', '2016-08-05 ~ 2016-08-09', '2016-08-06 ~ 2016-08-10', '2016-08-07 ~ 2016-08-11', '2016-08-08 ~ 2016-08-12', '2016-08-09 ~ 2016-08-13', '2016-08-10 ~ 2016-08-14', '2016-08-11 ~ 2016-08-15', '2016-08-12 ~ 2016-08-16', '2016-08-13 ~ 2016-08-17', '2016-08-14 ~ 2016-08-18', '2016-08-15 ~ 2016-08-19', '2016-08-16 ~ 2016-08-20', '2016-08-17 ~ 2016-08-21', '2016-08-18 ~ 2016-08-22', '2016-08-19 ~ 2016-08-23', '2016-08-20 ~ 2016-08-24', '2016-08-21 ~ 2016-08-25', '2016-08-22 ~ 2016-08-26', '2016-08-23 ~ 2016-08-27', '2016-08-24 ~ 2016-08-28', '2016-08-25 ~ 2016-08-29', '2016-08-26 ~ 2016-08-30', '2016-08-27 ~ 2016-08-31', '2016-08-28 ~ 2016-09-01', '2016-08-29 ~ 2016-09-02', '2016-08-30 ~ 2016-09-03', '2016-08-31 ~ 2016-09-04', '2016-09-01 ~ 2016-09-05', '2016-09-02 ~ 2016-09-06', '2016-09-03 ~ 2016-09-07', '2016-09-04 ~ 2016-09-08', '2016-09-05 ~ 2016-09-09', '2016-09-06 ~ 2016-09-10', '2016-09-07 ~ 2016-09-11', '2016-09-08 ~ 2016-09-12', '2016-09-09 ~ 2016-09-13', '2016-09-10 ~ 2016-09-14', '2016-09-11 ~ 2016-09-15', '2016-09-12 ~ 2016-09-16', '2016-09-13 ~ 2016-09-17', '2016-09-14 ~ 2016-09-18', '2016-09-15 ~ 2016-09-19', '2016-09-16 ~ 2016-09-20', '2016-09-17 ~ 2016-09-21', '2016-09-18 ~ 2016-09-22', '2016-09-19 ~ 2016-09-23', '2016-09-20 ~ 2016-09-24', '2016-09-21 ~ 2016-09-25', '2016-09-22 ~ 2016-09-26', '2016-09-23 ~ 2016-09-27', '2016-09-24 ~ 2016-09-28', '2016-09-25 ~ 2016-09-29', '2016-09-26 ~ 2016-09-30', '2016-09-27 ~ 2016-10-01', '2016-09-28 ~ 2016-10-02', '2016-09-29 ~ 2016-10-03', '2016-09-30 ~ 2016-10-04', '2016-10-01 ~ 2016-10-05', '2016-10-02 ~ 2016-10-06', '2016-10-03 ~ 2016-10-07', '2016-10-04 ~ 2016-10-08', '2016-10-05 ~ 2016-10-09', '2016-10-06 ~ 2016-10-10', '2016-10-07 ~ 2016-10-11', '2016-10-08 ~ 2016-10-12', '2016-10-09 ~ 2016-10-13', '2016-10-10 ~ 2016-10-14', '2016-10-11 ~ 2016-10-15', '2016-10-12 ~ 2016-10-16', '2016-10-13 ~ 2016-10-17', '2016-10-14 ~ 2016-10-18', '2016-10-15 ~ 2016-10-19', '2016-10-16 ~ 2016-10-20', '2016-10-17 ~ 2016-10-21', '2016-10-18 ~ 2016-10-22', '2016-10-19 ~ 2016-10-23', '2016-10-20 ~ 2016-10-24', '2016-10-21 ~ 2016-10-25', '2016-10-22 ~ 2016-10-26', '2016-10-23 ~ 2016-10-27', '2016-10-24 ~ 2016-10-28', '2016-10-25 ~ 2016-10-29', '2016-10-26 ~ 2016-10-30', '2016-10-27 ~ 2016-10-31', '2016-10-28 ~ 2016-11-01', '2016-10-29 ~ 2016-11-02', '2016-10-30 ~ 2016-11-03', '2016-10-31 ~ 2016-11-04', '2016-11-01 ~ 2016-11-05', '2016-11-02 ~ 2016-11-06', '2016-11-03 ~ 2016-11-07', '2016-11-04 ~ 2016-11-08', '2016-11-05 ~ 2016-11-09', '2016-11-06 ~ 2016-11-10', '2016-11-07 ~ 2016-11-11', '2016-11-08 ~ 2016-11-12', '2016-11-09 ~ 2016-11-13', '2016-11-10 ~ 2016-11-14', '2016-11-11 ~ 2016-11-15', '2016-11-12 ~ 2016-11-16', '2016-11-13 ~ 2016-11-17', '2016-11-14 ~ 2016-11-18', '2016-11-15 ~ 2016-11-19', '2016-11-16 ~ 2016-11-20', '2016-11-17 ~ 2016-11-21', '2016-11-18 ~ 2016-11-22', '2016-11-19 ~ 2016-11-23', '2016-11-20 ~ 2016-11-24', '2016-11-21 ~ 2016-11-25', '2016-11-22 ~ 2016-11-26', '2016-11-23 ~ 2016-11-27', '2016-11-24 ~ 2016-11-28', '2016-11-25 ~ 2016-11-29', '2016-11-26 ~ 2016-11-30', '2016-11-27 ~ 2016-12-01', '2016-11-28 ~ 2016-12-02', '2016-11-29 ~ 2016-12-03', '2016-11-30 ~ 2016-12-04', '2016-12-01 ~ 2016-12-05', '2016-12-02 ~ 2016-12-06', '2016-12-03 ~ 2016-12-07', '2016-12-04 ~ 2016-12-08', '2016-12-05 ~ 2016-12-09', '2016-12-06 ~ 2016-12-10', '2016-12-07 ~ 2016-12-11', '2016-12-08 ~ 2016-12-12', '2016-12-09 ~ 2016-12-13', '2016-12-10 ~ 2016-12-14', '2016-12-11 ~ 2016-12-15', '2016-12-12 ~ 2016-12-16', '2016-12-13 ~ 2016-12-17', '2016-12-14 ~ 2016-12-18', '2016-12-15 ~ 2016-12-19', '2016-12-16 ~ 2016-12-20', '2016-12-17 ~ 2016-12-21', '2016-12-18 ~ 2016-12-22', '2016-12-19 ~ 2016-12-23', '2016-12-20 ~ 2016-12-24', '2016-12-21 ~ 2016-12-25', '2016-12-22 ~ 2016-12-26', '2016-12-23 ~ 2016-12-27', '2016-12-24 ~ 2016-12-28', '2016-12-25 ~ 2016-12-29', '2016-12-26 ~ 2016-12-30', '2016-12-27 ~ 2016-12-31', '2016-12-28 ~ 2017-01-01', '2016-12-29 ~ 2017-01-02', '2016-12-30 ~ 2017-01-03', '2016-12-31 ~ 2017-01-04', '2017-01-01 ~ 2017-01-05', '2017-01-02 ~ 2017-01-06', '2017-01-03 ~ 2017-01-07', '2017-01-04 ~ 2017-01-08', '2017-01-05 ~ 2017-01-09', '2017-01-06 ~ 2017-01-13', '2017-01-07 ~ 2017-01-14', '2017-01-08 ~ 2017-01-15', '2017-01-09 ~ 2017-01-16', '2017-01-13 ~ 2017-01-17', '2017-01-14 ~ 2017-01-18', '2017-01-15 ~ 2017-01-19', '2017-01-16 ~ 2017-01-20', '2017-01-17 ~ 2017-01-21', '2017-01-18 ~ 2017-01-22', '2017-01-19 ~ 2017-01-23', '2017-01-20 ~ 2017-01-24', '2017-01-21 ~ 2017-01-25', '2017-01-22 ~ 2017-01-26', '2017-01-23 ~ 2017-01-27', '2017-01-24 ~ 2017-01-28', '2017-01-25 ~ 2017-01-29', '2017-01-26 ~ 2017-01-30', '2017-01-27 ~ 2017-01-31', '2017-01-28 ~ 2017-02-01', '2017-01-29 ~ 2017-02-02', '2017-01-30 ~ 2017-02-03', '2017-01-31 ~ 2017-02-04', '2017-02-01 ~ 2017-02-05', '2017-02-02 ~ 2017-02-06', '2017-02-03 ~ 2017-02-07', '2017-02-04 ~ 2017-02-08', '2017-02-05 ~ 2017-02-09', '2017-02-06 ~ 2017-02-13', '2017-02-07 ~ 2017-02-14', '2017-02-08 ~ 2017-02-15', '2017-02-09 ~ 2017-02-16', '2017-02-13 ~ 2017-02-17', '2017-02-14 ~ 2017-02-18', '2017-02-15 ~ 2017-02-19', '2017-02-16 ~ 2017-02-20', '2017-02-17 ~ 2017-02-21', '2017-02-18 ~ 2017-02-22', '2017-02-19 ~ 2017-02-23', '2017-02-20 ~ 2017-02-24', '2017-02-21 ~ 2017-02-25', '2017-02-22 ~ 2017-02-26', '2017-02-23 ~ 2017-02-27', '2017-02-24 ~ 2017-02-28', '2017-02-25 ~ 2017-03-01', '2017-02-26 ~ 2017-03-02', '2017-02-27 ~ 2017-03-03', '2017-02-28 ~ 2017-03-04', '2017-03-01 ~ 2017-03-05', '2017-03-02 ~ 2017-03-06', '2017-03-03 ~ 2017-03-07', '2017-03-04 ~ 2017-03-08', '2017-03-05 ~ 2017-03-09', '2017-03-06 ~ 2017-03-13', '2017-03-07 ~ 2017-03-14', '2017-03-08 ~ 2017-03-15', '2017-03-09 ~ 2017-03-16', '2017-03-13 ~ 2017-03-17', '2017-03-14 ~ 2017-03-18', '2017-03-15 ~ 2017-03-19', '2017-03-16 ~ 2017-03-20', '2017-03-17 ~ 2017-03-21', '2017-03-18 ~ 2017-03-22', '2017-03-19 ~ 2017-03-23', '2017-03-20 ~ 2017-03-24', '2017-03-21 ~ 2017-03-25', '2017-03-22 ~ 2017-03-26', '2017-03-23 ~ 2017-03-27', '2017-03-24 ~ 2017-03-28', '2017-03-25 ~ 2017-03-29', '2017-03-26 ~ 2017-03-30', '2017-03-27 ~ 2017-03-31', '2017-03-28 ~ 2017-04-01', '2017-03-29 ~ 2017-04-02', '2017-03-30 ~ 2017-04-03', '2017-03-31 ~ 2017-04-04', '2017-04-01 ~ 2017-04-05', '2017-04-02 ~ 2017-04-06', '2017-04-03 ~ 2017-04-07', '2017-04-04 ~ 2017-04-08', '2017-04-05 ~ 2017-04-09', '2017-04-06 ~ 2017-04-13', '2017-04-07 ~ 2017-04-14', '2017-04-08 ~ 2017-04-15', '2017-04-09 ~ 2017-04-16', '2017-04-13 ~ 2017-04-17', '2017-04-14 ~ 2017-04-18', '2017-04-15 ~ 2017-04-19', '2017-04-16 ~ 2017-04-20', '2017-04-17 ~ 2017-04-21', '2017-04-18 ~ 2017-04-22', '2017-04-19 ~ 2017-04-23', '2017-04-20 ~ 2017-04-24', '2017-04-21 ~ 2017-04-25', '2017-04-22 ~ 2017-04-26', '2017-04-23 ~ 2017-04-27', '2017-04-24 ~ 2017-04-28', '2017-04-25 ~ 2017-04-29', '2017-04-26 ~ 2017-04-30', '2017-04-27 ~ 2017-05-01', '2017-04-28 ~ 2017-05-02', '2017-04-29 ~ 2017-05-03', '2017-04-30 ~ 2017-05-04', '2017-05-01 ~ 2017-05-05', '2017-05-02 ~ 2017-05-06', '2017-05-03 ~ 2017-05-07', '2017-05-04 ~ 2017-05-08', '2017-05-05 ~ 2017-05-09', '2017-05-06 ~ 2017-05-13', '2017-05-07 ~ 2017-05-14', '2017-05-08 ~ 2017-05-15', '2017-05-09 ~ 2017-05-16', '2017-05-13 ~ 2017-05-17', '2017-05-14 ~ 2017-05-18', '2017-05-15 ~ 2017-05-19', '2017-05-16 ~ 2017-05-20', '2017-05-17 ~ 2017-05-21', '2017-05-18 ~ 2017-05-22', '2017-05-19 ~ 2017-05-23', '2017-05-20 ~ 2017-05-24', '2017-05-21 ~ 2017-05-25', '2017-05-22 ~ 2017-05-26', '2017-05-23 ~ 2017-05-27', '2017-05-24 ~ 2017-05-28', '2017-05-25 ~ 2017-05-29', '2017-05-26 ~ 2017-05-30', '2017-05-27 ~ 2017-05-31', '2017-05-28 ~ 2017-06-01', '2017-05-29 ~ 2017-06-02', '2017-05-30 ~ 2017-06-03', '2017-05-31 ~ 2017-06-04', '2017-06-01 ~ 2017-06-05', '2017-06-02 ~ 2017-06-06', '2017-06-03 ~ 2017-06-07', '2017-06-04 ~ 2017-06-08', '2017-06-05 ~ 2017-06-09', '2017-06-06 ~ 2017-06-13', '2017-06-07 ~ 2017-06-14', '2017-06-08 ~ 2017-06-15', '2017-06-09 ~ 2017-06-16', '2017-06-13 ~ 2017-06-17', '2017-06-14 ~ 2017-06-18', '2017-06-15 ~ 2017-06-19', '2017-06-16 ~ 2017-06-20', '2017-06-17 ~ 2017-06-21', '2017-06-18 ~ 2017-06-22', '2017-06-19 ~ 2017-06-23', '2017-06-20 ~ 2017-06-24', '2017-06-21 ~ 2017-06-25', '2017-06-22 ~ 2017-06-26', '2017-06-23 ~ 2017-06-27', '2017-06-24 ~ 2017-06-28', '2017-06-25 ~ 2017-06-29', '2017-06-26 ~ 2017-06-30'] 373
In [64]:
# Y값 가공 시작
y = bitcoin_sorted['Open']
y
Out[64]:
625 431.86 594 386.59 565 400.52 534 424.28 504 447.94 ... 88 2590.57 87 2478.45 86 2553.03 85 2567.56 84 2539.24 Name: Open, Length: 377, dtype: float64
In [65]:
# 역시 index가 제대로 부여되지 않았으므로
# index를 재부여하여 차후 데이터 가공을 쉽도록 만든다.
y.index = bitcoin_index_list
y
Out[65]:
0 431.86 1 386.59 2 400.52 3 424.28 4 447.94 ... 372 2590.57 373 2478.45 374 2553.03 375 2567.56 376 2539.24 Name: Open, Length: 377, dtype: float64
In [66]:
# 1 ~ 5 일차의 Open 값 평균을 내고, 2 ~ 6일차의 Open 값 평균을 낸다.
# 역시 temp_list와 new_y_list를 통해 해결한다.
# temp_list : index값이 5개씩 참조가 되었는지를 확인하는 리스트
# new_y_list : 5개가 확인된 리스트의 평균을 추가한 리스트
temp_list = []
new_y_list = []
for i in range(len(y)):
# temp_list에 y값을 추가한다.
temp_list.append(y[i])
# 만약 temp_list에 참조된 값 개수가 5개라면?
if len(temp_list) == 5:
# temp_list 내부의 값을 평균낸 후 temp_Value에 저장한
temp_value = sum(temp_list)/len(temp_list)
new_y_list.append(temp_value)
del temp_list[0]
print(new_y_list)
print(len(new_y_list))
[418.238, 446.78599999999994, 503.552, 538.4540000000001, 574.9, 607.8059999999999, 633.6479999999999, 651.308, 670.6320000000001, 690.23, 704.872, 703.414, 705.368, 720.79, 731.228, 746.8779999999999, 754.75, 734.234, 703.97, 677.7479999999999, 658.018, 644.028, 636.716, 648.848, 652.5559999999999, 647.618, 600.434, 549.866, 499.79799999999994, 455.698, 419.508, 450.5959999999999, 510.912, 546.914, 584.3040000000001, 614.898, 639.9560000000001, 657.1800000000001, 672.586, 681.0559999999999, 690.368, 680.976, 660.5319999999999, 663.5339999999999, 667.4979999999999, 670.2259999999999, 670.516, 671.1020000000001, 665.286, 661.8199999999999, 659.51, 657.31, 654.652, 655.4040000000001, 655.3439999999999, 654.494, 654.6679999999999, 615.85, 560.3039999999999, 512.174, 465.354, 426.02, 449.946, 502.73199999999997, 538.3879999999999, 576.732, 608.514, 633.6980000000001, 659.176, 658.1, 652.2920000000001, 642.9220000000001, 615.7520000000001, 577.6880000000001, 574.958, 572.708, 573.826, 576.766, 577.476, 580.088, 581.9019999999999, 582.722, 581.8839999999999, 581.512, 578.124, 576.2560000000001, 575.0420000000001, 575.0100000000001, 549.796, 510.514, 478.47799999999995, 447.81800000000004, 423.942, 449.70599999999996, 508.29800000000006, 543.728, 584.836, 617.028, 642.554, 663.266, 666.662, 663.1600000000001, 661.4440000000001, 640.9280000000001, 608.384, 608.0360000000001, 608.242, 607.9739999999999, 607.242, 605.2540000000001, 603.2379999999999, 601.856, 600.5559999999999, 600.0, 602.148, 604.156, 604.568, 605.162, 574.6479999999999, 528.2740000000001, 489.974, 452.88800000000003, 423.84799999999996, 449.36800000000005, 504.258, 538.8399999999999, 579.508, 610.768, 640.168, 664.652, 674.3280000000001, 677.144, 681.8420000000001, 665.0899999999999, 638.85, 639.5260000000001, 639.75, 637.8199999999999, 636.17, 634.434, 638.0759999999999, 641.882, 646.55, 651.92, 660.934, 667.01, 673.636, 685.66, 694.6519999999999, 648.7499999999999, 587.5719999999999, 532.9620000000001, 474.512, 424.15600000000006, 450.15, 503.424, 538.4, 578.71, 612.3860000000001, 639.7620000000001, 665.016, 687.632, 703.348, 720.658, 719.7819999999999, 713.808, 720.9100000000001, 730.876, 740.094, 744.1120000000001, 743.0640000000001, 745.2700000000001, 743.8279999999999, 741.5400000000001, 743.5899999999999, 742.7500000000001, 738.8979999999999, 737.24, 736.408, 677.742, 606.592, 544.418, 481.7200000000001, 424.954, 457.254, 510.9719999999999, 544.4100000000001, 581.242, 618.926, 640.3399999999999, 664.692, 703.062, 737.662, 765.5020000000001, 777.9440000000001, 780.97, 783.042, 785.1800000000001, 787.6160000000001, 791.952, 801.7539999999999, 816.53, 842.8279999999999, 864.308, 883.5600000000001, 898.394, 912.382, 922.972, 937.548, 950.2940000000001, 961.356, 968.5779999999999, 1009.5599999999998, 1029.396, 1106.93, 1371.864, 1676.196, 2014.4480000000003, 2740.4579999999996, 2631.5460000000003, 2338.908, 2004.016, 1594.112, 819.95, 841.076, 853.716, 869.722, 884.476, 902.7280000000001, 905.9540000000001, 910.4219999999999, 909.1719999999999, 910.54, 909.7699999999999, 908.632, 910.9100000000001, 916.5559999999999, 920.2700000000001, 936.3220000000001, 950.36, 1010.882, 1042.974, 1142.9879999999998, 1424.0700000000002, 1713.35, 2013.8400000000001, 2778.002, 2693.5719999999997, 2411.114, 2125.076, 1781.1799999999998, 1006.1200000000001, 1016.186, 1028.79, 1037.286, 1051.612, 1069.3480000000002, 1082.9599999999998, 1106.5500000000002, 1130.8939999999998, 1143.8919999999998, 1153.6879999999999, 1166.3780000000002, 1136.1560000000002, 1104.3660000000002, 1125.654, 1113.4879999999998, 1168.1, 1462.524, 1759.944, 2051.714, 2748.178, 2701.7780000000002, 2449.466, 2197.786, 1906.14, 1225.118, 1200.7, 1149.614, 1109.03, 1069.836, 1057.934, 1048.0059999999999, 1060.35, 1040.21, 1023.9399999999999, 994.22, 993.126, 994.652, 1015.7860000000001, 1026.3120000000001, 1040.782, 1038.132, 1084.402, 1105.0639999999999, 1197.88, 1498.558, 1804.4919999999997, 2110.392, 2799.614, 2741.674, 2466.1820000000002, 2187.442, 1860.578, 1178.9019999999998, 1177.452, 1185.8120000000001, 1194.568, 1205.9299999999998, 1213.822, 1221.452, 1220.952, 1228.826, 1236.1399999999999, 1247.974, 1265.138, 1286.7800000000002, 1301.0639999999999, 1279.212, 1231.5400000000002, 1218.85, 1182.1100000000001, 1225.91, 1497.0439999999999, 1808.914, 2137.582, 2756.4120000000003, 2792.862, 2650.554, 2491.6680000000006, 2260.482, 1760.17, 1779.286, 1798.5880000000002, 1833.748, 1898.8139999999999, 1962.1060000000002, 2036.6779999999999, 2121.478, 2213.878, 2264.65, 2295.266, 2267.77, 2235.382, 2197.206, 2170.4660000000003, 1934.0600000000002, 1728.9239999999998, 1550.5320000000002, 1324.622, 1198.5459999999998, 1533.866, 1849.806, 2247.834, 2897.9900000000002, 3122.8100000000004, 3128.018, 3106.3140000000003, 2948.706, 2576.19, 2571.0780000000004, 2537.5080000000003, 2555.844, 2603.8160000000003, 2639.2200000000003, 2649.6180000000004, 2687.5160000000005, 2690.714, 2666.942, 2624.4260000000004, 2593.5640000000003, 2559.372, 2545.77] 373
In [67]:
len(new_x_list) == len(new_y_list)
Out[67]:
True
In [68]:
plt.figure(figsize = (10, 10))
# 제목 설정
plt.title("BitCoin Price(5-MA, Open)", fontsize = 15)
# x, y축 이름 설정
plt.xlabel("X = Date")
plt.ylabel("Y = Price")
# y축 눈금 설정
plt.yticks([i for i in range(0, 4000, 250)])
plt.xticks([i for i in range(0, len(new_x_list), 183)])
# 그래프 격자
plt.grid()
# 범례
plt.plot(new_x_list, new_y_list, color = '#f2a900', label = "BitCoin")
plt.legend()
plt.show()
Bonus Mission¶
비트코인 데이터와 더불어 이더리움 데이터도 주어졌을 때, 2016.6 ~ 2017.6 기간에 해당하는 비트코인의 5-MA 그래프와 이더리움의 5-MA 그래프를 동시에 그리시오.
- 조건1. 선의 색깔은 비트코인 : 노란색(#f2a900), 이더리움 : 검은색(#3c3c3d) 으로 한다
- 조건2. x-axis label과 y-axis label은 적절한 텍스트로 추가하라.
- 조건3. 이동평균의 기준은 Open Column으로 계산하라.
- 이외에도 그래프를 알아보기 쉽게 하기 위한 정보(Text, Facet 등)을 추가하라 (선택)
In [69]:
# .rolling을 활용한 이동평균 산출
bitcoin_sorted_open = bitcoin_sorted['Open']
bitcoin_sorted_MA = bitcoin_sorted_open.rolling(window = 5).mean()
print(bitcoin_sorted_MA)
bitcoin_index_list = [i for i in range(len(bitcoin_sorted_MA))]
bitcoin_sorted.index = bitcoin_index_list
print(bitcoin_sorted_open)
0 NaN 1 NaN 2 NaN 3 NaN 4 418.238 ... 372 2666.942 373 2624.426 374 2593.564 375 2559.372 376 2545.770 Name: Open, Length: 377, dtype: float64 0 431.86 1 386.59 2 400.52 3 424.28 4 447.94 ... 372 2590.57 373 2478.45 374 2553.03 375 2567.56 376 2539.24 Name: Open, Length: 377, dtype: float64
In [70]:
# 이더리움 데이터 호출 및 가공
ethereum = pd.read_csv('D:/workspaces/WinterStudy2022/datasetBitcoin/ETH_day.csv')
ethereum.head()
Out[70]:
Date | Symbol | Open | High | Low | Close | Volume ETH | Volume USD | |
---|---|---|---|---|---|---|---|---|
0 | 2020-04-15 | ETHUSD | 158.61 | 158.61 | 158.61 | 158.61 | 0.00 | 0.00 |
1 | 2020-04-14 | ETHUSD | 156.97 | 162.15 | 155.74 | 158.61 | 18061.58 | 2872210.44 |
2 | 2020-04-13 | ETHUSD | 158.56 | 159.51 | 150.12 | 156.97 | 15698.32 | 2416728.28 |
3 | 2020-04-12 | ETHUSD | 158.66 | 165.37 | 155.21 | 158.56 | 12877.33 | 2082804.05 |
4 | 2020-04-11 | ETHUSD | 158.26 | 161.49 | 154.25 | 158.66 | 13761.72 | 2172914.57 |
In [71]:
# 2016년 6월 1일부터 2017년 6월 30일 외 자료는 모두 삭제한다.
ethereum = ethereum[(ethereum['Date'] >= '2016-06-01') & (ethereum['Date'] <= '2017-06-30')]
ethereum_sorted = ethereum.sort_values(by = ['Date'], axis = 0)
ethereum_sorted.head()
Out[71]:
Date | Symbol | Open | High | Low | Close | Volume ETH | Volume USD | |
---|---|---|---|---|---|---|---|---|
1414 | 2016-06-01 | ETHUSD | 14.18 | 14.35 | 13.54 | 13.95 | 6390.06 | 89027.81 |
1413 | 2016-06-02 | ETHUSD | 13.95 | 14.13 | 13.82 | 13.90 | 942.85 | 13180.38 |
1412 | 2016-06-03 | ETHUSD | 13.90 | 16.05 | 13.50 | 14.02 | 11426.53 | 157342.19 |
1411 | 2016-06-04 | ETHUSD | 14.02 | 14.16 | 13.64 | 13.86 | 4330.50 | 59977.39 |
1410 | 2016-06-05 | ETHUSD | 13.86 | 13.92 | 13.70 | 13.91 | 787.49 | 10869.67 |
In [72]:
ethereum_sorted.tail()
Out[72]:
Date | Symbol | Open | High | Low | Close | Volume ETH | Volume USD | |
---|---|---|---|---|---|---|---|---|
1024 | 2017-06-26 | ETHUSD | 278.73 | 299.90 | 210.00 | 253.00 | 249076.24 | 60950252.99 |
1023 | 2017-06-27 | ETHUSD | 253.00 | 288.17 | 210.02 | 286.21 | 173179.40 | 42085473.60 |
1022 | 2017-06-28 | ETHUSD | 286.21 | 324.95 | 260.49 | 317.59 | 184030.56 | 54573461.77 |
1021 | 2017-06-29 | ETHUSD | 317.59 | 322.84 | 285.23 | 293.80 | 152271.32 | 46521350.06 |
1020 | 2017-06-30 | ETHUSD | 293.80 | 304.94 | 270.77 | 280.80 | 146545.22 | 42337469.59 |
In [73]:
# bitcoin_sorted와 ethereuem_sorted를 활용한 데이터셋 확인
print(bitcoin_sorted['Date'])
print(ethereum_sorted['Date'])
0 2016-06-01 1 2016-06-02 2 2016-06-03 3 2016-06-04 4 2016-06-05 ... 372 2017-06-26 373 2017-06-27 374 2017-06-28 375 2017-06-29 376 2017-06-30 Name: Date, Length: 377, dtype: object 1414 2016-06-01 1413 2016-06-02 1412 2016-06-03 1411 2016-06-04 1410 2016-06-05 ... 1024 2017-06-26 1023 2017-06-27 1022 2017-06-28 1021 2017-06-29 1020 2017-06-30 Name: Date, Length: 395, dtype: object
In [74]:
temp_date_list = []
# bitcoin과 ethereum의 날짜 개수가 맞지 않으므로
# ethereum의 날짜 개수와 bitcoin의 날짜 개수를 맞추도록 한다.
# 먼저 bitcoin에 포함되지 않은 날짜를 파악한다.
not_in_bitcoin = ethereum_sorted[~ethereum_sorted['Date'].isin(bitcoin_sorted['Date'])]
print(not_in_bitcoin)
print(len(not_in_bitcoin))
# 날짜가 올바르게 뽑혔는지 확인
len(bitcoin_sorted) + len(not_in_bitcoin) == len(ethereum_sorted) # True
Date Symbol Open High Low Close Volume ETH \ 1191 2017-01-10 ETHUSD 10.24 10.74 10.24 10.68 6278.68 1190 2017-01-11 ETHUSD 10.68 10.74 9.50 9.87 8385.73 1189 2017-01-12 ETHUSD 9.87 10.47 9.40 9.76 11446.77 1160 2017-02-10 ETHUSD 11.06 11.44 10.87 11.31 6767.39 1159 2017-02-11 ETHUSD 11.31 11.39 11.28 11.39 2766.97 1158 2017-02-12 ETHUSD 11.39 11.41 11.36 11.36 3642.93 1132 2017-03-10 ETHUSD 18.00 19.78 16.47 19.10 332830.87 1131 2017-03-11 ETHUSD 19.10 21.53 18.51 21.50 70708.17 1130 2017-03-12 ETHUSD 21.50 24.00 21.40 23.60 19543.48 1101 2017-04-10 ETHUSD 43.87 45.65 42.80 43.92 5523.11 1100 2017-04-11 ETHUSD 43.92 44.68 43.73 43.87 3870.56 1099 2017-04-12 ETHUSD 43.87 47.99 43.33 46.54 26082.30 1071 2017-05-10 ETHUSD 87.59 91.86 86.51 89.15 11930.97 1070 2017-05-11 ETHUSD 89.15 90.48 84.50 88.27 107095.97 1069 2017-05-12 ETHUSD 88.27 91.01 83.93 85.38 101938.70 1040 2017-06-10 ETHUSD 280.21 344.01 279.99 331.22 93171.47 1039 2017-06-11 ETHUSD 331.22 346.99 309.00 339.00 58874.67 1038 2017-06-12 ETHUSD 339.00 418.50 310.00 394.90 156872.57 Volume USD 1191 66110.04 1190 84613.14 1189 113401.47 1160 75345.73 1159 31376.45 1158 41457.80 1132 6211148.53 1131 1412310.09 1130 437684.88 1101 241127.33 1100 170588.45 1099 1167010.32 1071 1063082.82 1070 9147344.84 1069 8768077.71 1040 28459166.17 1039 19758981.83 1038 56835613.91 18
Out[74]:
True
In [75]:
# 포함되지 않은 데이터 값이 옳게 추출되었다는 것을 검증했으므로
# ethereum_sorted를 bitcoin_sorted의 행 개수와 맞도록 재정의한다.
ethereum_sorted = ethereum_sorted[ethereum_sorted['Date'].isin(bitcoin_sorted['Date'])]
# 개수를 통한 값 추출 확인
len(ethereum_sorted) == len(bitcoin_sorted) # True
# index기준으로 값을 산출하므로
# index num 재부여
index_list_ethereum = [i for i in range(len(ethereum_sorted))]
print(index_list_ethereum)
ethereum_sorted.index = index_list_ethereum
print(ethereum_sorted)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376] Date Symbol Open High Low Close Volume ETH \ 0 2016-06-01 ETHUSD 14.18 14.35 13.54 13.95 6390.06 1 2016-06-02 ETHUSD 13.95 14.13 13.82 13.90 942.85 2 2016-06-03 ETHUSD 13.90 16.05 13.50 14.02 11426.53 3 2016-06-04 ETHUSD 14.02 14.16 13.64 13.86 4330.50 4 2016-06-05 ETHUSD 13.86 13.92 13.70 13.91 787.49 .. ... ... ... ... ... ... ... 372 2017-06-26 ETHUSD 278.73 299.90 210.00 253.00 249076.24 373 2017-06-27 ETHUSD 253.00 288.17 210.02 286.21 173179.40 374 2017-06-28 ETHUSD 286.21 324.95 260.49 317.59 184030.56 375 2017-06-29 ETHUSD 317.59 322.84 285.23 293.80 152271.32 376 2017-06-30 ETHUSD 293.80 304.94 270.77 280.80 146545.22 Volume USD 0 89027.81 1 13180.38 2 157342.19 3 59977.39 4 10869.67 .. ... 372 60950252.99 373 42085473.60 374 54573461.77 375 46521350.06 376 42337469.59 [377 rows x 8 columns]
In [76]:
# rolling을 활용한 5MA 산출
ethereum_sorted_MA = ethereum_sorted['Open'].rolling(window = 5).mean()
ethereum_sorted_MA
Out[76]:
0 NaN 1 NaN 2 NaN 3 NaN 4 13.982 ... 372 310.850 373 296.592 374 289.898 375 288.066 376 285.866 Name: Open, Length: 377, dtype: float64
In [77]:
# 그래프 크기 설정
plt.figure(figsize = (10, 10))
# 제목 설정
plt.title("BitCoin & Ethereum Price(5-MA, Open)", fontsize = 15)
# x, y축 이름 설정
plt.xlabel("X = Date")
plt.ylabel("Y = Price")
# y축 눈금 설정
plt.yticks([i for i in range(0, 4000, 250)])
# x축의 경우, bitcoin과 ethereum의 날짜가 서로 다르므로
# x축의 의미가 없다.
# grid표시를 위하여 축만 표시하고
# 숫자는 숨기도록 한다.
plt.xticks([i for i in range(0, len(new_x_list), 30)], color = 'w')
# 그래프 격자
plt.grid()
# 그래프 그리기 및 범례 그리기
plt.plot(ethereum_sorted_MA, color = '#3c3c3d', label = 'ethereum')
plt.plot(bitcoin_sorted_MA, color = '#f2a900', label = 'bitcoin')
plt.legend()
plt.show()
'전문지식 함양 > TIL' 카테고리의 다른 글
[프로그래머스 겨울방학 인공지능 과정] Flask with REST API (0) | 2022.01.11 |
---|---|
[프로그래머스 겨울방학 인공지능 과정] Flask 기초 (0) | 2022.01.10 |
[프로그래머스 겨울방학 인공지능 과정] Matplotlib 기초 (0) | 2022.01.07 |
[프로그래머스 겨울방학 인공지능 과정] Pandas 실습 (0) | 2022.01.06 |
[프로그래머스 겨울방학 인공지능 과정] Pandas 기초 (0) | 2022.01.05 |