본문 바로가기
데이터 어쩌구/전처리 및 시각화

[Pandas] 데이터 읽어오기 (read_)

by annmunju 2021. 10. 2.

최근에 본 테스트에서 read_csv에 다양한 옵션값이 있는 것을 알아야 풀 수 있는 문제가 있었고, 덕분에 시원하게 망했었다. 그래서 그 내용을 정리해서 다시는 잊지 않도록 한다.

 

<Source Code> 출처 : https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html

@deprecate_nonkeyword_arguments(
    version=None, allowed_args=["filepath_or_buffer"], stacklevel=3
)
@Appender(
    _doc_read_csv_and_table.format(
        func_name="read_csv",
        summary="Read a comma-separated values (csv) file into DataFrame.",
        _default_sep="','",
        storage_options=generic._shared_docs["storage_options"],
    )
)
def read_csv(
    filepath_or_buffer: FilePathOrBuffer,
    sep=lib.no_default,
    delimiter=None,
    # Column and Index Locations and Names
    header="infer",
    names=lib.no_default,
    index_col=None,
    usecols=None,
    squeeze=False,
    prefix=lib.no_default,
    mangle_dupe_cols=True,
    # General Parsing Configuration
    dtype: DtypeArg | None = None,
    engine=None,
    converters=None,
    true_values=None,
    false_values=None,
    skipinitialspace=False,
    skiprows=None,
    skipfooter=0,
    nrows=None,
    # NA and Missing Data Handling
    na_values=None,
    keep_default_na=True,
    na_filter=True,
    verbose=False,
    skip_blank_lines=True,
    # Datetime Handling
    parse_dates=False,
    infer_datetime_format=False,
    keep_date_col=False,
    date_parser=None,
    dayfirst=False,
    cache_dates=True,
    # Iteration
    iterator=False,
    chunksize=None,
    # Quoting, Compression, and File Format
    compression="infer",
    thousands=None,
    decimal: str = ".",
    lineterminator=None,
    quotechar='"',
    quoting=csv.QUOTE_MINIMAL,
    doublequote=True,
    escapechar=None,
    comment=None,
    encoding=None,
    encoding_errors: str | None = "strict",
    dialect=None,
    # Error Handling
    error_bad_lines=None,
    warn_bad_lines=None,
    # TODO (2.0): set on_bad_lines to "error".
    # See _refine_defaults_read comment for why we do this.
    on_bad_lines=None,
    # Internal
    delim_whitespace=False,
    low_memory=_c_parser_defaults["low_memory"],
    memory_map=False,
    float_precision=None,
    storage_options: StorageOptions = None,
):
    # locals() should never be modified
    kwds = locals().copy()
    del kwds["filepath_or_buffer"]
    del kwds["sep"]

    kwds_defaults = _refine_defaults_read(
        dialect,
        delimiter,
        delim_whitespace,
        engine,
        sep,
        error_bad_lines,
        warn_bad_lines,
        on_bad_lines,
        names,
        prefix,
        defaults={"delimiter": ","},
    )
    kwds.update(kwds_defaults)

    return _read(filepath_or_buffer, kwds)

 

 

<option>

1. 파일 주소 및 파일명
2. sep(delimiter) : 구분자 (ex. ',' : 텍스트 파일의 경우 구분자가 콤마로 이뤄진 경우가 있음)
3. header : 몇번째 줄(행)부터 시작할 것인가? 정수로 입력.
4. names : 열 이름 지정 [ (1) , (2) , ... ]
5. index_col : 인덱스로 지정할 열이름 / False (인덱스 한칸 밀려있는 상황일 때, 자체적으로 인덱스 만들어서 0~n 생성)
6. usecols : 실제로 dataframe에 로딩할 columns만 설정.
7. prefix : 접두사. header 없을 때 열 번호에 추가하기 위한 접두사 설정 (ex. 'X' ...)
8. mangle_dupe_cols : 중복 열. false이면 덮어씌우기, true면 같은 열 번호로 작성하지 않고 '.n'을 덧붙임.
9. dtype : 데이터 또는 열의 데이터 유형. (ex: {'a': np.float64, 'b': np.int32, 'c': 'Int64'})
10. converters : 특정 열의 값을 변환하기 위한 함수 사전
11. true_values, false_values : True로 간주할 값, False로 간주할 값.
12. skipinitialspace : 구분 기호 뒤 공백은 건너 뛰기.
13. skiprows : 몇 줄 건너 띄고 읽어올래 / skipfooter : 아래부터 몇 줄은 제외하고 읽어올래
14. nrows : 몇 줄만 읽어올래.
15. na_values : na값으로 처리할 값들 ex) 100인것은 na로 바꿔줘..
16. keep_default_na : 데이터를 구문 분석할 때 기본 NaN 값을 포함할지 여부

  na_values = "..." na_values 없음
keep_default_na = True na_values는 NaN의 구문 분석을 위해 사용하는 값에 추가 기본 NaN의 값은 구문 분석에 사용
keep_default_na = False na_values로 지정된 NaN 값만 구문 분석에 사용 NaN 해석되지 않음.

17. na_filter : 누락된 값(빈 문자열, na_values 값) 감지. na 없을 때, na_filter=False를 전달하면 성능 향상됨.
18. verbose : NA 값의 수
19. skip_blank_lines : NaN 값 건너 띄고 해석
20. parse_dates : 날짜/시간이 포함된 경우 데이터 타입을 맞도록 파싱해서 읽어오는 방법. 
21. keep_date_col : parse_dates가 여러 열을 결합 하도록 지정하면 원래 열을 유지.
22. date_parser : 문자열의 시퀀스를 datetime 인스턴스 배열로 전환하는 데 사용하는 함수.
23. thousands : 천 단위 구분 기호
24. decimal: str = "." : 소수점 구분기호는 '.'이라는 뜻.
25. encoding : utf에 사용할 인코딩.

 

<유사 코드>

 - DataFrame.to_csv : df를 쉼표로 구분된 csv 파일에 쓰기.

 - read_fwf : 고정 넓이 형식의 행 테이블을 df로 읽기

 

<후가공>

- df["열이름"].notnull() : 널 아닌 값만 추출. 필요하다면 변수에 저장.

728x90