강의

멘토링

로드맵

Inflearn brand logo image

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

SH님의 프로필 이미지
SH

작성한 질문수

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

작업형1 모의문제1

작업형1 모의문제1 문제3

해결된 질문

작성

·

43

·

수정됨

0

# your code
import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/lovedlim/inf/main/p1/members.csv")

#1
#print(df.shape)
df = df.dropna(subset=['views'])
#print(df.shape)

#2
df['f3'] = df['f3'].fillna(0)
df['f3'] = df['f3'].replace('silver',1)
df['f3'] = df['f3'].replace('gold',2)
df['f3'] = df['f3'].replace('vip',3)

print(int(df['f3'].sum()))

이렇게 작성 후 실행하면 결과가 밑에 처럼 나옵니다.

133
<ipython-input-57-2ecc61ea0b50>:14: FutureWarning: Downcasting behavior in `replace` is deprecated and will be removed in a future version. To retain the old behavior, explicitly call `result.infer_objects(copy=False)`. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`
  df['f3'] = df['f3'].replace('vip',3)

문제 3번에서 두번째 점과 관련된 질문입니다.

강의에서 알려주신 넘파이를 꼭 사용해야 하나요?

이전 강의에서 넘파이에 대한 내용이 따로 언급이 없으셔서 혼자 문제 풀어볼 때 넘파이 사용하지 않고 풀어본 것인데.. 깔끔하게 133만 나오지 않아서요ㅜㅜ

답변 2

0

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

  1. 넘파이 사용하지 않아도 됩니다. 풀이하신 방식에 문제가 없어요!

  2. replace 함수를 여러번 사용해서 발생한 문제인데 무시해도 무방합니다.
    시험에서도 정답을 직업 입력하는 방식으로 진행되기 때문에 결과만 확인이 가능하면 됩니다.

또는 이렇게 풀 수 있어요 (워닝 없음)

# 2. 'f3' 컬럼의 결측치는 0으로 채움
df['f3'] = df['f3'].fillna(0)

# 3. 문자 값을 숫자로 변환 (map 사용)
map_dict = {'silver': 1, 'gold': 2, 'vip': 3}
mapped = df['f3'].map(map_dict)

0

안녕하세요, 인프런 AI 인턴입니다. simhoon1023님께서 작업형1 모의문제1의 문제3에서 replace 함수 사용과 관련된 질문을 주셨군요.

질문 주신 코드는 pandasreplace 메서드를 사용하여 f3 컬럼의 값을 변환하는 과정에서 발생하는 FutureWarning과 관련이 있습니다. 이 경고는 향후 pandas의 버전이 업데이트될 때 해당 함수의 동작이 변경될 수 있음을 알려주는 것입니다. 현재로서는 기능적으로 문제를 일으키지 않으므로 무시하셔도 괜찮습니다. 하지만, futureWarning이 불편하실 경우, pandas의 다른 변환 방법을 고려할 수 있습니다.

numpy 없이도 동일한 변환 결과를 얻을 수 있으며, 다양한 방법으로 문제를 해결할 수 있습니다. 아래는 대안적인 방법들을 소개한 링크들입니다:

  1. 문제3 변환 관련 문의: replace 메서드를 여러 번 호출하는 대신 딕셔너리를 활용하여 한 번에 값을 변환하는 방법을 설명하고 있습니다.

  2. 작업형1 모의문제1의 문제3에 대해 여쭙습니다~: pandasloc 메서드를 이용하여 변환하는 방법을 소개하고 있습니다.

이와 같은 방법들은 길고 복잡한 코드를 간소화하여 향후 유지보수에 도움이 될 수 있습니다. 해당 문제에서는 코드의 단순성보다 결과적으로 정확한 합계(133)를 출력하는 것이 중요합니다.

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

SH님의 프로필 이미지
SH

작성한 질문수

질문하기