퍼포마의 야근근절을 위한 코딩

pandas - read_excel / to_excel 함수 설명 및 활용 예시

인생은스트러글 2022. 10. 8. 12:52

[목차]

0. 여는 말

1. read_excel

2. to_excel

3. 맺는 말


0. 여는 말

 

 

지난 글에서 csv 형태의 파일을 읽거나 내보낼 수 있는 함수인 read_csv와 to_csv의 개념과 활용 예시에 대해 다뤄보았는데요 (아래 글 참조), 

 

 

pandas - read_csv / to_csv 함수 설명 및 활용 예시

[목차] 0. 여는 말 1. read_csv 2. to_csv 3. 맺는 말 0. 여는 말 지난 글에서 Pandas에 대한 간략한 소개와 향후 어떤 방향으로 글들을 쓸 것인지에 대해 얘기해 보았는데요 (아래 글 참조), pandas - 라이브러

lifeisstruggle.tistory.com

 

이번 글에서는 excel 파일 (=확장자가 xlsx인 파일)을 읽거나 내보내는 함수인 read_excelto_excel에 대해 다뤄볼 것입니다.

excel 파일은 '여러 개의 시트를 가질 수 있고, 각각마다 시트명을 가진다'는 점이 csv 파일과 구별되는 가장 큰 차이점 중 하나인데요, 

이러한 차이점이 read_excel, to_excel 함수에 어떤 영향을 주는지를 중심으로 두 함수를 소개해보려 합니다.

 

글 시작하겠습니다!

 


1. read_excel

 

- 기능: xlsx 형태의 파일을 읽어오기
- 필수 입력값: 1개 ('파일 경로를 포함한 파일명')
- 유의점: pandas 라이브러리 먼저 import하기 / 파일 경로 올바르게 입력하기 / 가져오려는 시트가 1번째 시트가 아닌 경우, 입력값에 시트명 추가하기

 

이름에서부터 알 수 있듯, 'excel 파일을 읽는' 함수입니다.

read_excel은 '파일 경로를 포함한 파일명'을 필수 input 값으로 받으며, 그 외 다양한 파라미터 값들을 추가로 설정할 수 있습니다.

 

다양하고  많은 파라미터들을 가지고 있는 read_excel 함수 (이미지 클릭 시 관련 링크로 이동 가능)

 

read_excel 함수에서는 유의할 점이 3가지 있습니다.

첫째, read_excel 함수는 pandas 라이브러리 안에 내장되어 있기 때문에 pandas 라이브러리를 먼저 불러온 후에 사용 가능하다는 점,
둘째, 파일 경로를 올바르게 입력해 주어야 한다는 점입니다.
(파일 경로 설정 시 필요한 개념인 절대경로, 상대경로에 대한 자세한 내용은 아래 글을 참고해 주세요 :) )

 

 

Python에서 파일 경로(Path) 설정할 때 알면 좋은 개념들

[목차] 0. 여는 말 1. 절대 경로 vs. 상대 경로 2. 경로에서 마침표(' . ') 개수에 따른 의미 차이 3. 맺는 말 0. 여는 말 오늘은 파이썬에서 파일 경로를 설정하는 2가지 방법, 그리고 경로 설정에서 마

lifeisstruggle.tistory.com

 

마지막으로 셋째, 시트명을 의미하는 파라미터인 sheet_name을 별도로 설정하지 않으면 기본값인 첫 번째 시트가 불러와지니, 만약 불러오려는 시트가 첫 번째 시트가 아니라면 반드시 함수 사용 시 sheet_name 파라미터에 원하는 시트의 이름을 입력값으로 넣어 주어야 한다는 점입니다.

 

pandas는 통상 'pd'로 줄여서 import하며, 함수 사용 시 pandas 안에 있는 함수임을 나타내기 위해 ". (마침표)"로 연결해서 'pd.read_excel'의 형태로 표기합니다.

이해를 돕기 위해 간단한 예시를 들어보겠습니다

 

