keilab

파이썬으로 엑셀 다루기(xlrd 사용법) 본문

Python

파이썬으로 엑셀 다루기(xlrd 사용법)

datapy 2018. 8. 8. 17:30
xlrd

00. 개요

파이썬을 사용하면 업무를 효율적으로 할 수 있습니다. 특히 엑셀(excel) 파일에서 단순 반복적이면서 처리량이 많은 작업을 할 때는 필수입니다. 이번 포스팅에서는 xlrd 라이브러리 사용법에 대해 알아보겠습니다. xlrd 라이브러리는 엑셀 파일을 읽을 수 있게 해주는 라이브러리입니다.

01. 설치

pip install xlrd

02. Data Table

한국프로야구 순위 데이터를 예제로 활용해 보겠습니다. (2018년 8월 5일 기준)
이 데이터를 엑셀에 붙여 넣어 kbo_rank.xlsx 이름으로 저장합니다.

Note : python 파일을 라이브러리 이름과 같은 xlrd.py로 저장하면 에러 발생


kbo_rank.xlsx

순위 팀명 경기 승률 게임차 최근10경기 연속 방문
1 두산 104 68 36 0 0.654 0 5승0무5패 2패 36-0-13 32-0-23
2 SK 103 59 43 1 0.578 8 6승0무4패 2승 31-0-18 28-1-25
3 한화 106 59 47 0 0.557 10 4승0무6패 2패 32-0-21 27-0-26
4 LG 107 53 53 1 0.500 16 2승0무8패 5패 31-1-22 22-0-31
5 넥센 109 53 56 0 0.486 17.5 5승0무5패 3승 24-0-32 29-0-24
6 삼성 107 50 54 3 0.481 18 6승1무3패 1승 24-2-25 26-1-29
7 KIA 102 48 54 0 0.471 19 5승0무5패 2승 31-0-23 17-0-31
8 롯데 103 45 56 2 0.446 21.5 6승0무4패 1패 24-0-29 21-2-27
9 KT 104 43 59 2 0.422 24 4승0무6패 4패 22-2-28 21-0-31
10 NC 107 43 63 1 0.406 26 6승1무3패 2승 23-0-32 20-1-31

03.엑셀 파일 다루기

파이썬으로 엑셀 데이터를 다루려면 가장 우선적으로 파일을 열어 작업하고자 하는 sheet에 접근해야 합니다. 그 다음 원하는 cell에 접근하거나 row, column 값을 읽어들일 수 있습니다. 단계별로 접근 하는 방법을 살펴보겠습니다.

sheet name 출력

import xlrd

wb=xlrd.open_workbook("kbo_rank.xlsx")
ws=wb.sheet_by_index(0)

print wb.sheet_names()

출력결과

>>>[u'Sheet1']

특정 Cell 값 출력

print ws.cell_value(1,1)

출력결과

>>> 두산

row, column 값 출력

print ws.col_values(1)[1]
print ws.col_values(1)[2]

print ws.row_values(0)[1]
print ws.row_values(0)[2]

출력결과

>>> 두산
>>> SK

>>> 팀명
>>> 경기

Number of row, column

nrow = ws.nrows
ncol = ws.ncols

print nrow  # 행(가로줄 수)
print ncol  # 열(세로줄 수)

출력결과

>>> 11
>>> 12

04. Example

위에서 학습한 내용을 토대로 간단한 코드를 만들어보겠습니다. 목표는 숫자(순위)를 입력받아 해당 순위에 대한 row 값들을 출력하는 것입니다.

import xlrd

wb=xlrd.open_workbook("kbo_rank.xlsx")
ws=wb.sheet_by_index(0)

ncol=ws.ncols
nrow=ws.nrows

def print_score(rank):
    for i in range(nrow):
        print ws.row_values(rank)[i+1],

rank=raw_input("순위를 입력 하세요 : ")
print_score(int(rank))

출력결과

>>>순위를 입력 하세요 : 3
한화 106.0 59.0 47.0 0.0 0.557 10.0 406232-0-21 27-0-26