최근에 본 테스트에서 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() : 널 아닌 값만 추출. 필요하다면 변수에 저장.
'데이터 어쩌구 > 전처리 및 시각화' 카테고리의 다른 글
[matplotlib/seaborn] 그래프 그리기 (시각화) (0) | 2021.10.02 |
---|---|
[Pandas] 데이터 프레임 다루기 (0) | 2021.10.02 |
2-5. Analysis Seoul Crime (지도시각화: Folium) (0) | 2021.09.29 |
2-4. Analysis Seoul Crime (seaborn, 시각화) (0) | 2021.09.24 |
2-3. Analysis Seoul Crime (서울시 범죄현황 데이터 정리) (0) | 2021.09.23 |