강의

멘토링

커뮤니티

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

이진형님의 프로필 이미지
이진형

작성한 질문수

[2025년 최신 기출 반영] 빅데이터 분석 기사 실기 시험 100% 합격 ! 기출 문제의 패턴이 보인다 !

8회 1유형 1번 문제

해결된 질문

작성

·

39

·

수정됨

0

코딩 대한민국님의 정답과 저의 정답이 달라 왜 그럴까 살펴보았습니다.
데이터가 무작위 생성이라 그럴 수 밖에 없다는 것을 깨닳았지만,
남는 의문점이 있어 질문올립니다.

우선, 코딩 대한민국님의 정답입니다.

import pandas as pd

df1 = df.groupby('region')['coffee_servings'].mean()
df2 = df1.sort_values(ascending=False)

df3 = df.loc[ df['region'] == 'Central', :]
df3.nlargest(3, 'coffee_servings')

 

데이터 생성 코드입니다.

# 데이터 생성
regions = ['North', 'South', 'East', 'West', 'Central']
cities = ['City_' + str(i) for i in range(1, 51)]

data = {
    'city': random.choices(cities, k=100),
    'region': random.choices(regions, k=100),
    'coffee_servings': [random.randint(1, 500) for _ in range(100)]
}

regions = 100개의 observation이 North, South, East, West, Central 중 무작위 1개 값을 가짐
cities = 100개의 observation이 1~51번 중 무작위 1개 값을 가짐


낮은 확률이지만, 이렇게 생성된 observation 중
중복되어 나타나는(예: "city#40 + Central") 데이터가 존재 할 수 있다고 생각합니다.

 

import pandas as pd

df1 = df.groupby('region')['coffee_servings'].mean()
df2 = df1.sort_values(ascending=False)

df3 = df.loc[ df['region'] == 'Central', :]
df4 = df3.sort_values('city', ascending=False)
df5 = df4.groupby('city')['coffee_servings'].sum()
df6 = df5.sort_values(ascending = False)
result = df6.iloc[2]
result

따라서 이렇게 groupby로 한번 더 정리하여 풀었습니다.

이것도 정답일 수 있는 것일까요?
혹은 오답일까요?


추가) 8회 1유형 2번 문제
'전자 생산 비율'이 세 번째로 높은 국가의 '전자' 생산량을 x라고 정의하세요.
'농업' 생산량이 세 번째로 높은 국가의 '농업' 생산량을 y라고 정의하세요.

인데, 강의를 보니 코딩 대한민국님께서는 '전자 생산 비율'을 x라고 정의하신것 같습니다.
확인 부탁드립니다.

답변 1

0

코딩 대한민국님의 프로필 이미지
코딩 대한민국
지식공유자

좋은 질문 감사합니다!

문제를 다시 살펴보니, 질문자님께서 지적하신 부분이 매우 날카로운 통찰입니다.

문제 해석에 대하여

문제 1-2에서 "커피 소비량이 3번째로 많은 도시('city')의 커피 소비량"이라고 표현했는데, 이 표현이 두 가지로 해석될 수 있습니다:

제 정답의 의도 (nlargest 방식)

  • Central 지역의 모든 행 중에서 coffee_servings 값이 3번째로 큰 "행"을 찾는 것

  • 같은 도시가 여러 번 나타나도 각 행을 독립적으로 취급

질문자님의 접근 (groupby 방식)

  • 같은 도시가 여러 번 나타나면 합산하여, "도시별" coffee_servings 합계가 3번째로 큰 도시를 찾는 것

  • 실무적으로 더 합리적인 접근

정답 여부

질문자님의 풀이도 충분히 정답이 될 수 있습니다!

오히려 "도시의 커피 소비량"이라는 표현을 보면, 질문자님처럼 도시를 하나의 단위로 보고 groupby로 집계하는 것이 더 논리적으로 타당합니다.

다만, 제가 의도했던 것은:

  • 데이터의 각 행을 독립적인 관측치로 보고

  • 단순하게 "3번째로 큰 값"을 찾는 방식

  • 초보자 입장에서 가장 직관적이고 단순한 풀이

결론

  1. 제 정답 (nlargest): 문제를 가장 단순하게 해석한 풀이

  2. 질문자님 정답 (groupby): 실무적으로 더 정확하고 데이터의 의미를 고려한 풀이

두 가지 모두 타당한 접근이며, 이런 질문을 하신 것 자체가 데이터를 깊이 있게 이해하고 계신다는 증거입니다!

앞으로는 이런 애매함을 없애기 위해 문제를 다음과 같이 명확하게 수정하겠습니다:

  • "Central 지역에서 coffee_servings 값이 3번째로 큰 행의 값"

  • 또는 "Central 지역에서 도시별 총 coffee_servings가 3번째로 큰 도시"

좋은 질문 감사드리고, 계속 이렇게 깊이 있게 고민하시면 실력이 많이 늘 것입니다! 👍

이진형님의 프로필 이미지
이진형

작성한 질문수

질문하기