인공지능, 데이터분석/[Numpy, Pandas] EDA, 문법

[pandas] 06-02. 결측값 제거(dropna)

마법사 코딩공주 2022. 11. 21. 17:46
728x90
반응형

▶ 결측값 제거(dropna)

- 기본 사용법

  • DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
  • axis  : {0: index / 1: columns} 결측치 제거를 진행할 레이블
  • how : {'any' : 존재하면 제거 / 'all' : 모두 결측치면 제거} 제거할 유형

       -   포함만 시켜도 제거할지, 전부 NA여야 제거할지 정할 수 있음

  • tresh : 결측값이 아닌 값이 몇 개 미만일 경우에만 적용시키는 인수

      - 예를들어, tresh값이 3이라면 결측값이 아닌 값이 3개 미만일 경우에만 dropna 메서드 수행

  • subset : dropna메서드를 수행할 레이블 지정
  • inplace : 원본을 변경할지의 여부

- 예시

col  = ['col1','col2','col3','col4','col5']
row  = ['row1','row2','row3','row4']
data = [[1,2,3,pd.NA,5],[6,pd.NA,8,pd.NA,10],[11,12,13,14,15],[pd.NA,pd.NA,pd.NA,pd.NA,pd.NA]]
df = pd.DataFrame(data,row,col)

>>
      col1  col2  col3  col4  col5
row1     1     2     3  <NA>     5
row2     6  <NA>     8  <NA>    10
row3    11    12    13    14    15
row4  <NA>  <NA>  <NA>  <NA>  <NA>

1. axis = 0 결측치 제거 

  -  row 값이 NA인 행 모두 제거되고 row3값만 남음

print(df.dropna(axis=0))
>>
     col1 col2 col3 col4 col5
row3   11   12   13   14   15

2. how로 연산기준을 정할 경우

  - how = 'any' 인 경우 한 값이라도 NA를 가진다면 해당 레이블은 제거

print(df.dropna(how='any'))
>>
     col1 col2 col3 col4 col5
row3   11   12   13   14   15

  - how = 'all' 할 경우 모든 값이 NA인 레이블만 제거

print(df.dropna(how='all'))
>>
     col1  col2 col3  col4 col5
row1    1     2    3  <NA>    5
row2    6  <NA>    8  <NA>   10
row3   11    12   13    14   15

3. subset 인수를 통한 레이블 지정

  - subset에 리스트형태의 값을 입력하거나, 해당 컬럼명을 입력하여 결측치를 제거할 레이블을 지정 할 수 있다.

print(df.dropna(subset=['col1','col2']))
>>
     col1 col2 col3  col4 col5
row1    1    2    3  <NA>    5
row3   11   12   13    14   15

<출처> 위키독스를 참고하여 작성

https://wikidocs.net/153202

728x90
반응형