반응형
반응형

오늘은 파이썬(python)을 사용해서 엑셀파일을 사용해보겠습니다.

엑셀 파일은 다양한 정보를 순차적으로 정리할 수 있어 빅데이터 활용에 좋습니다.

엑셀 파일을 그냥 활용하기는 지루하니까 오늘은 로드 회차를 정리해보겠습니다.

파이썬(python)에서 엑셀 파일을 사용하기 위해서는 pandas, xlrd 패키지를 설치해야 합니다.

pip 명령어를 사용해서 2개 패키지를 모두 인스톨해주세요.

import pandas as pd
import xlrd

설치 후 import를 사용하면 오류가 발생합니다.

xlrd 패키지도 설치하라고 합니다.

pip 기능을 사용해서 xlrd를 설치하면 아래 오류가 다시 발생합니다.

파이참을 사용할 경우 pip 명령어로 패키지를 설치해도 다시 파이참에서 설정이 필요합니다.

세팅에서 설치된 항목을 확인할 수 있습니다.

"File" -> "Settings" -> "project" 메뉴에서 패키지를 재 설치할 수 있습니다.

오류 발생 시 필요한 패키지를 계속 설치하면 import가 정상적으로 동작합니다.

그럼 이젠 로또 정보가 저장된 엑셀파일을 다운로드해야 합니다.

https://www.dhlottery.co.kr/gameResult.do?method=byWin&wiselog=C_A_1_2 

 

로또6/45 - 회차별 당첨번호

967회 당첨결과 (2021년 06월 12일 추첨) 당첨번호 1 6 13 37 38 40 967회 순위별 등위별 총 당첨금액, 당첨게임 수, 1게임당 당첨금액, 당첨기준, 비고 안내 순위 등위별 총 당첨금액 당첨게임 수 1게임당

www.dhlottery.co.kr

사이트로 이동해서 하단에 있는 "엑셀다운로드" 버튼을 클릭하면 엑셀파일을 다운로드할 수 있습니다.

먼저 엑셀 파일을 로드해보겠습니다.

Location = "D:/"
FileName = "excel.xlsx"
data_pd = pd.read_excel("d:\excel.xlsx",header=None, index_col=None, names=None)

pd.read_excel 함수를 사용해서 파일을 로드합니다.

data_pd에 배열로 엑셀 정보가 저장됩니다.

엑셀 파일을 확인하면 추출하기 위한 당첨번호가 맨 뒤쪽에 있는 것을 확인할 수 있습니다.

이번에는 전체 배열에서 당첨번호만 배열에 저장하겠습니다.

RowShift = 3
NumberCount = len(data_pd[13]) - RowShift
numbers = [data_pd[13], data_pd[14], data_pd[15], data_pd[16], data_pd[17], data_pd[18], data_pd[19]]

 엑셀파일 인덱스 단위로 배열이 저장되기 때문에 RowShift를 사용해서 이동이 필요합니다.

data_pd에 저장된 보너스 번호까지 총 7개를 numbers에 저장합니다.

revNumbers = []
    for i in range(7):
       rows = []
       for j in range(NumberCount):
           j += RowShift
           rows.append(int(numbers[i][j]))
       revNumbers.append(list(reversed(rows)))
       print(revNumbers)

for 문을 사용해서 엑셀파일 정보를 revNumbers에 저장합니다.

그런데 문제가 있습니다.

엑셀파일은 로또 회차가 아래쪽부터입니다.

그럼 로드된 번호 순서를 reversed를 사용해서 반대로 변경합니다.

list로 변경 후 다시 배열에 저장하면 1회 차부터 확인이 가능합니다.

엑셀 파일 회차가 아래쪽부터 시작이기 때문에 조금 번거로운 작업이 필요합니다.

이젠 저장된 revNumbers 배열을 사용해서 전체 로또 회차 정보를 출력해보겠습니다.

  for i in range(len(revNumbers[0])):
        line = ""
        for j in range(len(revNumbers)):
            line += str(revNumbers[j][i]) + ","
        print(str(i + 1) + "회차:" + line )

revNumbers에 저장된 정보는 배열 형태로 저장되어 있기 때문에 이중 배열 출력을 사용했습니다.

처음 전체 배열을 확인하면서 저장된 7개 번호를 재확인하는 구조입니다.

출력하면 1 ~ 최종 회차까지 확인이 가능합니다.

Location = "D:/"
    FileName = "excel.xlsx"
    data_pd = pd.read_excel("d:\excel.xlsx",
                            header=None, index_col=None, names=None)
    RowShift = 3
    NumberCount = len(data_pd[13]) - RowShift
    numbers = [data_pd[13], data_pd[14], data_pd[15], data_pd[16], data_pd[17], data_pd[18], data_pd[19]]

    revNumbers = []
    for i in range(7):
       rows = []
       for j in range(NumberCount):
           j += RowShift
           rows.append(int(numbers[i][j]))
       revNumbers.append(list(reversed(rows)))
       print(revNumbers)

    #회차별 출력
    for i in range(len(revNumbers[0])):
        line = ""
        for j in range(len(revNumbers)):
            line += str(revNumbers[j][i]) + ","
        print(str(i + 1) + "회차:" + line )

파이썬(python)은 엑셀파일을 정말 쉽게 접근할 수 있어 대량 엑셀 정보를 쉽게 변경 가능합니다.

다른 언어에서는 엑셀파일을 직접 접근할 수 없어 별도 파일로 변경 후 사용하는데

파이썬(python)은 패키지를 사용해서 직접 접근하기 때문에 세팅만 잘되어 있다면 빠른 분석이 가능합니다.

배열 사용은 모든 언어에 기본이기 때문에 꼭 공부해주세요.

감사합니다.

반응형

+ Recent posts