본문 바로가기

Programming Language/Data & A.I. (데이터 & 인공지능 관련)

판다스(Pandas) 엑셀 파일 & csv파일 불러오기 및 에러코드(UnicodeDecodeError)

반응형

 

 오늘은 판다스에서 엑셀 형식(xlsx) 데이터 프레임을 불러오고, 그 데이터 프레임을 편집하는 방법을 포스팅 해보도록 하겠습니다. 

 

1.  pandas를 import 하기 

import pandas as pd

 아마 이 글을 찾아보시는 대부분은 이 import 하는 순서를 지나치시겠지만, 초심자 분이 혹시라도 있다면 이 import pandas 부분을 뺴먹으시면 안 됩니다. 우리가 사용하는 데이터프레임 라이브러리인 이 판다스는 데이터 편집을 원활하게 해주고, 파이썬 언어로 그것을 편집하기 용이하게 해주는 장점이 있습니다. 그렇기에 이 판다스를 임포트 해주는 부분을 필수적으로 진행 해주셔야 합니다.

 

 

2. 판다스 데이터 프레임 불러오기 (xlsx 형식 : 엑셀)

무한도전.xlsx
0.01MB

 제가 오늘 예제 파일로 사용할 엑셀 파일입니다. 혹시나 연습하시는데 마땅한 엑셀 파일이 없다고 하신다면, 이 파일을 다운 받으셔서 연습 해보시는 것도 좋을 것 같습니다. 

작성 코드 공유

#데이터 불러오기
challenge_df = pd.read_excel('무한도전.xlsx')
challenge_df

코드를 불러온 모습

 위 사진은 코드를 불러온 모습입니다. 어떤가요? 깔끔해 보이나요 ?  저는 unnamed: 0 값과 앞에 인덱스 번호인 0 1 2 3 4 ... 가 지저분해 보입니다. 그렇다면 저 부분은 왜 나온 걸까요? 우리가 엑셀에서 지정해주지 않은 부분이기도 하고, 인덱스 번호는 엑셀의 1열 값이 저 인덱스 값에 지정을 따로 안 해주면 저렇게 나오게 됩니다.

 그렇다면 저 부분을 수정하는 방법은 없을까요?  파일을 불러올 떄 지정을 해주면 됩니다.

작성 코드 공유

#데이터 불러오기(인덱스 기본 번호 지정 x)
challenge_df = pd.read_excel('무한도전.xlsx',index_col = 0)
challenge_df

 

 index_col = 0으로 설정해서 불러오면 한결 깔끔하게 불러오는 것을 확인할 수 있습니다. 만약 이렇게 인덱스 번호가 필요 없는 경우는 이렇게 출력하면 되지만, 인덱스 번호가 있는 것이 오히려 편한 경우는 index_col=0으로 출력하면 오히려 불편한 경우가 생깁니다. 즉, 칼럼부분에 '이름' 이라는 변수를 두고 편집까지 해주신다고 하는 경우를 제외하고선, 인덱스 번호를 없애고 이름으로 진행 하는 것이 더 났습니다. 그러므로 각자의 상황에 맞게 확인 해보시고 처음 데이터를 불러올 때 index_col = 0 설정을 할지 말지 결정해보시면 좋겠습니다.

 

 

 

3. 판다스 데이터 프레임 불러오기 (csv 파일 형식)

 

 만약 '무한도전'이라는 이름의 .csv 파일이 있다면 read_csv 로 형식

무한도전.csv
0.00MB

을 바꿔주시고 판다스로 불러와보시면 됩니다. 혹시나 됩니다.

위의 무한도전.xlsx 파일이 아닌 무한도전.csv 파일을 처음에 그냥 불러오려고 하신다면 에러코드가 뜰겁니다! 사진으로 확인해보시면,

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 0: invalid continuation byte.

정확하게는 에러코드가 이렇게 뜰겁니다. 이럴 경우 해결책은 

 

#데이터 불러오기(에러코드 때문에 인코딩 지정)

challenge_df = pd.read_csv('무한도전.csv',encoding = 'cp949') # 혹은 encoding = 'utf-8
challenge_df

, encoding = 'cp949' 혹은 ,encoding ='utf-8' 로 지정하여 출력해보시면 출력이 되는 것을 확인할 수 있습니다. 

또한 이 데이터프레임 부르는 것도 앞에 인덱스 넘버가 필요없는 경우 똑같이 index_col = 0을 추가해주면 됩니다.

#데이터 불러오기(인덱스 기본 번호 지정 x)

challenge_df = pd.read_csv('무한도전.csv',encoding = 'cp949', index_col = 0)
challenge_df

 

 

저의 아주 작은 티끌 코딩 글이

블로그 방문자 님의 코딩에 도움이 됐으면 좋겠습니다.

 

좋아요(❤) 버튼 ↙은 항상 감사합니다 : )

반응형