8회 1유형 1번 문제
코딩 대한민국님의 정답과 저의 정답이 달라 왜 그럴까 살펴보았습니다.
데이터가 무작위 생성이라 그럴 수 밖에 없다는 것을 깨닳았지만,
남는 의문점이 있어 질문올립니다.
우선, 코딩 대한민국님의 정답입니다.
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라고 정의하신것 같습니다.
확인 부탁드립니다.
Answer 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번째로 큰 도시"
좋은 질문 감사드리고, 계속 이렇게 깊이 있게 고민하시면 실력이 많이 늘 것입니다! 👍
수강 기한 연장 문의
0
74
4
코랩 기본 사용법 문의
0
63
1
8회 작업형1 문제2
0
59
2
4회 2유형 1번 문제
0
48
1
다중 선형 회귀 상수항 추가 관련 질문
0
88
2
10회 작업형1번문제2번 문제 풀이 틀림
0
74
2
답변 항상 감사드립니다. 질문 있습니다.
0
68
2
원핫인코딩 이후 칼럼 불일치 문제
0
66
2
6회 1유형 3번 문제
0
63
1
코딩 방법에 따른 채점 기준에 관하여 질문있습니다.
0
77
1
데이터 파일들은 어디서 다운받을 수 있나요?
0
79
2
선형회귀분석 질문
0
47
2
링크가안보여요 어디에올라와있는거죠대체 ? 구글코랩파일이요
0
82
4
범주형 인코딩
0
83
2
원핫인코딩시 라벨링질문
0
78
1
인코딩 질문!!
0
72
1
유형2 질문!!
0
58
2
6회 작업형 2 문제 1
0
61
1
작업형 유형 2에서,,, train, test, split 시 성능
0
122
2
항상 모델학습하실때 train_test_split일부러 안하시는 이유가 있는건가요?
0
94
2
Label Encoding 관련 질문
0
99
3
상수항 질문드립니다. (6회 작업형 2문제)
0
49
1
2유형 답안 제출 시 문의
0
59
1
help, dir 사용법
0
93
2

