Pandas read_csv() 함수 이해하기

Pandas 패키지의 read_csv() 함수는 데이터 분석을 하기 위해 CSV(Comma-Separated Values) 파일을 데이터프레임으로 변환하는 함수입니다. 또한 파일을 청크(Chunk)로 반복하거나 분할하는 것도 지원합니다. 이번 포스팅에서는 read_csv() 함수의 사용법과 인수(parameter)에 대해서 알아 보겠습니다.

read_csv()

read_csv() 함수의 전체 구문은 아래와 같습니다. 매우 많은 인수가 포함되어 있는데요. 모든 인수를 다 아실 필요는 없습니다. 자주 사용되는 몇 가지 인수만 아시면, 데이터 분석을 하시는 데에 어려움이 없습니다. 실제 데이터 분석을 할 때, 많이 사용하는 인수들에 대해서 설명하겠습니다.


pandas.read_csv(filepath_or_buffer*
sep=_NoDefault.no_default
delimiter=None
header=’infer’
names=_NoDefault.no_default
index_col=None
usecols=None
dtype=None
engine=None
converters=None
true_values=None
false_values=None
skipinitialspace=False
skiprows=None
skipfooter=0
nrows=None
na_values=None
keep_default_na=True
na_filter=True
verbose=False
skip_blank_lines=True
parse_dates=None
infer_datetime_format=_NoDefault.no_default
keep_date_col=False
date_parser=_NoDefault.no_default
date_format=None
dayfirst=False
cache_dates=True
iterator=False
chunksize=None
compression=’infer’
thousands=None
decimal=’.’
lineterminator=None
quotechar='”‘
quoting=0
doublequote=True
escapechar=None
comment=None
encoding=None
encoding_errors=’strict’
dialect=None
on_bad_lines=’error’
delim_whitespace=False
low_memory=True
memory_map=False
float_precision=None
storage_options=None
dtype_backend=_NoDefault.no_default)



filepath_or_buffer 인수 : str, path object or file-like object

데이터프레임으로 변환하고자 하는 파일이 위치한 경로명과 파일명을 나타냅니다.

  • 유효한 문자열로 이루어진 경로를 사용할 수 있습니다. 문자열은 URL도 가능합니다. 유효한 URL 스키마에는 http, ftp, s3, gs 및 파일이 포함됩니다. 파일 URL의 경우 호스트가 필요합니다. 로컬 파일은 file://localhost/path/to/table.csv일 수 있습니다.
  • 경로 객체를 전달하려는 경우 pandas는 모든 os.PathLike를 허용합니다.
  • 파일과 같은 객체는 파일 핸들(예: 내장된 open 함수를 통해) 또는 StringIO와 같은 read() 메소드가 있는 객체를 참조합니다.


sep 인수 : str, default ‘,’

칼럼과 칼럼을 구분하는 데 사용할 구분 기호를 나타냅니다.

  • sep가 None이면 C 엔진은 구분자를 자동으로 감지할 수 없지만 Python 구문 분석 엔진은 가능합니다. 즉, Python의 내장 스니퍼 도구 csv.Sniffer가 구분자를 사용하고 자동으로 감지합니다.
  • 1개의 문자보다 길고 ‘\s+’와 다른 구분 기호는 정규표현식으로 해석되며 Python 구문 분석 엔진을 강제로 사용합니다.
  • 정규표현식 구분 기호는 인용된 데이터를 무시하는 경향이 있습니다.

delimiter 인수 : str, default ‘,’

sep 인수에 대한 별칭을 나타냅니다.


header 인수 : int, list of int, None, default ‘infer’

열 이름으로 사용할 행 번호와 데이터의 시작을 나타냅니다.입니다.

  • 기본 값은 첫 행을 열 이름으로 인식합니다. 즉, 열 이름이 전달되지 않으면, header=0이 기본 값으로 주어지고, 파일의 첫 번째 줄을 열 이름으로 판단합니다.
  • 열 이름이 명시적으로 전달되면 동작은 header=None과 동일합니다. 기존의 열 이름을 바꿀 수 있도록 header=0을 명시적으로 전달합니다.
  • header는 [0,1,3] 처럼 열의 다중 인덱스에 대한 행 위치를 지정하는 정수 리스트일 수 있습니다. 지정되지 않은 중간 행은 건너뜁니다(예: 이 예에서 2는 건너뜀). header는 skip_blank_lines=True인 경우 주석 처리된 행과 빈 행을 무시하므로 header=0은 파일의 첫 번째 행이 아니라 데이터의 첫 번째 행을 나타냅니다.


names 인수 : array-like, optional

