본문 바로가기
파이썬으로 종목 스크리너 만들기

뇌동매매 금지 - 6. 스크리닝 결과를 엑셀로 저장할 메소드 만들기

by 유티끌 2022. 9. 12.

본격적인 스크리닝 조건필터들을 만들기 전에, 해당 필터들을 잘 저장할 수 있는 엑셀 모듈을 추가해봅니다.


스크리닝 조건 필터로 걸러진 데이터들을 저장할 모듈 만들기

저는 이전 포스트에서 결과물을 엑셀파일로 저장해서 확인하기 위해 export_to_excel.py 라는 파일을 만들고 내부에 ExportToData 라는 클래스를 정의하고, export_to_excel 이라는 메소드를 생성해보았습니다.

import array
import pandas as pd


class ExportToData:
    def __init__(self):
        self.pandas = pd

    def export_to_excel(self, file_path, file):
        print("Exporting result to excel file.....")
        writer = self.pandas.ExcelWriter(file_path, engine='openpyxl')
        file.to_excel(writer, sheet_name="test")

        writer.save()

이번에 생성할 것은, 여러개의 데이터들을 각각 하나의 엑셀 시트로 보존하고, 하나의 엑셀파일로 저장하는 모듈을 만들어 보겠습니다.

여러 시트를 가지는 하나의 엑셀파일

사실 방법은 아주 간단합니다.

    def export_to_excel_with_many_sheets(self, file_path, files: array):
        # 진행상황 확인용 프린트문
        print("Exporting result to excel file.....")

        # 파일 생성용 객체 생성
        writer = self.pandas.ExcelWriter(file_path, engine='openpyxl')

        for sheet_name, file in files:
            file.to_excel(writer, sheet_name=sheet_name)

        writer.save()

저장용 경로와, 저장할 데이터들이 들어있는 배열을 파라미터로 받습니다.

        for sheet_name, file in files:
            file.to_excel(writer, sheet_name=sheet_name)

저장할 데이터들이 들어있는 배열을 반복문으로 돌리는데, 이 배열 안의 데이터는 튜플 형식으로 구성할 것입니다. 형태는 아래와 같게 구성할 것 입니다.

("SHEET_NAME", Dataframe)

튜플 0번째자리는 시트의 이름으로 쓸 문자열이 들어있을 것이고, 1번째 자리에는 해당 시트에 기재될 데이터들이 들어있을 것입니다.
파이썬은 반복문에서 해당 데이터의 개수만큼 변수를 선언해서 꺼내어 쓸 수 있습니다.
(튜플에 데이터 2개가 들어있으니, 변수 2개를 선언해서 바로 사용할 수 있음)

반복문이 다 돌아 시트로 생성할 데이터들을 모두 저장했으면, 저장합니다.

writer.save()

import array
import pandas as pd


class ExportToData:
    def __init__(self):
        self.pandas = pd

    def export_to_excel(self, file_path, file):
        # 진행상황 확인용 프린트문
        print("Exporting result to excel file.....")
        writer = self.pandas.ExcelWriter(file_path, engine='openpyxl')
        file.to_excel(writer, sheet_name="test")

        writer.save()

    def export_to_excel_with_many_sheets(self, file_path, files: array):
    # 진행상황 확인용 프린트문
        print("Exporting result to excel file.....")
        writer = self.pandas.ExcelWriter(file_path, engine='openpyxl')

        for sheet_name, file in files:
            file.to_excel(writer, sheet_name=sheet_name)

        writer.save()

다음 포스트에서 스크리닝을 위한 조건 필터를 만들어봅니다.

반응형

댓글