아래와 같은 구조로 파일들이 있다고 가정해보겠습니다.

 

코드 파일과 동일한 위치에 data_excel 폴더가 있고, 그 안에 1개의 xlsx 파일이 있는 형태입니다

 

여기서 우리는 'pandas_ex01_to_read_excel.xlsx' 파일의 첫번째 시트인 'naver' 시트를 불러올 것이고, 아래와 같은 코드를 통해 불러올 수 있습니다.

 

import pandas as pd #통상 pandas를 pd로 줄여서 import합니다
df = pd.read_excel("./data_excel/pandas_ex01_to_read_excel.xlsx") #df라는 객체를 만들고, 거기에 xlsx 파일의 첫번째 시트 데이터를 불러와서 할당합니다

저희는 첫 번째 시트인 naver 시트의 데이터를 불러올 것입니다

 

위와 같이 파일을 불러올 수 있고, head 함수를 통해 제대로 불러와졌음을 확인할 수 있습니다 (head는 첫 n행 데이터를 보여주는 함수로, 추후 따로 다룰 예정입니다 :) )

 

위와 같이 불러오는 것이 가장 기본적인 형태이며,  위처럼 다른 파라미터 없이 파일명만을 입력값으로 주는 경우, 첫 번째 시트의 데이터를 가져오게 됩니다.

만약 첫 번째가 아닌 다른 시트의 데이터를 가져오고 싶다면, sheet_name이라는 파라미터에 해당 시트의 이름을 입력해 주어야 합니다.

그 예시도 같이 살펴보겠습니다.

 

이번에는 동일한 파일 내 2번째 시트의 데이터를 불러올 것입니다

 

read_excel에 'sheet_name='google'을 추가하여 실행하면, 'google' 시트의 데이터가 불러와지는 것을 확인할 수 있습니다

 


2. to_excel

 

- 기능: xlsx 형태의 파일을 읽어오기
- 필수 입력값: 1개 ('파일 경로를 포함한 파일명')
- 유의점: pandas 라이브러리 먼저 import하기 / 파일 경로 올바르게 입력하기 / 가져오려는 시트가 1번째 시트가 아닌 경우, 입력값에 시트명 추가하기

 

이 함수는 read_excel과는 반대로 데이터를 'xlsx 형태로 밖으로 내보내는' 함수입니다.

to_excel 함수 또한 read_excel과 동일하게 '파일 경로를 포함한 파일명'을 필수 input 값으로 받으며, 그 외 다양한 파라미터들을 추가로 설정할 수 있습니다.

 

다양하고 많은 파라미터들을 가지고 있는 to_excel 함수 (이미지 클릭 시 관련 링크로 이동 가능)

to_excel도 위에서 read_excel의 유의점으로 언급했던 3가지를 동일하게 가집니다. to_excel 또한 pandas 라이브러리를 먼저 불러와야 하고, 파일 경로를 올바르게 입력해 주어야 하며, 필요 시 sheet_name 파라미터에 값을 입력해 주어야 합니다.

한편, 시트명에 해당하는 sheet_name 파라미터 입력 시, 비록 파라미터 이름은 동일하지만 그 의미가 약간 다릅니다.

read_excel의 경우, 엑셀 파일 내 시트가 여러 개일 수 있기 때문에 그 중 하나를 선택하기 위해 '읽어오고자 하는 시트의 이름'을 입력하는 것이라면, to_excel은 내보내는 데이터는 항상 하나의 테이블 데이터이기 때문에 '내보내고자 하는 데이터가 들어갈 시트의 이름'을 입력하는 것이라는 차이점이 있습니다.

 

to_excel도 이해를 도울 수 있는 간단한 예시를 들어보겠습니다.

폴더 구조 및 파일을 저장할 위치는 아래와 같습니다.

 

코드 파일과 동일한 위치에 data_excel 폴더가 있고, 그 안에 빨간색 박스로 표시한 이름으로 xlsx 파일을 저장할 것입니다

 

