-
[Python] pandas 에 csv 파일 불러오기: pd.read_csv()코딩/파이썬 2023. 8. 4. 16:07반응형
실무에서는 xlsx 파일과 함께 csv 파일도 많이 다룹니다. csv는 comma-separated values 로 값이 콤마로 구분되는 텍스트 파일 형식입니다. Pandas에서는 csv 파일과 같은 텍스트 파일을 간단히 불러와 dataframe으로 저장하는 메소드를 제공합니다. 이번 글에서는 이러한 함수인 read_csv()에 대해서 알아보겠습니다.
1. csv 파일 불러오기: read_csv()
- CSV 읽어 오기 : df = pd.read_csv('filename.csv')
CSV 파일은 Comma-Separated Values의 약자로, 데이터 값을 쉼표로 구분하는 텍스트 파일입니다. pandas의 read_csv() 함수를 사용하면 이러한 csv 파일을 DataFrame 형식으로 쉽게 불러올 수 있습니다. 아래는 간단한 예시 코드입니다
import pandas as pd df = pd.read_csv('filename.csv')
자세한 함수 정의는 아래 read_csv 파일 형식을 참고하세요.
https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html
뭔가 옵션이 굉장히 많습니다... 다 아실 필요는 없습니다.
2. header 읽어오는 방법
- header 인자에 칼럼명의 행 위치를 지정할 수 있다.
read_csv() 함수는 기본적으로 첫 번째 행을 header (열 이름)로 인식합니다. 만약 csv 파일의 첫 번째 행이 열 이름이 아니라면 header=None 옵션을 사용하여 header가 없음을 명시할 수 있습니다. 이렇게 하면 pandas는 자동으로 열 이름을 숫자로 부여합니다.
df = pd.read_csv('파일경로/filename.csv', header=None)
반대로, csv 파일 중 특정 행을 열 이름으로 사용하고 싶다면 header=n 옵션을 사용하면 됩니다. 여기서 n은 원하는 행의 인덱스 번호입니다.
df = pd.read_csv('파일경로/filename.csv', header=2) # 세 번째 행을 header로 사용
3. UnicodeDecodeError 대처법
csv 파일을 불러올 때 가끔 UnicodeDecodeError라는 에러를 만나게 됩니다. 이 에러는 파일이 저장된 인코딩과 pandas가 기대하는 인코딩이 일치하지 않을 때 발생합니다.
이 문제를 해결하기 위해 encoding 파라미터를 사용하여 파일의 정확한 인코딩을 명시해줄 수 있습니다. 한글이 포함된 csv 파일의 경우 대부분 'utf-8' 또는 'cp949' 인코딩을 사용합니다.# csv 가 utf-8로 인코딩 되었을 경우 df = pd.read_csv('파일경로/filename.csv', encoding='utf-8')
또는 cp949로 인코딩 되었을 경우, 아래와 같이 하면 됩니다.
대게 excel로 csv를 저장할 경우, cp949로 인코딩되었다고 보면 됩니다.# cp949로 인코딩 된 경우 df = pd.read_csv('파일경로/filename.csv', encoding='cp949')
만약 정확한 인코딩이 무엇인지 모르는 경우, Python의 chardet 라이브러리를 사용하여, 아래와 같이 파일의 인코딩을 확인할 수 있습니다.
import chardet with open('파일경로/filename.csv', 'rb') as f: result = chardet.detect(f.read()) print(result['encoding'])
이상 Python에서 csv 읽는 방법이었습니다.
반응형'코딩 > 파이썬' 카테고리의 다른 글
[Python] pandas dataframe에서 데이터 읽기 : loc, iloc 사용법 (0) 2023.08.05 [Python] pandas csv 읽을 때 칼럼명 지정하기: read_csv() (0) 2023.08.04 [Python] Pandas에서 결측치 보간하기 - interpolate 함수 이용법 (0) 2023.08.04 [Python] Pandas에서 NaN,NA 대체/제거하기: fillna, dropna (0) 2023.08.04 [Python] 초보자를 위한 cProfile로 코드 최적화하기 (0) 2023.08.01