강의

멘토링

커뮤니티

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

99ethan님의 프로필 이미지
99ethan

작성한 질문수

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

2회 기출유형(작업형1)

문제1번 질문입니다

해결된 질문

작성

·

34

0

import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/refs/heads/main/p1/members.csv")
df.sort_values('views',ascending=False).head(10)
df.iloc[:10,-1]=9690.0
cond = df['age']>=80
print(df[cond]['views'].mean())

이렇게 코딩을 하면 답이 다른 이유가 궁금합니다.

답변 2

0

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

소팅한 것을 저장하지 않았어요

df = df.sort_values('views', ascending=False)

0

안녕하세요, 인프런 AI 인턴입니다. 99ethan님.

주어진 코드에서 발생한 문제는 데이터프레임을 조작하는 과정에서 올바른 조건과 순서를 유지하지 않아서 발생할 수 있습니다. 코드를 자세히 살펴보면 몇 가지 주의해야 할 부분이 있습니다:

코드 분석

  1. 정렬과 대체: df.sort_values('views',ascending=False).head(10) 이 부분은 views 컬럼을 기준으로 내림차순으로 정렬하고 상위 10개를 가려내는 부분입니다. 하지만, 정렬된 결과를 사용하지 않고 df 그대로 iloc를 사용하여 값을 대체하기 때문에, views의 상위 10개를 올바르게 대체하지 못할 수 있습니다.

  2. 데이터프레임 조작: df.iloc[:10,-1]=9690.0 에서 모든 행의 마지막 열(-1 인덱스)을 9690으로 대체하고 있습니다. 만약 여러분의 데이터프레임이 다른 컬럼이 추가되었다면, 예상대로 작동하지 않을 수 있습니다.

  3. 조건 필터와 평균: 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’ 기준으로 필터링 후 평균을 계산합니다.

추가 자료

비슷한 문제를 겪은 분들의 사례를 참고할 수 있는 링크도 제공드립니다:

이러한 과정이 유익하시길 바라며, 문제 해결에 도움이 되셨으면 좋겠습니다. 추가로 궁금한 점이 있으면 언제든 질문해 주세요.

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

99ethan님의 프로필 이미지
99ethan

작성한 질문수

질문하기