그리고 우리는 위 경로에 아래와 같은 데이터를 내보내 저장할 것입니다.

 

위에 표시한 6개 열, 3개 행을 가진 표 데이터를 내보낼 것입니다

 

여기서 우리는 'pandas_ex01_to_write_excel.xlsx' 라는 이름으로 파일을 내보낼 것이고, 아래와 같은 코드를 통해 가능합니다.

 

import pandas as pd #통상 pandas를 pd로 줄여서 import합니다
df2.to_excel("./data_excel/pandas_ex01_to_write_excel.xlsx") #df2라는 객체에 담긴 데이터를, 해당 경로에 xlsx 파일로 내보냅니다

 

기존에는 data_excel 폴더 안에 'pandas_ex01_to_write_excel.xlsx'라는 파일은 없습니다

 

하지만 위와 같이 코드를 실행하고 나면...

 

이렇게 파일이 정상적으로 내보내진 것을 확인할 수 있습니다!

 

파일을 실행시켰을 때, 'Sheet1'이라는 이름의 시트로 정상적으로 데이터가 들어온 것까지 확인할 수 있습니다

 

위와 같이 내보내는 것이 가장 기본적인 형태이며, 경우에 따라 파라미터들을 추가하여 가공된 형태로 xlsx 파일로 내보낼 수 있습니다.

한편 위와 같이 파일을 내보낼 경우, 기본값으로 시트 이름이 'Sheet1'으로 해서 내보내집니다.

만약 시트에 특정한 이름을 부여해서 내보내고 싶다면, sheet_name 파라미터에 해당 시트의 이름을 입력해 주어야 합니다.

그 예시를 같이 살펴보겠으며, 여기서는 행번호를 나타내는 index열 (위 사진에서 '0, 1, 2'가 있는 A열)을 제외하기 위해 index 파라미터도 함께 추가해보겠습니다.

 

sheet_name 파라미터에 원하는 시트명을 입력하고, index 파라미터에 False 값을 입력해 주기만 하면...

 

이렇게 지정한 시트명으로, 그리고 인덱스 열도 없어진 채로 파일이 내보내집니다!

 


3. 맺는 말

 

 

pandas에는 그 외에도 json, html, xml 등 다양한 형태의 데이터들을 읽고 내보낼 수 있는 다양한 IO 함수들을 가지고 있습니다.

 

이렇게나 다양한 형태의 데이터를 지원합니다! (이건 일부이고, 전체를 보고 싶으시다면 사진을 클릭하여 해당 링크로 이동 가능합니다)

 

저희는 이번에 그 중 하나인 xlsx에 대해 다뤄보았던 것이었습니다.

(xlsx 외에도 많이 다루는 파일 형태는 csv가 있으며, 관련 내용은 아래 글을 참고해 주세요 :) )

 

 

pandas - read_csv / to_csv 함수 설명 및 활용 예시

[목차] 0. 여는 말 1. read_csv 2. to_csv 3. 맺는 말 0. 여는 말 지난 글에서 Pandas에 대한 간략한 소개와 향후 어떤 방향으로 글들을 쓸 것인지에 대해 얘기해 보았는데요 (아래 글 참조), pandas - 라이브러

lifeisstruggle.tistory.com

 

지금까지 특정한 확장자의 파일을 읽어오거나 내보내는 함수에 대해 다뤄보았습니다.

다음 글에서는 이렇게 읽어오거나 내보낸 데이터가 어떻게 생겼는지 (ex. 어떤 열들을 가지고 있고, 어떤 데이터들을 가지고 있는지)를 간략하게 살펴볼 수 있는 head / tail 함수에 대해 다뤄보겠습니다.

 

그러면 오늘 글은 여기서 마치겠습니다.

읽으시면서 이해가 어려운 부분들은, 댓글로 문의 주시면 성심껏 답변드리겠습니다 :)

 

오늘도 긴 글 읽으시느라 고생 많으셨습니다!

 

우리들의 스트러글(struggle)하는 현생, 화이팅입니다!
반응형