• 카테고리

    질문 & 답변
  • 세부 분야

    자격증 (데이터 사이언스)

  • 해결 여부

    해결됨

시험에서 질문이 있습니다.

24.05.12 00:01 작성 조회수 128

0

시험에 전반적으로 궁금한 점인데요

예를 들어 작업형1 모의문제1에서 2번문제 같은경우

 

주어진 데이터에서 결측치가 30%이상 되는 컬럼을 찾고 해당 컬럼에 결측치가 있는 데이터(행)를 삭제 함.

 

이런 조건이 있는데요 이런 문제를 풀때 그냥

전체 갯수에서 30%에 해당하는 갯수 확인하고

isna().sum()이용해서 30% 넘어가는것 갯수확인하고

해당하는 column 확인해서 그냥 지정해서 지워주고 이런식으로 풀면 되는건가요?

 

아니면

count=len(df)*0.3

check=df.columns


for i in check:
    if df[i].isna().sum()>count:
        df=df.dropna(subset=i)

이런 식으로 코드 내에 30%를 확인해서 지워주는 부분을

포함해야 하는지 궁금합니다.

답변 3

·

답변을 작성해보세요.

0

안녕하세요:)
데이터를 선택(슬라이싱)하는 방법이 있고, 삭제하는 방법이 있습니다.
어떤 방법을 사용하던 정답이 나오면 됩니다.
작업형1과3은 정답이 있는 문제 입니다.

눈으로 정답만 확인하면 정답을 입력하는 란은 따로 있어 답안란에 입력만 가능하면 됩니다.

 

또한 코드를 채점하진 않습니다. 따라서 각각 정보를 따로 파악해서
해당 값을 구하는 코드만 구현 하셔도 문제는 없습니다.

응원합니다!!

0

yoowen님의 프로필

yoowen

질문자

2024.05.12

제가 궁금한 점은 코드 내에 30%를 파악하는 부분을 포함해서 처리가 되게끔 만들어야 하는지

혹은 그냥 30% 갯수, 결측치 갯수 따로따로 파악해서

어떤 열을 처리해야할지 정보를 얻은 후에 간단히 그 열만 처리하는 코드를 작성하면 될지가 궁금한 것입니다! :)

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.05.12

안녕하세요, 인프런 AI 인턴입니다.

yoowen님께서 질문하신 내용은 결측치 처리 방식에 관한 것으로, 특히 결측치가 30% 이상인 컬럼을 찾아 해당 컬럼의 결측치가 있는 데이터(행)를 삭제하는 방법에 대해 질문 주셨습니다.

해당 질문에 대한 답은 세 가지 주요 방식으로 나누어 볼 수 있습니다:
1. 전체 갯수에서 30%에 해당하는 갯수를 확인하고 isna().sum()을 이용하여 30%를 넘어가는 컬럼의 갯수를 확인한 뒤, 해당하는 컬럼을 지정해서 직접 삭제하는 방법.
2. for 문을 이용해 각 컬럼의 결측치 비율을 계산하고, 이 비율이 30%를 초과하는 경우 해당 컬럼의 결측치가 있는 행을 삭제하는 방법.
3. Pandas의 내장 함수와 조건문을 활용해 동적으로 처리하는 방법.

질문자님의 쿼리는 두 번째 방식에 해당합니다. 이 방식은 결측치 처리 과정에서 각 컬럼별로 결측치 비율을 자동으로 계산하고, 조건에 맞으면 해당하는 컬럼의 결측치를 자동으로 삭제해 줍니다. 따라서, 각 컬럼을 개별적으로 확인하고 수작업으로 삭제하는 대신, 동적으로 컬럼의 결측치 비율을 계산하여 처리할 수 있다는 장점이 있습니다.

실제로 이와 관련하여 유사한 질문을 작성한 다른 수강생의 질문과, 이에 대한 강사님의 답변이 있습니다. 이 답변들은 yoowen님의 질문에 대한 해결방법에 대해 깊이 있는 이해를 도울 수 있습니다:

결측치 처리 방법에는 여러 가지가 있으며, 상황에 따라 적절한 방법을 선택해야 합니다. yoowen님의 질문에 대한 답변으로, 제시하신 코드는 결측치가 많은 컬럼을 동적으로 찾아 해당 컬럼의 결측치가 있는 행을 삭제하는 유효한 접근 방식 중 하나입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.