본문 바로가기
무모한 도전-주식 인공지능 만들기

결과를 정리하기 위한 txt파일의 비교 분석 & 정렬

by 인터넷떠돌이 2019. 4. 29.
반응형

안녕하세요?

 

지난번 포스팅에서 어떻게 ADF 테스트만이 아니라 허스트 지수와 Half-Life 테스트까지 하였습니다만, 그 결과가 상당히 많아서, 이를 일일히 손으로 정리하기는 다소 힘들기는 힘듧니다. 물론 수작업으로 어떻게 하면 되기는 되겠습니다만, 문제는 이번 한번으로 끝나지 않고, 다음에도 여러번 이 작업을 해야 하기 때문에, 자동으로 결과를 비교 분석을 해 주고 나서, 자동으로 정렬해 주는 프로그램이 필요합니다.

 

먼저 위 스크린샷에서 볼 수 있듯이, 새로운 py파일을 생성한 다음에, Text_compare라는 클래스를 생성해 주도록 합니다. 그리고 나서 모든 txt파일로 저장된 결과가 한개의 폴더에 저장이 되어 있기 때문에 폴더의 경로를 지정해 준 다음에, 다음으로 ADF 테스트의 결과를 열도록 해 줍니다.

 

일단 리스트 형태의 자료로 열어보는데, 위 스크린샷처럼 ; 기호로 띄워지도록 만드는 데 상당히 힘든 상황이기는 했습니다. 일단 readlines()함수를 사용해야 \n에서 띄우는 것을 하는데, 이후에는 for문을 사용해서 일일히 분리하는 과정을 거쳐야만 했습니다.

 

그리고 나서 허스트 지수를 계산한 결과를 불러오기 위한 코드도 역시 for문을 3중으로 써서까지 모은 요소 하나하나를 띄워 주도록 합니다.

 

마지막으로 위 스크린샷과 같이, Half-life 테스트의결과를 열어보기 위한 코드를 작성해 주도록 합니다. 형식은 위의 다른 두 테스트의 결과와 다를 것이 없습니다.

 

 

그런데 가만히 보다보니 위 스크린샷과 같이 파이썬의 코딩에서 약간의 재주라고 해야 할까요? [var in b for var in a]라는 것으로 for문을 번거롭게 쓰고, list를 따로 생성하지 않아도 이 작업들을 한꺼번에 할 수 있도록 해주는 것이 있습니다. 그리고 이 방법을 사용해서 리스트 a와 b에 있는 요소들이 서로 일치하는 것이 있는지를 알 수 있습니다.

 

그리고 나서, 다음으로는 위 스크린샷처럼 코딩을 해서, 먼저 ADF 테스트 1% 기각값을 통과한 결과들과 허스트 지수에서 0에 가까운 값들을 모아놓은 리스트를 비교하기 위한 구문입니다.

 

그런데 유감스럽게도, 이렇게 비교를 하게 되면, 문제는 일치하는 요소가 있으면 True라고 나오고, 아니면 모두 False라고 나와서 제가 원하는 식으로 일치하는 요소-특히 주식 종목의 코드를 만들어 올 수 없습니다.

 

그래서 이번에는 위 스크린샷과 같이, var = set(리스트A) and set(리스트B) 라는 공식을 이용하도록 합니다. 이 공식이 찾아보니까, 리스트 두개에서 일치하는 요소를 골라낼 수 있다고 합니다.

 

이렇게 해서 위 스크린샷처럼 원하는 요소들-특히 주가의 종목코드만을 추려내는 데는 성공한 것을 볼 수 있는데, 문제는 데이터의 타입이 set이라고 해서 호출이라고 해야 할까요? 말 그대로 부르기(call)을 할 수 없는 형식이기 때문에, 이를 리스트의 형식으로 바꾸어 줄 필요가 있습니다.

 

그래서 위 스크린샷과 같이, 변수 = list(변수) 라는 코드를 사용해서 set라는 형식의 데이터를 모두 list의 형식으로 바꾸어 주도록 합니다.

 

이렇게 해서 리스트 형식으로 바뀌어 지는 것 까지 확인을 할 수 있는 것도 볼 수 있었습니다. 이제 2개의 리스트에서 비교분석을 하고나서 데이터 추출이 끝났기 때문에, 다음으로는 Half-Life 테스트의 결과와도 한번 비교 분석 이후, 일치하는 종목코드의 추출에 들어가 보도록 합니다.

 

그리고 다음으로는 한번 3개 연달아서 만들어서 이제 한번 비교를 하고 나서, 그 결과를 출력해 보고자 합니다. 이제 종목코드가 제대로 나오기를 기대합니다만.....

 

그런데 위 스크린샷에서 나와있는 것처럼, 어느 값인지는 모르겠습니다만, 종목코드와 상관없는 값들이 나와 버리는 것을 볼 수 있습니다. 그래서 리스트를 서로 비교하는 것은 안되겠고, 새로운 방법으로 결과를 비교 분석해야 할 필요가 있다는 생각이 듭니다.

반응형