인프런 커뮤니티 질문&답변

빅분기수강생님의 프로필 이미지
빅분기수강생

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

drop(), dropna(),fillna() 관련 질문

해결된 질문

작성

·

279

·

수정됨

0

좋은 강의 감사합니다. 제목에 기재한 메소드들에 대해 실습하다 헷갈리는게 있어서,

개념 정립차원에서 정리글을 작성해봤는데, 맞는지 확인 좀 부탁드려도 될까요?

 

////////////////////////////////////////////////////////////////////////////////////////////

예: trian데이터 셋에서 작업, "A","B" 칼럼에 결측치 있다고 가정

 

@@@ drop() // 삭제 메소드

@1개의 특정 칼럼(열) 삭제

train = train.drop(["A"], axis=1)

# "A" 로 해도 진행 됨.

@1개의 특정 (칼럼에 해당 하는) 행 삭제

train = train.drop(인덱스값, axis=0)

 

@ 복수의 특정 칼럼(열) 삭제

train = train.drop(["A","B"], axis=1)

@ 복수의 특정 (칼럼에 해당 하는) 행 삭제

train = train.drop([인덱스값들], axis=0)

 

 

@@@ dropna() // 결측치 삭제 메소드

@ 결측치 존재하는 칼럼 전체삭제

train = train.dropna(axis=1)

@ 결측치 존재하는 행 전체삭제

train = train.dropna(axis=0) #axis=0 은 기본값이라 생략가능.

 

@ 복수의 결측치 존재 칼럼(열) 삭제

train = train.dropna(["A","B"], axis=1)

에러 : TypeError: DataFrame.dropna() got multiple values for argument 'axis'

@ 복수의 (특정 칼럼 내) 결측치 존재 행 삭제

train = train.dropna(subset=["A","B"], axis=0)

# train이라는 데이터 셋을 대상으로( train. ), 결측치가 있는 것들 행(axis=0 이 기본)을 제거할 것인데( dropna() ), 그 결측치 우뮤의 기준은 "A","B"칼럼이다 (subset=["A","B"])

 

 

@@@ fillna() // 결측치 채움 메소드

train.fillna(0) # train데이터셋의 결측치를 전부 0으로 채움

 

@특정 칼럼의 결측치들을 특정 값으로 동일하게 채움

train["A"] = train["A"].fillna(0) # "A" 칼럼의 결측치를 모두 0으로 채워 train의 "A"칼럼에 대입하고, 결과를 동일이름의 변수로 적용

@특정 행의 결측치들을 특정 값으로 동일하게 채움

# 어떤 인덱스(행)이 갖는 여러 칼럼을 동일한 값으로 채우는 경우는 사실상 없으므로, 알 필요 없음(...??)

////////////////////////////////////////////////////////////////////////////////

 

일단 여기까지 정리한게 다인데,

 

@ 복수의 결측치 존재 칼럼(열) 삭제

train = train.dropna(["A","B"], axis=1) 이렇게 하면 오류 발생해서...

dropna() 메소드로 결측치 존재하는 특정 칼럼만 지정해서 삭제하려면 어떻게 해야하나요?

 

그리고

 

fillna()메소드에서 @특정 행의 결측치들을 특정 값으로 동일하게 채움

이런 경우는 없을테니, 그냥 넘어가도 괜찮은지 궁금합니다.

 

 

답변 1

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

drop()

이상없습니다.

dropna()

  • 결측치가 있는 칼럼 전체 삭제: train.dropna(axis=1)는 결측치가 있는 모든 열을 삭제

  • 결측치가 있는 행 전체 삭제: train.dropna(axis=0)는 결측치가 있는 모든 행을 삭제

  • 특정 칼럼 내 결측치가 있는 행 삭제: train.dropna(subset=["A", "B"], axis=0)는 "A"와 "B" 칼럼 중 하나라도 결측치가 있는 행을 삭제

  • 복수의 결측치 존재 칼럼 삭제: dropna() 메소드는 특정 칼럼을 지정하여 삭제하는 기능 없어요
    결측치가 있는 칼럼을 먼저 찾아낸 후
    drop()을 사용

fillna()

  • 특정 행의 결측치 채우기: 실제로 이런 경우는 드물지만, 가능은 합니다. 예를 들어, train.loc[인덱스].fillna(값)을 사용하여 특정 행의 결측치를 채울 수 있습니다

빅분기수강생님의 프로필 이미지
빅분기수강생

작성한 질문수

질문하기