인프런 커뮤니티 질문&답변
문제1번 질문입니다
해결된 질문
작성
·
34
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. 99ethan님.
주어진 코드에서 발생한 문제는 데이터프레임을 조작하는 과정에서 올바른 조건과 순서를 유지하지 않아서 발생할 수 있습니다. 코드를 자세히 살펴보면 몇 가지 주의해야 할 부분이 있습니다:
코드 분석
정렬과 대체:
df.sort_values('views',ascending=False).head(10)이 부분은views컬럼을 기준으로 내림차순으로 정렬하고 상위 10개를 가려내는 부분입니다. 하지만, 정렬된 결과를 사용하지 않고df그대로iloc를 사용하여 값을 대체하기 때문에,views의 상위 10개를 올바르게 대체하지 못할 수 있습니다.데이터프레임 조작:
df.iloc[:10,-1]=9690.0에서 모든 행의 마지막 열(-1인덱스)을 9690으로 대체하고 있습니다. 만약 여러분의 데이터프레임이 다른 컬럼이 추가되었다면, 예상대로 작동하지 않을 수 있습니다.조건 필터와 평균:
cond변수는age컬럼이 80 이상인 데이터를 필터로 사용해서views값의 평균을 출력합니다. 이 부분은 동일하게 유지하지만, 위의 데이터 조작이 올바르게 되어야 이 부분이 의미있는 결과를 출력합니다.
해결 방법
정렬하고 나서, 상위 10개의 값을 올바르게 설정한 새로운 데이터프레임을 변수에 저장하고, 그 상태에서 값을 대체하면 좋습니다. 예를 들어:
# Import data
import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p1/members.csv")
# Sort and replace
df_sorted = df.sort_values('views',ascending=False).copy()
df_sorted.iloc[:10, df.columns.get_loc('views')] = 9690.0
# Filter and calculate mean
cond = df_sorted['age'] >= 80
print(df_sorted[cond]['views'].mean())
이 코드는 ‘views’컬럼을 정확하게 대체한 다음, ‘age’ 기준으로 필터링 후 평균을 계산합니다.
추가 자료
비슷한 문제를 겪은 분들의 사례를 참고할 수 있는 링크도 제공드립니다:
- 기출2 작업형 1번 문제 - 데이터 평준화 및 평균 계산: 데이터 조작 후 어떤 방식으로 결과를 계산할지 고민하는 분들을 위한 유용한 글입니다.
이러한 과정이 유익하시길 바라며, 문제 해결에 도움이 되셨으면 좋겠습니다. 추가로 궁금한 점이 있으면 언제든 질문해 주세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





