-
Pandas DataFrame csv파일 엑셀파일 불러오기 읽기, utf-8 에러 해결법▶파공's 취미 생활/▷파이썬 공부 2021. 7. 20. 21:58
안녕하세요
파이어(F.I.R.E.)를 꿈꾸는 공룡
'파공' 입니다.
오늘은 Pandas 판다스 라이브러리를 이용해서 csv 파일이나 엑셀 파일을 파이썬으로 불러와 데이터프레임으로 읽는 법을 말씀드리겠습니다.
csv 파일이나 엑셀 파일처럼 로컬 파일을 파이썬으로 불러올 때에는 불러오고자 하는 파일의 위치에 따라서 방법이 약간 달라집니다. 따라서 csv파일이나 엑셀 파일의 위치에 따라 경우를 나누어 생각해보겠습니다.
1. 주피터 노트북 파일과 읽어오려는 data 파일이 같은 폴더에 있을때!
<코드>
import pandas as pd#파이썬파일(혹은 주피터노트북파일)과 읽어오려는 DATA파일이 같은 폴더에 있을 때는#아래처럼 파일명과 파일 형식만 적어주면 됩니다.sample_csv = pd.read_csv('Sample.csv')samplecs <실행화면>
csv 파일을 읽어올때는 .read_csv()메서드를 사용하시면 됩니다.
하지만, csv 파일에 한글이 들어가 있으신 분들을 위 코드처럼 csv 파일을 읽어오시면
" UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc0 in position 0: invalid start byte "
라는 에러가 발생 할 것입니다. (그런데 간혹! 위 코드 처럼 그냥 불러와도 에러 없이 잘 읽어지는 경우도 있더라구요....)
한글이 포함된 csv 파일을 에러없이 읽어오려면 encoding 파라미터에 'cp949' 값을 넣어주서야 합니다.
<코드>
sample_csv = pd.read_csv('Sample.csv', encoding='cp949')sample_csvcs <실행화면>
이번에는 csv 파일 속의 한글까지 잘 읽어왔습니다. csv 파일을 읽어오면 DataFrame으로 변수에 저장되게 됩니다. 위에서 csv파일 데이터가 저장된 sample_csv 변수의 데이터타입을 확인해보고, DataFrame 처럼 '이름'컬럼만 호출해 보겠습니다.
<코드>
print(type(sample_csv)) #csv 파일을 읽어오면 Data Frame으로 변수에 저장됨sample_csv['이름'] #특정 컬럼 호출하기cs <실행화면>
sample_csv 라는 변수가 DataFrame이라는 것을 확인할 수 있고, 따라서 기존의 Dataframe 처럼 특정컬럼 호출도 자연스럽게 가능하다는 것을 확인할 수 있었습니다.
이번에는 엑셀파일을 읽어오겠습니다. csv 파일과 방법은 동일하지만, 메서드 이름이 살짝 다릅니다. 엑셀 파일을 읽어올 때는 .read_excel()메서드를 사용하시면 됩니다.
<코드>
#이번엔 엑셀 파일 열어보기 (같은 폴더에 있을 때)sample_excel = pd.read_excel('Sample.xlsx')sample_excelcs <실행화면>
엑셀파일을 읽어올때는 한글이 포함되어있어도, encoding 파라미터에 별도로 값을 지정해주지 않아도 잘 읽어오더라구요. 이번에도 역시 sample_excel 이라는 변수의 데이터 타입을 확인해보고, DataFrame 처럼 '성별'컬럼을 호출해보겠습니다.
<코드>
print(type(sample_excel))sample_excel['성별']cs <실행화면>
이번에도 역시 sample_excel 이라는 변수가 DataFrame이라는 것을 확인할 수 있고, 그래서 특정 컬럼 호출도 DataFrame에서 하는 것과 동일한 방법으로 가능하다는 것을 확인했습니다.
2. 읽어오려는 data 파일이 코드 파일보다 하위폴더에 있을 때!
읽어오려는 data 파일과 코드파일(주피터노트북파일)보다 하위 폴더에 있다는 이야기는 아래와 같은 상황을 말합니다.
이럴 때에는 .read_csv()메서의 안의 파일명을 파일경로와 함께 적어줘야 합니다.
<코드>
sample_csv_2 = pd.read_csv('./Sample_data/Sample_2.csv', encoding='cp949')sample_csv_2cs <실행화면>
. 은 코드파일이 있는 폴더를 의미합니다. 그 다음에 data파일이 들어있는 폴더명 Sample_data를 적어주시고, 마지막엔 파일명을 파일형식까지 적어주시면 됩니다. 이번에도 한글이 포함된 csv 파일이니까 enocding='cp949' 꼭 적어주시구요!
엑셀파일도 csv파일과 마찬가지로 읽어오시면 됩니다.
<코드>
sample_excel_2 = pd.read_excel('./Sample_data/Sample_2.xlsx')sample_excel_2cs <실행화면>
3. 읽어오려는 data 파일이 완전 다른 폴더 위치에 있을 때!
마지막으로 data 파일이 코드 파일의 하위폴더가 아니라 완전히 다른 경로에 있는 경우 입니다.
이럴 때에는 data파일의 경로를 최상위부터 적어주시면 됩니다.
예를 들어 data 파일이 아래와 같은 폴더에 있는 경우를 생각해보겠습니다.
이제 이 파일들을 파이썬에서 읽어와 보겠습니다.
<코드>
#파일의 경로를 처음부터 찾아가면 됩니다.#아래처럼 파일경로를 다 적어주고, 파일명과 파일형식까지 적어 줍니다.sample_csv_3 = pd.read_csv('C:\Python\Another_Sample_Data\Sample_3.csv', encoding='cp949')sample_csv_3cs <실행화면>
혹시 파일이 존재하지 않는다는 에러가 생기는 경우가 있는데, 그럴 때에는 ' \ ' 를 ' / '로 바꿔보세요.
<코드>
#혹시 파일이 존재하지 않는다는 오류가 생기면 파일경로 적어놓은 거에서 '\'를 '/'로 바꿔보세요sample_csv_4 = pd.read_csv('C:/Python/Another_Sample_Data/Sample_3.csv', encoding='cp949')sample_csv_4cs <실행화면>
엑셀파일 역시 마찬가지 입니다.
<코드>
#엑셀 파일 역시 마찬가지입니다.sample_excel_3 = pd.read_excel('C:\Python\Another_Sample_Data\Sample_3.xlsx')sample_excel_3cs <실행화면>
오늘은 Pandas(판다스) 라이브러리를 이용해서 csv 파일과 엑셀 파일을 파이썬으로 읽어오는 방법을 말씀드렸습니다.
앞으로 파이썬을 사용하시다보면 특히 csv형식으로 된 data파일을 읽어와야 하는 일이 많이 있으실 겁니다. 꼭 손쉽게 읽어올 수 있도록 익혀두시면 좋을 것 같습니다.
다음에는 '공공데이터포털'을 이용해서 실제 데이터 파일을 받아보고 그것을 파이썬에서 읽어보고, 간단히 몇 가지 확인하는 것을 해보려고 합니다. '공공데이터포털'은 말그대로 국가에서 운영하는 공공사이트이구요. 국가에서 공개하는 수많은 데이터들이 모여있는 곳입니다. 그 중에는 재밌고 흥미로운 것도 많이 있으니, 다음에 꼭 같이 한 번 해봤으면 좋겠습니다.
파이썬 관련된 또 다른 글들도 여럿 있으니 참고해주세요~^^
오늘도 글 읽어주셔서 감사합니다!
Look Rich or Be Rich
현명한 선택을 응원합니다.
-파공-
'▶파공's 취미 생활 > ▷파이썬 공부' 카테고리의 다른 글
Pandas 판다스 DataFrame 원하는 데이터 특정 셀 추출, 변경(수정) (0) 2022.08.28 Pandas DataFrame_.copy() 카피 메소드, 데이터프레임 중간에 행 추가 삽입 (2) 2021.07.17 Pandas DataFrame Index 판다스 데이터프레임 인덱스 수정 (0) 2021.07.13 파이썬 포맷팅 Format (feat. %, {}, f-string) 알아보기 (0) 2021.03.09 Pandas DataFrame 특정 로우(행) 호출, 수정, 추가, 삭제 하는 법 (4) 2021.01.20