파이썬을 활용한 엑셀 셀 영역 다루기2
지난 포스팅에 이어서
파이썬을 활용해서 엑셀 셀 영역을
처리하는 방법에 대해서
알아보겠습니다.
우선, 엑셀 파일 하나를
간단히 생성하겠습니다.
import openpyxl as xls
from random import *
wb = xls.Workbook()
ws = wb.active
# 데이터 입력하기
ws.append(["학번", "국어", "영어", "수학"])
for i in range(1, 10 + 1):
ws.append([i, randint(1, 100), randint(1, 100), randint(1, 100)])
wb.save("C:/RPA/begin.xlsx")
wb.close()
엑셀 데이터 전체 열 가져오기
엑셀에 있는 데이터 전체 열을
가져오는 방법은 rows 함수를 이용하면 됩니다.
print(ws.rows)
어떤 정보가 생성되긴 했는데,
잘 모르겠네요.
위의 코드에 tuple 함수를
적용하겠습니다.
print(tuple(ws.rows))
데이터가 들어있는
셀 주소의 정보가 튜플 형식으로
저장되어 있고,
순서는 열 단위로 생성되었습니다.
엑셀 데이터 전체 칼럼 가져오기
rows 함수와 동일하게
columns 함수를 사용하면
칼럼 기준으로 데이터를
가져올 수 있습니다.
print(ws.columns)
동일하게 이상한 정보가 보이네요.
tuple 함수를 적용해 보겠습니다.
print(tuple(ws.columns))
역시 마찬가지로 데이터가 들어있는
셀의 주소를 가져오고 있는데요.
이번에는 칼럼 단위로
가져오고 있는 걸 확인할 수 있습니다.
특정 칼럼의 정보만 가져오기
1. rows 함수 활용
이중 튜플의 형식으로 되어 있는 정보를
요소별로 가져와서 출력해보겠습니다.
for row in ws.rows:
print(row)
그럼 B칼럼에 있는 데이터 만을 가져와서
출력해보겠습니다.
for row in ws.rows:
print(row[1].value, end = " ") # B칼럼에 있는 데이터 가져오기
2. iter_rows() 함수 활용
pandas의 iterrows() 함수와 유사한
iter_rows() 함수를 사용할 수 있습니다.
이 함수는 데이터를 1개의 열씩 가져와서
작업을 할 수 있게 도와주는 함수입니다.
for row in ws.iter_rows():
print(row)
rows()함수와 동일하게
B칼럼의 값만을 가져와서
출력해보겠습니다.
for row in ws.iter_rows():
print(row[1].value, end = " ")
결과는 동일하게 나옵니다.
iter_rows() 함수와 장점 중 하나는
인수로 지정된 특정영역에 대해서
열 단위 분석 작업을
할 수 있다는 것입니다.
2.1. 특정영역 지정하여 작업하기
iter_rows() 함수의 인수는 크게
min_row, max_row, min_col, max_col
입니다.
여기서는 min_row, max_row에 대해서
알아보겠습니다.
말 그대로 최소 행과 최대 행을
지정해 주는 옵션입니다.
# 3번째 열과 4번째 열의 B칼럼 출력하기
for row in ws.iter_rows(min_row = 3, max_row = 4):
print(row[1].value, end = " ")
특정 열의 데이터만 가져오기
1. columns 함수 활용
이중튜플의 요소별 튜플 값을 확인해보겠습니다.
for column in ws.columns:
print(column)
그럼 이제 3번째 학생의
성적만을 가져와서 출력해보겠습니다.
for column in ws.columns:
print(column[3].value, end = " ")
2. iter_cols() 함수 활용
pandas의 iteritems() 함수와 유사한
iter_cols() 함수를 사용할 수 있습니다.
이 함수는 데이터를 1개의 컬럼씩 가져와서
작업을 할 수 있게 도와주는 함수입니다.
for column in ws.iter_cols():
print(column)
columns함수와 동일하게
3번째 학생의 값만을 가져와서
출력해보겠습니다.
for column in ws.iter_cols():
print(column[3].value, end = " ")
결과는 동일하게 나옵니다.
iter_cols() 함수와 장점 중 하나는
인수로 지정된 특정영역에 대해서
칼럼 단위 분석 작업을
할 수 있다는 것입니다.
2.1. 특정 영역 지정하여 작업하기
iter_cols() 함수의 인수는 크게
min_row, max_row, min_col, max_col
입니다.
여기서는 min_col, max_row에 대해서
알아보겠습니다.
말 그대로 반복하기 위한
최소 칼럼과 최대 칼럼을
지정해 주는 옵션입니다.
# 3번째 학생에 대해서 3번째 칼럼과 4번째 칼럼 값 출력하기
for column in ws.iter_cols(min_col = 3, max_col = 4):
print(column[3].value, end = " ")