업비트 시계열 데이터 가시화를 위한 전처리

업비트 API로 받은 시계열 데이터 가시화를 위한 전처리

시계열 데이터 분석을 위해서는 충분한 데이터를 가시화할 수 있어야 합니다. 이 포스팅을 통해 업비트 API로 가져온 대량의 시계열 데이터 전처리방법에 익숙해지게 될 것입니다. 데이터 전처리란 꼭 필요한 데이터만 추려내는 것을 뜻합니다. 파이썬 matplotlib 패키지로 그래프를 그리는데 필요한 데이터 전처리 방법을 살펴보겠습니다.

글의 순서

업비트 REST API로 암호화폐 캔들 데이터 가져오기
matplotlib를 이용한 시계열 데이터 가시화용 데이터 구조
파이썬 프로그래밍 연습 : 업비트 API로 받은 데이터 전처리 방법


업비트 REST API로 암호화폐 캔들 데이터 가져오기

업비트 REST API를 이용한 비트코인 가격 추출 파이썬 프로그래밍이라는 포스팅에서 API를 이용하여자동으로 암호화폐 가격을 가져올 수 있었습니다. 지난 포스팅에서 가져온 암호화폐 캔들 데이터는 ‘API 실습01 결과’의 형태입니다.

파이썬 코드를 실행시켜서 받아오는 데이터는 리스트 [ ]와 딕셔너리 { }의 조합으로 구성됩니다. API로 받아온다면 모두 그렇다는 것이 아니라 업비트 API로 받아오는 데이터의 경우가 그렇단 것입니다. 리스트 안에 캔들 개수만큼의 딕셔너리가 들어있습니다. 즉 API 실습01 결과에서 보실 수 있듯이 [ { }, { }, … { } ] 모양이며, 2개의 캔들 데이터이므로 [ { }, { } ]의 형태입니다.

API 실습01 결과

[{“market”:”KRW-BTC”,”candle_date_time_utc”:”2022-06-18T00:00:00″,”candle_date_time_kst”:”2022-06-18T09:00:00″,”opening_price”:27010000.00000000,”high_price”:27345000.00000000,”low_price”:26954000.00000000,”trade_price”:27017000.00000000,”timestamp”:1655527343448,”candle_acc_trade_price”:35349090363.39155000,”candle_acc_trade_volume”:1305.80173384,”prev_closing_price”:27010000.00000000,”change_price”:7000.00000000,”change_rate”:0.0002591633},{“market”:”KRW-BTC”,”candle_date_time_utc”:”2022-06-17T00:00:00″,”candle_date_time_kst”:”2022-06-17T09:00:00″,”opening_price”:26900000.00000000,”high_price”:27920000.00000000,”low_price”:26573000.00000000,”trade_price”:27010000.00000000,”timestamp”:1655510399478,”candle_acc_trade_price”:224342676396.38415000,”candle_acc_trade_volume”:8254.74720985,”prev_closing_price”:26898000.00000000,”change_price”:112000.00000000,”change_rate”:0.0041638784}]



matplotlib를 이용한 시계열 데이터 가시화용 데이터 구조

파이썬 패키지 중 matplotlib를 이용하면 아래와 같이 단 3줄의 코드로 데이터를 확인할 수 있습니다. pyplot이라는 모듈 안에는 그래프를 그리는데 필요한 많은 함수가 들어 있습니다. 그 중 plot() 함수는 x, y 좌표를 찍어주며, show() 함수는 그래프를 화면에 보여줍니다. 중요한 것은 plt.plot(x,y) 함수에서 x, y는 리스트 형태의 데이터 구조를 사용한다는 것입니다.

import matplotlib.pyplot as plt
plt.plot(x인자, y인자)
plt.show()

업비트 API를 이용해서 받은 코인 가격 변화를 그래프로 그리려면 리스트 안에 들어있는 딕셔너리로부터 우리가 원하는 x, y 리스트를 만들어야 합니다. 시계열 데이터인 만큼 리스트 x는 날짜 또는 시간, 리스트 y는 코인 가격으로 구성됩니다. 그럼 본격적으로 데이터 전처리 방법에 대해 알아보겠습니다.


파이썬 프로그래밍 연습 : 업비트 API로 받은 데이터 전처리 방법

(1) 리스트 속에 들어있는 딕셔너리로부터 새로운 리스트 만들기

업비트 API를 이용하여 받아온 코인가격 데이터는 리스트 안에 딕셔너리가 들어있는 형태입니다. 여기서 시간에 따른 코인 가격이라는 시계열 데이터를 추출하기 위해서는 캔들 개수만큼의 딕셔너리로부터 데이터를 추출해내야 합니다.

비어있는 리스트를 하나 만든 후 반복문을 써서 전체 캔들 개수만큼, 즉 딕셔너리 { } 개수만큼 반복하면서 원하는 데이터를 추출해냅니다. 똑같은 형식의 x라는 데이터를 이용하여 아래와 같이 리스트 만드는 연습을 해보겠습니다. x는 리스트 안에 2개의 딕셔너리가 들어있고, 딕셔너리는 “market”, “candle_date”, “price” 라는 3개의 키(key)와 값(value)을 가지고 있습니다.

