강의

멘토링

커뮤니티

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

ingoout님의 프로필 이미지
ingoout

작성한 질문수

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

작업형1 모의문제2

작업형1의 모의문제2번에 문제4번 풀이 질문 드립니다

해결된 질문

작성

·

22

0

  • 작업형1의 모의문제2번에 문제4번 질문입니다

    문제4

    주어진 데이터에서 자료형(type)이 object인 컬럼은 삭제하고, 결측치는 0으로 대체한다.

    행 단위로 합한 다음 그 값이 3000보다 큰 값의 데이터 수를 구하시오 ('age', 'f1', 'f2', 'f5', 'views'의 각 행별 합)

    에서 두번째 라인의 행단위로 합한다음 그값이 3000 보다 큰 값의 데이타 수를 구하라 것으로

    문제풀이는 아래와 같습니다

    cols = df.select_dtypes(exclude='object').columns

    cols

    df = df[cols]

    df.head()

    df = df.fillna(0)

    df = df.T

    df.head()

    print(sum(df.sum() > 3000))

    여기서 질문이 문제에서 행단위로 합한다음 그 값이 3000보다 큰 데이타 수를 구하라는

    의미는 단순한 워딩만 분석해 보면 아래 처리 이해 됩니다.

    즉 , age f1 ... 등등의 행의 합을 구하고 그 값이 3000이 넘는 수가 몇개냐의 의미로 해석되됩니다. 선생님의 문제 풀이가 이해가 안가는데 설명 좀 부탁드립니다,

    cols = df.select_dtypes(exclude="object").columns

    cols

    df = df[cols]

    df = df.fillna(0)

    df = df.T

    df['tot'] = df.sum(axis=1)

    print(df['tot'])

    (df['tot'] > 3000).sum()

    학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!

  • 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요

  • 먼저 유사한 질문이 있었는지 검색해보세요

답변 2

0

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

행(row) 에서 age + f1 + f2 + f5 + views 등의 합계를 구하기 위해서는

행과 열을 변경해서 기존의 컬럼 합계를 구하는 방식이 있습니다.

df = df.T
df.sum() 

그리고 나서 행과 열이 변경되었기 때문에 다음과 같이 데이터가 변경됩니다.

image.png

 

이제 df.sum()으로 컬럼별로 더하고 이 합계가 3000보다 크면 True, 작으면 False가 되는거죠!

여기서 True는 1, False는 0과 같습니다. 이를 sum()하면 조건에 맞는 개수가 됩니다.

sum(df.sum() > 3000)

 

부탁드려요!

질문과 코드가 줄내림 없이 모두 붙어 있어서 정확한 질문을 파악에 어려움이 있습니다.

혹시 또 질문한다면 코드 블록을 사용해서 질문과 코드를 분리 부탁드려요 (줄내림 등)

image.png

0

안녕하세요, 인프런 AI 인턴입니다. ingoout님께서 질문하신 내용에 대해 간단히 설명드리겠습니다.

작업형 1 모의문제 2번의 문제4에 대해 질문을 주셨습니다. 이 문제는 주어진 데이터에서 object 타입의 컬럼을 삭제하고, 결측치를 0으로 대체한 후, 각 행의 합이 3000보다 큰 행의 개수를 세는 문제입니다.

코드 설명

  1. 컬럼 선택:

    • cols = df.select_dtypes(exclude='object').columns를 통해 object 타입이 아닌 나머지 컬럼만 선택합니다.
  2. 데이터프레임 필터링:

    • df = df[cols]로 선택한 컬럼만을 포함하는 데이터프레임을 만듭니다.
  3. 결측치 대체:

    • df = df.fillna(0)로 모든 결측치를 0으로 대체하여 데이터의 누락된 값을 채웁니다.
  4. 행 단위 합계 계산:

    • df['tot'] = df.sum(axis=1)를 사용해 각 행의 합계를 새로운 컬럼 ‘tot’에 저장합니다.
  5. 조건에 맞는 행의 개수 세기:

    • (df['tot'] > 3000).sum()을 사용하여 각 행의 합이 3000보다 큰 행의 개수를 셉니다.

문제 이해의 핵심

  • “행 단위로 합한 다음 그 값이 3000보다 큰 값의 데이터 수”라는 것은 각 행의 모든 수치형 데이터의 합계가 3000을 넘는 행이 몇 개인지 확인하는 것입니다.

관련 질문 및 답변 링크

이해를 돕기 위해 추가적인 설명을 드렸습니다. 이 문제의 요구 사항에 맞는 코드 흐름을 이해하는 데 도움이 되기를 바랍니다.

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

ingoout님의 프로필 이미지
ingoout

작성한 질문수

질문하기