즐거운프로그래밍

[pandas] pandas NaN

수수께끼 고양이 2023. 11. 14. 22:35
728x90
반응형
# We create a list of Python dictionaries
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= ['store 1', 'store 2', 'store 3'])
df

 

NaN 을 파악하는 방법, 변수명.isna() : 비어있니라고 물어보는 함수(true or false로 표시)

df.isna()

 

df.isna().sum() # false=0, true=1 / 컬럼별 확인

 

df.isna().sum().sum() # 비어있는 데이터 갯수

 


NaN 을 처리하는 방법
1. 삭제하는 방법, 변수명.dropna()

df.dropna()

 

2. 특정 값으로 채우는 방법, 변수명.fillna()

df.fillna(0) # 정수 채우기

 

df.fillna('데이터 없음') # 문자열 채우기

 

셔츠가 NaN인 값만, No data로 채우세요(특정 위치만 값 채우기)

df['shirts'].fillna('No data')
df

df['shirts'] = df['shirts'].fillna('No data')
df

 

 

채우긴 채우되, 앞이나 뒤의 데이터를 사용해서 채우는 방법

df.fillna(method='ffill', axis = 0) # forward fill = ffill
df.fillna(method='bfill', axis = 0) # backward fill = bfill
df.fillna(method='ffill', axis = 1) # forward fill = ffill
df.fillna(method='bfill', axis = 1) # backward fill = bfill

 


채우는 방법 중에서, 각 컬럼별 평균값으로 채우기
최소값으로 채우기, 최대값으로 채우기가 가능하다.

평균, 변수명.mean()

df.loc['store 3','shirts'] = 0 # 특정된 NaN 빈칸 숫자채우기
df.mean()
df.fillna(df.mean())

 

최대값, 변수명.max()

df.fillna(df.max())

 

최소값, 변수명.min()

df.fillna(df.min())

 


누락되어 있지 않은 값을 찾습니다. 
isna와 반대값으로 출력함, notna():안비어있니 <-> isna():비어있니

df.notna()

 

 

 

728x90
반응형