date_raw = []에서 비어있는 리스트를 만듭니다. 여기서 raw는 날것이라는 뜻이고, 많은 프로그래머들은 추가의 가공이 필요한 데이터의 변수 이름을 지을 때, ‘날것’이라는 의미의 raw를 많이 사용합니다. for 반복문으로 리스트 안에 있는 딕셔너리를 하나씩 훑으면서, 미리 정해 놓은 key를 만날 경우, key에 대응되는 값을 date_raw에 덧붙이는 방법을 사용합니다. for 반복문에서 범위를 in range(0,len(x))로 하면, 0부터 len(x)-1까지 반복하라는 뜻입니다.

리스트에서 데이터를 덧붙이는 함수는 append이며, date_raw.append처럼 리스트 이름 뒤에 점을 찍고 append를 붙이면 됩니다. append 다음에 오는 괄호 안에는 append할 조건을 나타냅니다. x[i][“candle_date”]의 의미는 x라는 리스트에 들어있는 딕셔너리의 키(key)가 “candle_date”이라면의 뜻입니다. 이 조건을 만족하면 “candle_date”라는 key에 해당되는 값(value)가 리스트에 저장됩니다.

시계열 데이터 추출01 코드와 이 코드를 실행한 결과를 차례대로 나타내었습니다. data_raw라는 리스트에는 “candle_date”라는 key에 대응되는 값(value)이 저장되어 있습니다.

시계열 데이터 추출01 실행결과

[‘2022-06-18T09:00:00’, ‘2022-06-17T09:00:00’]

(2) 날짜를 오름차순으로 정리하기

업비트 API로 받아온 캔들 데이터는 데이터의 순서가 가장 최근 날짜부터 시작합니다. 가로축의 오른쪽으로 가면서 가장 최근 날짜가 나오는 것이 우리에게 익숙한데, 이 데이터를 그대로 쓰면 왼쪽에 가장 최근 날짜가 표시됩니다. 이것은 리스트를 만들 때 간단히 해결할 수 있습니다. x라는 리스트 맨 마지막에 있는 딕셔너리부터 맨 처음 딕셔너리까지 값을 거꾸로 가져오는 것입니다.

append 함수를 쓸 때 x[i]를 x[len(x)-1-i]로 바꿔쓰면 x라는 리스트의 맨 마지막 딕셔너리부터 거꾸로 훑어보겠다는 뜻이 됩니다. 리스트 x의 맨 마지막 인덱스는 len(x)-1이기 때문입니다.

(3) 파이썬 날짜 데이터 추출

날짜를 오름차순으로 바꾸고 나서 또 하나 해야 할 일이 있습니다. 날짜 데이터는 ‘2022-06-17T09:00:00’로 표시되는데, 문자개수가 많습니다. 반복되는 구문인 T09:00:00 만이라도 제거한다면 가독성을 높일 수 있습니다. 이럴 때 사용할 수 있는 파이썬 함수가 split()입니다. split 함수의 괄호 안에 (‘T’)라고 쓰면 T라는 문자를 기준으로 분리합니다. 만약 괄호 안을 빈칸으로 둔다면 공백에서 분리합니다. 분리 후에 리스트로 저장되니까 분리된 각각의 자료들은 인덱스를 가집니다. 만약 6월18일이라는 의미를 가지는 06.18만 추출해오고싶으면, ‘날짜 데이터 추출01’ 코드의 date_graph라는 변수를 유심히 봐 주시기 바랍니다.

날짜 데이터 추출01 실행결과

[‘2022-06-18′, ’09:00:00’]
[‘2022′, ’06’, ’18’]
2022
06
18
06.18


마치며 …

이 포스팅에서는 업비트 API를 이용하여 가져온 대량의 시계열 데이터를 가시화하기 위한 전처리방법에 대해 알아보았습니다.

업비트 API로 받은 코인 가격 캔들 데이터는 리스트 안에 딕셔너리가 들어있는 형태입니다. 시계열 데이터 가시화를 위한 파이썬 패키지인 matplotlib.pyplot은 리스트 형태의 데이터를 이용하므로, 캔들 데이터로부터 날짜와 가격이라는 리스트를 만들었습니다. 날짜와 가격을 추출해오는 전처리 프로그램에서 사용했던 리스트용 함수는 len(), append였습니다. 날짜 데이터를 전처리하는 방법도 알아보았습니다. 날짜 데이터를 추출하기 위하여 파이썬 함수 중 split()을 사용하였습니다.

여기까지 살펴본 시계열 데이터 시각화를 위한 전처리 방법을 다음 포스팅에서 그래프로 옮겨보겠습니다.

 

 

함께 참고하면 더 좋은 글 :
1. 파이썬 프로그래밍 시작하기 (1) 온라인 프로그래밍 환경 replit
2. 업비트 API로 이해해보는 REST API
3. 업비트 REST API를 이용한 비트코인 가격 추출 파이썬 프로그래밍
4. 시계열 데이터 가시화 (2) 보고서용 파이썬 그래프 만들기
5. 파이썬 프로그래밍 time 이해 : timestamp, UTC, KST
6. 파이썬 데이터 분석! 데이터 분석을 위한 코딩언어 파이썬
7. 알아두면 좋을 컴퓨터 작동원리. 폰 노이만 아키텍처


참고자료

UPbit(2020),일(Day) 캔들

Leave a Comment