Python pandas excel .xlsx .csv 불러오기 저장

2022. 10. 11. 07:56Python/pandas

python에서도 엑셀 파일을 활용 할 수 있지만 pandas를 활용한다면 더쉽게 사용할 수 있다.

우선 pandas를 import 해주고 시작하는데 colab환경이 아니거나 이전에 활용한 적이 없다면 

'xlrd' 와 'openpyxl' 을 먼저 설치하고 진행하도록 하자. 

>>> import pandas as pd

1. csv 읽기(불러오기)

>>> data = pd.read_csv('file path+filename')

csv파일을 읽어오는 것은 간단하다. 변수(data)를 선언하여 read_csv로 파일의 경로를 입력해 주면 끝이다.

여기에서 보충하자면 로컬환경일 때 inpy나 py파일과 같이 있을 경우 file name만 기재해도 불러올 수 있으나,

다른 폴더에 있을 때는 file path를 기재해 주어야 한다.

colab의 경우에는 drive mount를 통하여 파일 경로를 입력해 주어야한다.

 

그리고 read_csv에는 다양한 조건들을 붙일 수 있으나 너무 많으니 아래를 참고하기 바란다.

https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html

 

pandas.read_csv — pandas 1.5.0 documentation

Delimiter to use. If sep is None, the C engine cannot automatically detect the separator, but the Python parsing engine can, meaning the latter will be used and automatically detect the separator by Python’s builtin sniffer tool, csv.Sniffer. In addition

pandas.pydata.org

또한 encoding문제로 에러가 뜨는경우도 존재하는데 이또한 경우가 너무 많아 한 번에 다루기 보다는 따로 다루어 보도록 겠다

 

2. csv 저장하기

>>>data.to_csv('file name', encoding='utf-8')

일반적으로 저장하면 깨지는 경우가 있어 추후 파이썬으로 활용할 생각이라면 encoding='utf-8'로 저장해준다.

원하는 특정 경로가 있다면 file name을 기재할 때  경로까지 함께 'file path/file name' 기재해준다.

 

3. xlsx 읽기(불러오기)

>>> data = pd.read_excel('file path+file name', engine='openpyxl') 

xlsx파일의 경우 그냥 pd.read_excel을 활용한다면 'XLRDError : Excel xlsx file; not supported'를 만날 수 있다.

xlrd 2.0 이상에서는 보안상의 이유로 xlsx파일에 대한 지원을 멈추었기 때문이다.

그렇기 때문에 앞서 말했듯 xlrd와 openpyxl을 설치하고 read_excel을 작성할 때 engine='openpyxl' 을 꼭 넣어주어야 한다.

 

그리고 그외의 다양한 인자값들을 csv와 마찬가지로 아래 링크를 참고하자.

https://pandas.pydata.org/docs/reference/api/pandas.read_excel.html

 

pandas.read_excel — pandas 1.5.0 documentation

Additional strings to recognize as NA/NaN. If dict passed, specific per-column NA values. By default the following values are interpreted as NaN: ‘’, ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’, ‘-NaN’, ‘-nan’, ‘1.#IN

pandas.pydata.org

 

4.xlsx저장하기

>>>data.to_excel('file name')

이제 저장하기이다. 다행이 여기서는 encoding을 신경 쓸 필요가 없이 그냥 저장하면 된다. 이렇게 되면 끝!