시계열 데이터 가시화 (3) 파이썬 날짜변환, pandas를 이용한 그래프 그리기

시계열 데이터 가시화 (3) 파이썬 날짜변환, pandas를 이용한 그래프 그리기

시계열 데이터 분석에 가장 효과적인 방법은 데이터를 시각화하여 눈으로 보는 것입니다. 데이터 가시화라는 용어로도 많이 사용됩니다. 이 포스팅에서는 파이썬 날짜 변환과 pandas DataFrame을 이용한 데이터 가시화 방법을 알아보겠습니다. 업비트 API를 이용하여 시계열 데이터를 가져오고, 전처리 후 보고서용 그래프를 만드는 방법까지 확인해 보시기 바랍니다.

글의 순서

업비트 API를 이용한 시계열 데이터 수집과정 : 코인 가격
업비트 API로 받아온 날짜 데이터
pandas 데이터프레임과 matplotlib을 이용한 그래프 작성


업비트 API를 이용한 시계열 데이터 수집과정 : 코인 가격

여러 차례의 포스팅을 통해 업비트 API로 데이터를 가져온 후 전처리하고, 가시화하는 방법을 알아보았습니다. 대체로 아래의 시계열 데이터 수집 과정을 거칩니다.

(1) 업비트 API 분석하기
(2) 업비트 API를 포함하는 파이썬 함수 만들기
(3) 업비트 API로 가져온 데이터 확인
(4) UPbit API로 가져온 데이터 전처리
(5) pandas DataFrame을 이용한 전처리 결과 확인
지금까지는 시계열 데이터 수집과 전처리 방법 자체에 집중하느라 사용하는 데이터의 양이 적었습니다. 이번 포스팅에서는 데이터 양을 늘려보겠습니다.



업비트 API로 받아온 날짜 데이터

업비트 API로 받아온 날짜 데이터는 ‘2022-06-17T09:00:00’라는 문자열입니다. 업비트 시계열 데이터 가시화를 위한 전처리라는 포스팅에서 파이썬의 split이라는 함수를 써서 ‘T’를 기준으로 문자열을 나누는 방법을 썼었는데요. 이렇게 문자열을 분리한 후에 파이썬 날짜 변환 패키지인 datetime을 사용하여, 문자열 데이터를 날짜 데이터로 변환할 수 있습니다.

datetime 패키지에는 날짜와 시각을 함께 저장하는 datetime 클래스, 날짜만 저장하는 date 클래스, 시간만 저장하는 time 클래스, 그리고 시간 간격을 다루는 timedelta 클래스 등이 있습니다. 각각 datetime.datetime, datetime.date, datetime.time 과 같이 사용합니다.

(1) 문자열 데이터를 날짜 데이터로 만드는 연습 : 파이썬 날짜 변환 패키지 이용

날짜변환01 코드는 파이썬 날짜 변환 패키지를 이용하여 그래프에서 사용하기 좋은 날짜 데이터로 만듭니다. 업비트 API로 가져온 데이터에서 ‘T’를 제거한 후 날짜를 가져와서 변수 yyyy_mm_dd에 담아 두었다가, strptime 함수를 이용하여 날짜+시각 데이터인 date_time에 저장합니다. ‘%Y-%m-%d’라는 형식을 썼는데, 2022-06-18 00:00:00을 출력합니다. 00:00:00이라는 시각이 붙지만. date()라는 클래스를 이용하면 시각을 없애고 날짜만 남길 수 있습니다. 날짜변환01 코드에서는 문자열 데이터를 날짜 데이터로 바꾸는 과정에서 type() 함수를 써서 자료형을 확인할 수 있도록 하였습니다. 문자열 데이터인 경우 type은 str, 날짜 데이터인 경우 type은 datetime.datetime입니다.

참고로 strptime 함수에 대응되는 함수가 strftime입니다. strftime은 날짜+시각 데이터를 문자열 데이터로 바꿔줍니다.

코드를 간결하게하고 사용하기 편하게 하기 위해 위 코드를 ‘날짜변환02’처럼 함수로 만들었습니다. 결과는 날짜변환01 코드와 똑같습니다.

(2) 날짜 리스트 생성 연습 : 파이썬 날짜 변환 패키지 이용

