블로그 이미지
shadowchaser
이곳 저곳 이것 저것

calendar

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

Notice

주식 차트 만들 때 필수로 쓰이는 기술에 대해 논하고자 한다.

차트를 만들때 datetime을 index로 처리를 해줘야할 때가 있다.

종종 시간과 날짜 정보는 별도의 열에 있을뿐만 아니라 실제 색인이 되기도 한다.

그럴 때를 위하여 index로 처리를 해줘야할 필요가 있다.


이번 강의에서는 서로 서로 다르게 모여진 자료들을 모으고 모아서 하나의 DataFrame으로 구성해보는 시간을 갖겠다.


백문이 불여일견

우선 아래와 같이 작업을 해보자.

지금까지 배워왔던 library들이 지속적으로 쓰일 것이니, 항상 붙여주도록하자.


datetime함수

Python의 datetime 함수는 정말 굉장히 쓰기 용이하다.

대략적인 스트링을 내가 작성한다음에 이렇게 시간을 구성해줘~ 라고 외치면 알아서 시간化 해준다.

아래와 같이 년, 월, 일, 시간, 분, 초를 작성해봤다.



년, 월, 일 세가지만 작성해도 정상적으로 작동한다.

정상적으로 보이는지 확인해보자.

datetime.datetime의 형태로 보여지는 것을 확인할 수 있다.


또 우리가 바랬던 것 처럼, 시간, 분, 초까지 작성하니 그 내용도 제대로 보이는 것이 보인다.


아울러 등록한 이후엔, 내가 원하는 시간을 뽑아서 사용할 수 있는 것도 확인할 수 있다. (my_date_time.day는 일자를 뜻하는 것이겠지..)


본격적으로 시간을 만들어보자.

헷갈리지 않게 최소한의 내용으로 Data Frame를 구성해보자.
2*2를 테이블을 작성하려면, 최소한 3가지 type의 요소가 필요하다.
index와 column과 data

index 및 Data 만들기

first_two라는 날자를 만들어보자. 2016년 1월 1일, 2016년 1월 2일의 날짜를 등록해보았다.
간단하다. 그냥 배열로서 [ ] 집어 넣으니, list라고 리턴하는 것을 확인할 수 있다.


DatetimeIndex함수

그리고서는 pd.DatetimeIndex함수를 넣으면! dt_ind라는 index를 가진 python만의 특별한 index로 변하게 된다.
잠시후에 보겠지만, 이 함수를 통해 python은 각 index의 값에서 최대값, 최소값등을 관리하게 된다.

그리고 data에는 random한 값을 2x2배열에 값을 넣어주도록 했다. np.random.randn 함수를 써서 표준화된 수를 생성해보았다.

column 만들기

그냥 cols라고 해서 a, b를 넣어보았다. 설마 잃어버린 건아니겠지... 


합산하여 Data Frame으로 만들기

자 지금까지 작성된 데이터(data, dt_ind, cols)를 바탕으로 datFrame을 만들어보자. 정말 단순하다.
df = pd.DataFrame(data,dt_ind,cols)

그리고 df를 찍어보면 값이 정상적으로 찍히는 것을 확인할 수 있다.


DataFrame에 datetimeindex가 된이상

type(df.index)를 찍어보니, datetimes,DatetimeIndex라는 속성을 갖고 있다.

아까전에 말했던 것처럼, pandas.core.indexes.datetimes.DatetimeIndex은 다양한 내용을 제공해준다.

argmax(), max(), argmin(), min()등.. 정말 다양한 값을 제공해준다.



자 여기까지 DataFrame을 작성하는 내용을 만들어보았다.


내일, 아니면 모레.. 시간이 난다면 Time Resampling에 대한 강좌를 작성해보겠다.

Time Resampling은 정말 꿀정보다.! 매일갖고 있는 데이터를 month단위로, year단위로 데이터를 변경하여 작성하는 것이니 말이다.


암튼 많은 기대 해주시고~ 궁금한 내용 있으면 댓글 부탁부탁드려요~


posted by shadowchaser