사용할 열 이름 리스트를 나타냅니다.

  • 파일에 헤더 행이 포함된 경우 header=0을 명시적으로 전달하여 열 이름을 재정의해야 합니다.
  • 열 이름 리스트에는 중복된 값이 들어가면 안됩니다.


index_col 인수 : int, str, sequence of int / str, or False, optional, default

문자열 이름 또는 열 인덱스로 지정된 DataFrame의 행 레이블로 사용할 열 이름을 나타냅니다.

  • int 와 str의 시퀀스가 주어지면 MultiIndex가 사용됩니다.
  • 각 줄 끝에 구분 기호가 있는 형식이 잘못된 파일이 있는 경우, index_col = False를 사용하여 pandas가 첫 번째 열을 인덱스로 사용하지 않도록 할 수 있습니다.


usecols 인수 : list-like or callable, optional

데이터프레임으로 변환하고자 하는 열의 하위 집합을 나타냅니다.

  • 리스트 같은 경우 모든 요소는 위치(즉, 문서 열에 대한 정수 인덱스)이거나 header 행에서 유추된 열 이름에 해당하는 문자열이어야 합니다.
  • 사용자가 이름으로 제공하더라도 header 행에서 유추된 열 이름에 해당하는 문자열이어야 합니다. 단, 사용자가 names를 지정한 경우라면 자료 header행은 고려되지 않습니다.
  • 예를 들어 리스트형의 usecols 매개변수는 [0, 1, 2] 또는 [‘foo’, ‘bar’, ‘baz’]라고 가정해 보죠. 요소 순서는 상관없기 때문에 usecols=[0, 1]과 usecols=[1, 0]의 결과는 동일하게 첫 번째와 두 번째 열을 반환합니다.
  • [‘foo’, ‘bar’] 순서로 데이터프레임을 인스턴스화 하려면 pd.read_csv(data, usecols=[‘foo’, ‘bar’])[[‘foo’, ‘bar’]]를 사용해야 하고,
  • [‘bar’, ‘foo’] 순서로 데이터프레임을 인스턴스화 하려면 pd.read_csv(data, usecols=[‘foo’, ‘bar’])[[‘bar’, ‘foo’]]를 사용해야 합니다.
  • callable 형태로 나타내려면, 호출 가능한 함수(collabel function)가 열 이름에 대해서 True로 평가되는 이름을 반환해야 합니다. 유효한 호출 가능 인수의 예는 lambda x: x.upper() in [‘AAA’, ‘BBB’, ‘DDD’]입니다. 이 매개변수를 사용하면 분석 시간이 훨씬 빨라지고 메모리 사용량이 줄어드는 장점이 있습니다.


dtype 인수 : Type name or dict of column -> type, optional

{‘a’: np.float64, ‘b’: np.int32, ‘c’: ‘Int64’}처럼 데이터 또는 열의 데이터 유형을 지정할 수 있습니다.


skiprows 인수 : list-like, int or callable, optional

파일 시작 부분에서 건너뛸 줄 번호(0-색인) 또는 건너뛸 줄 수(int)를 나타냅니다.

  • callable인 경우 호출 가능한 함수는 행 인덱스에 대해 평가되며 행을 건너뛰어야 하는 경우 True를 반환하고, 그렇지 않으면 False를 반환합니다(Ex. skiprows = lambda x: x in [0, 2]입니다.


skipfooter 인수 : int, default 0

파일에서 건너뛸 맨 아래 줄 수를 나타냅니다. skipfooter = 1이라면, 파일의 맨 아래 한 줄을 데이터프레임으로 변환하지 않습니다.


nrows 인수 : int, optional

읽을 파일의 행 수를 나타냅니다. 대용량 파일의 일부를 읽는 데 유용합니다.


a_values 인수 : scalar, str, list-like, or dict, optional

NA/NaN으로 인식할 추가 문자열을 나타냅니다. 딕셔너리 형태로 표현한다면, 특정 열 당 NA 값을 나타내야 합니다. 기본적으로 ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1.#IND’, ‘-1.#QNAN’, ‘-NaN’, ‘-nan’, ‘1.#IND’, ‘1.#QNAN’, ‘<NA>’, ‘N/A’, ‘NA’, ‘NULL’, ‘NaN’, ‘None’, ‘n/a’, ‘nan’, ‘null’ 값들은 NaN으로 해석합니다.


keep_default_na 인수 : bool, default True

데이터를 파싱할 때 기본 NaN 값을 포함할지 여부를 나타냅니다.


chunksize 인수 : int, optional

반복을 위한 TextFileReader 객체를 반환합니다.


encoding 인수 : str, optional, default “utf-8”

읽기/쓰기 시 UTF에 사용할 인코딩(ex. ‘utf-8’) 방식을 나타냅니다.


read_csv() 함수 Returns

DataFrame or TextFileReader 을 반환합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다