해결된 질문
작성
·
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(값)
을 사용하여 특정 행의 결측치를 채울 수 있습니다