numpy+pandas - 5

김찬울·2021년 7월 27일
0

오늘은 기본적이기도 하지만 활용적인 함수들을 많이 배웠다.

csv

기본적으로 csv파일은 정보들을 쉼표로 구분한 데이터셋을 말한다.

이는 dataframe과 series 그리고 엑셀에서도 쉽게 볼 수 있는 데이터 형태다.

기본적으로

read_cs(경로), read_table(경로)

이 두가지는 각각 csv와 csv를 포함한 구분자로 구분된 데이터셋을 받아오는 pandas의 함수다.

사용은

pd.read_csv('examples\ex4.csv')

pd.read_table('examples/ex3.txt', sep='\s+')

이런 형태로 쓰인다.
read_table에서 sep이 붙는 이유는 구분자가 1일수도 있고 0 , ' " . 등 너무나 많아서 이를 위하여 지정해준 구분자를 지정해준다 대부분 공백이므로 \s+를 주로 사용하기도 한다.

to_csv(경로)

read와 반대로 읽어오는 것이 아닌 내보내는 것이다.

ts.to_csv('examples/tSeries.csv')

사용은 위와 같다. 이때 구분자는 ','가 디폴트이므로 sep을 통해 바꿀 수 있다.
header를 안보이게 하고 싶다면 header=None를 사용하자.

데이터 정제 및 준비

데이터를 다루다보면 NaN과 같은 널값이 든 데이터를 다루게 된다.
딥러닝과 머신러닝에서 학습하는 모델도 중요하지만 그에 못지않게 중요한 것은 데이터에 있다고 봐도 무방하다. 그러기에 우리는 데이터 전처리에 힘을 써야한다. 지금 정리하는 것은 그에 유용한 데이터 전처리 기술이다.

일단 데이터의 널값을 보았을 때 고민해야한다.
평균이 없다고 봐도 무방한 데이터라면 해당 행을 삭제할 지,
성적같은 경우는 평균값을 넣어서 중간은 가게끔 할 지,
아니면 시계열 데이터라면 근처의 값이 중요하기에 전날 데이터를 받을지 등등에 대하여 많은고민을 해야한다.

위와같은 세가지 경우에서 자주 쓰이는 것이 있다.

dropna(), fillna()

이 두가지로 대부분의 경우를 해결할 수 있다.

이름에서 공통된 na는 NaN을 뜻한다
즉, 널값을 삭제하는 함수와 널값을 채우는 함수다.

df.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

를 기본으로 가진 dropna함수는 기본적인 0(열)번축을 기본으로 가지고,
해당 열(행)에서 하나라도 null이면 drop을 하는 함수다.

이때 우리는 옵션으로 이를 좀 더 사용자화 할 수 있다.
how를 all로 바꾸면 모두가 널이어야만 drop되고

thresh에 n값이 주어지면
널값이 아닌 값이 들어간 것이 n개보다 적다면 drop되고

subset이 주어지면 dataframe 에서의 부분집합인 특정 열의 값으로만 drop되며
inplace를 설정하므로써 저장까지 되게 설정할 수 있는 속성을 지닌다.

df.fillna(n) 

drop과 비슷하지만 옵션을 하나만 더 추가해서 설명하면 method라는 옵션이 있는데
해당 옵션은 단순이 n으로만 채우는 것이 아닌 특정한 방법으로 값을 채워줄 수 있다.
method='ffill'이 주로 사용되는데 이는 가장 최근의 결측치에 대하여 채워준다.
axis를 설정하여 최근의 열인지 최근의 행으로 받을 지를 설정할 수 있다.

profile
코린코린이

0개의 댓글