Python/openpyxl

파이썬을 활용한 엑셀 셀 영역 다루기2

찐남 2022. 7. 11. 00:20

지난 포스팅에 이어서

파이썬을 활용해서 엑셀 셀 영역을

처리하는 방법에 대해서

알아보겠습니다.

 

 

 

파이썬을 활용한 엑셀 셀 영역 다루기1

이번 포스팅에서는 파이썬을 활용해서 엑셀의 셀 영역을 다루는 방법에 대해서 알아보겠습니다. 우선, 간단한 엑셀 데이터를 생성하겠습니다. 예제 데이터 생성하기 10명의 학생에 대한 국어,

zzinnam.tistory.com

 

 

우선, 엑셀 파일 하나를 

간단히 생성하겠습니다.

 

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 = " ")

 

 

반응형