인프런 커뮤니티 질문&답변
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번째로 큰 값"을 찾는 방식
초보자 입장에서 가장 직관적이고 단순한 풀이
결론
제 정답 (nlargest): 문제를 가장 단순하게 해석한 풀이
질문자님 정답 (groupby): 실무적으로 더 정확하고 데이터의 의미를 고려한 풀이
두 가지 모두 타당한 접근이며, 이런 질문을 하신 것 자체가 데이터를 깊이 있게 이해하고 계신다는 증거입니다!
앞으로는 이런 애매함을 없애기 위해 문제를 다음과 같이 명확하게 수정하겠습니다:
"Central 지역에서 coffee_servings 값이 3번째로 큰 행의 값"
또는 "Central 지역에서 도시별 총 coffee_servings가 3번째로 큰 도시"
좋은 질문 감사드리고, 계속 이렇게 깊이 있게 고민하시면 실력이 많이 늘 것입니다! 👍





