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

jongho님의 프로필 이미지

작성한 질문수

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

작업형1 모의문제1

작업형1모의문제1 - 문제2 질문

해결된 질문

24.05.28 16:03 작성

·

123

0

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

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

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

문제2의 세번째 조건이 "컬럼의 'gold' 값을 가진 데이터 수를 출력하세요!"라고 나와 있습니다.

강의에서는 아래 코드와 같이 sum으로 풀이해주셨는데 , sum 대신 len으로 작성해도 동일한 결과가 나옵니다.

sum이나 len 어떤 걸 사용해도 상관없는 건지 궁금합니다. 데이터 수이기 때문에 len이 더 정확한 답일까요?

print(sum(df[df['f3'] == 'gold']))

 

답변 2

0

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

2024. 05. 28. 20:24

sum()

데이터 프레임에서 조건에 따른 수를 알고 싶다 -> sum()을 사용하는 것이 좋습니다.

cond = df['a'] > 10

sum(df[cond]) 의 결과는 True(1)의 총합을 계산합니다.

전체 데이터 10개 중 10보다 큰 값이 5개라면 5가 출력됩니다.

 

len()

데이터프레임의 행의 수를 알고 싶다면 len()을 사용합니다.

cond = df['a'] > 10

len(df[cond]) 을 사용하면 False도 한 행이므로 모두 계산되어 나옵니다.

전체 데이터 10개가 출력됩니다.

 

count()

count()는 결측치를 제외하고 카운트합니다.

따라서 결측치 제거 후 len() 적용한 것과 동일합니다.

혹시 count() 사용하는 풀이를 혹시 제가 한 적 있을까요??
자칫 잘못 카운트할 가능성이 있어 입문자에게는 결측치 제거 후 len()을 사용하는 것을 추천합니다.


수치형 데이터: sum(), len(), count() 모두 사용 가능

범주형 데이터: len(), count()는 사용 가능하지만 sum()은 의미 없음

jongho님의 프로필 이미지
jongho
질문자

2024. 05. 29. 13:55

sum()만 사용해서 풀이해주셨습니다!

답변 감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

2024. 05. 28. 16:06

안녕하세요, 인프런 AI 인턴입니다. jongho님, 질문 주신 sumlen의 사용에 대해 도움이 될 만한 정보를 찾았습니다.

먼저, sum 함수와 len 함수는 비슷한 상황에서 사용되어 비슷해 보일 수 있지만, 사용 목적과 방식에 차이가 있습니다. sum 함수는 주로 조건을 만족하는 항목들의 개수를 구할 때 사용되며, 조건의 결과(True/False)에 따라 합산을 진행합니다. 각 True는 1로, False는 0으로 계산하여 합산합니다. 반면, len 함수는 어떤 컬렉션(리스트, 데이터프레임 등)의 길이, 즉 요소의 총 개수를 구하는 데 사용됩니다.

여러분의 경우와 유사한 질문에 대한 답변이 여기에 있습니다:

  • 4-1, 문제 3번, 2번 풀이 sum(),len()에서, 데이터의 수를 구할 때 sumlen 사용법의 차이를 설명해주고 있습니다. 기본적으로 sum(df["f3"] == "gold")의 사용은 df["f3"] == "gold" 조건을 만족하는 항목들이 True로 반환되며, 이 True값들(1로 간주)을 모두 합산하여 조건을 만족하는 항목의 개수를 나타냅니다. 반면, len(df[df["f3"] == "gold"])의 경우는 조건을 만족하는 행들로 구성된 새로운 데이터프레임을 생성하고, 이 데이터프레임의 길이(행의 수)를 반환합니다. 두 방식 모두 조건을 만족하는 데이터의 개수를 구하는 데 사용될 수 있으나, 실행 과정에서의 처리 방식에 차이가 있습니다.

특별히, 작성하신 코드의 컨텍스트를 기준으로 sum을 사용할 경우 오류가 발생할 수 있습니다. sum 함수는 Boolean 값을 합산할 때 주로 사용되기 때문에 sum(df[df['f3'] == 'gold'])는 예상치 못한 결과를 초래할 수 있습니다. 아마 예제 코드에서 의도하신 바는 sumlen을 혼동하신 것으로 보이며, 해당 조건에서 데이터의 수를 구하기 위해서는 len(df[df['f3'] == 'gold'])가 적절한 코드가 됩니다.

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

jongho님의 프로필 이미지

작성한 질문수

질문하기