파이썬 함수

pandas 라이브러리(3) NaN값 다루기

개발연습자1 2022. 11. 24. 15:10

비어

있는 데이터(NaN)는 인공지능으로 예측할수 없다. 따라서 NaN을 처리하여

데이터 프레임으로 인공지능을 활용할수 있는 상태로 해야한다.

NaN을 처리하는데는 2가지 방법이 있다.

 

1.  .dropna() 함수로 NaN을 삭제한다.

    dropna()함수로 NaN를 삭제할때는 반드시 NaN가 들어는 행이나 열로

    삭제된다. 물론 임계값을 설정하여 한행이나 열에 NaN값이 여러개 들어있는

    경우만 삭제할수 있긴하다.

items2 = [{'bikes': 20, 'pants': 30, 'watches': 35, 'shirts': 15, 'shoes':8, 'suits':45},
{'watches': 10, 'glasses': 50, 'bikes': 15, 'pants':5, 'shirts': 2, 'shoes':5, 'suits':7},
{'bikes': 20, 'pants': 30, 'watches': 35, 'glasses': 4, 'shoes':10}]

df=pd.DataFrame(data= items2,index = ['store1','store2','store3'])
df

그림에 데이터에서 NaN값을 삭제해본다.

# 1. 삭제하는 전략
df.dropna()

NaN값이 들어있는 데이터가 삭제된걸 볼수 있다.

 

 

 

2. .fillna() 함수로 특정값으로 채운다.

    fillna()함수로 NaN값에 특정값을 채울 수있다. 특정값은 fillna()의 괄호에 작성하면 된다.

#맨위에 데이터베이스를 쓴다.
# 2. 특정값으로 채우는 전략
df.fillna(0)

  fillna() 함수로는 단순히 특정값 이외에도 특정 행열만 특정값을 채우거나

# 셔츠데이터의 비어있는 부분은 0으로 채운다.
df.loc[:,'shirts'].fillna(0)

# suits 와 glasses의 비어있는 데이터는 100으로 채운다.
df.loc[:,['suits','glasses']].fillna(100)

 

 

비어있는 데이터의 위아래나 좌우등의 데이터와 똑같은 값으로 채우거나

#데이터 프레임은 맨위에 있는걸 쓴다.
#위 행의 데이터로 채운다.
df.fillna(method= 'ffill',axis=0)
#forwardfill에 약자로 쓴다. 바로 윗행이라는뜻

#아래 행의 데이터 채운다.
df.fillna(method = 'bfill',axis=0)
#backwardfill에 약자로 쓰고 바로 아랫행이라는뜻

 

#맨위에 데이터 프레임을 쓴다.
#왼쪽 열의 데이터로 채운다.
df.fillna(method = 'ffill',axis=1)
#이번엔 앞쪽(왼쪽)열

#오른쪽 열의 데이터로 채운다.
df.fillna(method = 'bfill',axis=1)
#이번엔 뒤쪽(오른쪽)열

 

각 컬럼별 합계 평균 최대값 등으로 채울수 있다.

#데이터베이스는 맨위에 있다.
#각 컬럼별 평균으로 채우기
df.fillna(df.mean())

#각 컬럼별 최대값으로 채우기
df.fillna(df.max())

반응형