이 포스팅에서 시계열 데이터를 처리하기 위해 쓰고 있는 방법이 업비트 API로 받아온 문자열 데이터를 날짜+시각 데이터로 바꾼 후 리스트로 저장하는 것입니다. 일단 우리가 사용하고 있는 업비트 API를 다시 살펴보겠습니다. 아래의 API에서 market과, count를 바꾸면 코인 종류와 가격을 가져올 기간이 바뀝니다. 만약 count에 50을 넘겨주면, 50일치 가격을 가져올 수 있습니다.

https://api.upbit.com/v1/candles/days?market=KRW-BTC&count=2

업비트 API에서 날짜별로 코인 가격을 받아오기 위해 넘겨주는 인자는 날짜 개수였습니다. 여기서는 코딩의 편의를 위해 날짜 개수를 기간으로 변환할 예정이며, 이 작업에 유용한 파이썬 패키지가 datetime입니다. datetime 패키지 안에는 timedelta라는 클래스가 있습니다. timedelta는 두 날짜 혹은 시간 간의 간격으로 해결할 수 있는 일을 처리해줍니다. 예를 들어 시작 날짜와 종료 날짜를 주면, 그 사이를 날짜를 모두 구할 수 있습니다. 날짜변환03 코드는 timedelta로 날짜 리스트를 만듭니다.

날짜변환03 코드의 핵심부분은 아래의 한 줄입니다. dates = [ ] 로부터 dates는 리스트 형태라는 것을 알 수 있습니다. dates라는 리스트는 stt + timedelta(days=i)를 통해 만들어집니다. stt가 시작일이니까 시작날짜부터 하루씩 증가시켜가며 리스트를 채우게 됩니다. timedelta(days=i)는 timedelta에 days라는 인자를 넘겨주는데, days는 date_gen이라는 함수에 인자로 넘겨준 0, 1, 2 등의 숫자가 입력됩니다. 이 한 줄이 어떻게 작동하는지를 알기 위해서 #4-1, 2, 3 과 같이 출력결과를 확인할 수 있도록 하였습니다.

dates = [(stt + timedelta(days=i)) for i in range((end-stt).days+1)]

이 날짜 리스트를 pandas.DataFrame으로 통합시킬 예정입니다. pandas를 사용하면 간결하면서도 보기 좋은 형태가 되기 때문입니다.


pandas 데이터프레임과 matplotlib을 이용한 그래프 작성

업비트 API로 받아온 시계열 데이터 가시화를 위해 데이터 전처리해야할 것들을 정리하다보니 과정이 상당히 길어졌습니다. 이제는 업비트 API로 받아온 비트코인, 이더리움 가격이라는 시계열 데이터로 그래프를 그려보겠습니다. 데이터 전처리가 끝났다면 pandas.DataFrame과 matplotlib을 이용해서 그래프를 쉽게 그려볼 수 있습니다.

시계열 데이터 가시화01 코드에 업비트 API를 이용한 시계열 데이터 수집과정부터 그래프를 그리는 것까지를 모두 나타내었습니다. 코드를 실행시키면 전처리 결과를 pandas 형식으로 확인할 수 있고, 그래프를 통해 2022년 6월 동안의 시계열 데이터 변화를 확인할 수 있습니다. df.head(5)의 head(5)는 pandas.DataFrame으로 저장된 결과 중 맨처음 5개의 행만 보여줘라라는 의미입니다. 맨 마지막도 확인할 수 있는데, 이때는 tail(5)처럼 tail을 사용합니다. 그래프의 경우, 6월1일부터 5일까지의 구간을 ‘시계열 데이터 가시화 (2) 보고서용 파이썬 그래프 만들기’라는 포스팅에서 만든 그래프와 비교해 보시기 바랍니다.


마치며 …

시계열 데이터 분석에 가장 효과적인 방법은 데이터 가시화입니다. 시계열 데이터로는 업비트 API를 이용하여 가져온 실제 코인 가격을 선정하였습니다. 데이터를 받아오는 과정부터 우리가 보고 싶은 대로 가공하는 데이터 전처리를 거쳐 pandas와 matplotlib로 가시화 해보았습니다.

이 포스팅에서 소개한 파이썬 날짜변환 패키지로 날짜 데이터를 만드는 방법과 pandas DataFrame 데이터로부터 그래프를 그리는 방법이 시계열 데이터 처리에 유용하게 쓰일 수 있을 것이라 기대합니다. 다음 포스팅에서는 보고서용 그래프를 만드는 방법에 대해 다시 정리해보겠습니다.

 

 

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


참고자료

[1] UPbit(2020),일(Day) 캔들
[2] DelftStack (2021),datetime – 기본 날짜와 시간 형

Leave a Comment