-
[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
pandas.read_csv — pandas 2.0.3 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
뭔가 옵션이 굉장히 많습니다... 다 아실 필요는 없습니다.
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