Breaking

2018년 10월 31일 수요일

python pandas.DataFrame.fillna <별별정보>

python pandas.DataFrame.fillna <별별정보>


pandas.DataFrame.fillna()- pandas 0.23.4 document API Reference


함수 설명

우리가 데이터를 받으면 항상 좋은 데이터만 존재하는 것이 아니다. 곳곳에 Nan으로 데이터 값들이 존재하지 않는 경우가 발생할 수 밖에 없다. 이 때 사용하는 함수로 nan 값을 우리가 원하는 값으로 변경하는 것이 가능하게 하는 함수로 매우 유용하고 데이터 분석에서는 필수적인 함수라해도 과언이 아니다.

변수 설명 및 예시

0. 우리가 사용할 dataframe


1. value
채우고자 하는 변수를 집어넣는 곳으로 int, float, string 어떤 것도 다 가능하다. 이 뿐 아니라 dict 형태로도 넣는 것이 가능하며 Series, DataFrame까지 넣을 수 있는 다재다능함을 부여한 변수이다. 잘 쓸수만 있다면 매우 유용하게 쓰일 수 있다. 필자가 여기서 보이는 예시는 총 4가지로 유용함을 확인할 수 있었으면 좋겠다.

1-1) pd.DataFrame.fillna(value=int)
1-2) pd.DataFrame.fillna(value=dict)
1-3) pd.DataFrame.fillna(value=pd.Series)
1-4) pd.DataFrame.fillna(value=pd.DataFrame)



2. method 
value 대신 사용이 가능한 변수로 pad, ffill,bfill,backfill 4가지 방식을 선택할 수 있다.
각 method의 방식은 아래와 같다.
pad, ffill : Nan 값을 앞의 값으로 채운다
bfill,backfill : Nan 값을 뒤의 값으로 채운다

2-1)  pd.DataFrame.fillna(method='backfill')
2-2)  pd.DataFrame.fillna(method='bfill')
2-3)  pd.DataFrame.fillna(method='pad)
2-4)  pd.DataFrame.fillna(method='ffill')


3. axis
어떤 축을 기준으로 선택할지를 결정하는 변수로 설정하지 않으면 None으로 선택되어 전체 데이터프레임에 해당하지만 axis를 선택하면 0 혹은 index는 세로줄을 기준으로 1 혹은 columns를 사용하면 가로줄을 기준으로 채우는 것을 확인 가능하다.

참고로 예는 method='pad'를 이용해 좀 더 이해하기 쉽게하였다.
3-1)  pd.DataFrame.fillna(method='backfill', axis=0) 혹은 axis='index'
3-2)  pd.DataFrame.fillna(method='backfill', axis=1) 혹은 axis='columns'


4. inplace
fillna를 이용해 nan 데이터를 어떤 값으로 채운 후에 실제 데이터프레임에 저장할지를 결정하는 변수로 inplace=True로 설정하면 된다.

5. limit
어떤 방식으로 값을 채우든 그 채우는 기준에 부합하되 limit 개수만큼만 nan 대신 값을 채워넣을 수 있는 변수로 정수만을 사용해야한다.

참고로 예는 method='ffill'를 이용해 좀 더 이해하기 쉽게하였다.
5-1)  pd.DataFrame.fillna(method='ffill', limit=1)
5-2)  pd.DataFrame.fillna(value=0, limit=1)

6. downcast
이 변수와 관련해서는 타입을 바꿀 수 있다는 설명이 되어있지만 실제로 적용되는 사례를 찾기 어려웠다. 간혹 사용되는 방식으로는 downcast='infer'이라는 방식을 사용했는데 이렇게 사용함에 따라 변수가 자동으로 float64에서 int64로 변경된 것을 확인가능했다.

6-1)  pd.DataFrame.fillna(value=0,downcast='infer')


 ALL RIGHT RESERVED TWINSTARINFO