인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

신수아님의 프로필 이미지

작성한 질문수

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

작업형1 모의문제1

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

해결된 질문

작성

·

37

0

문제3을 풀다가 궁금한 부분이 생겨서 질문합니다.

  1. f3 컬럼의 결측치는 0, silver는 1, gold는 2, vip는 3 으로 변환하는 과정에서 1,2,3을 문자형으로 했을 때는 제대로 나오는데, 숫자형으로 진행하면 오류가 납니다.

    아래 제 제가 작성한 코드와 오류 내용입니다.

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



#views 컬럼에 결측치가 있는 데이터(행)을 삭제하고,
# print(df.isnull().sum())

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

# f3 컬럼의 결측치는 0, silver는 1, gold는 2, vip는 3 으로 변환한 후 

# print(df.head(10))
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(df.head(10))

#총 합을 정수형으로 출력하시오
# print(df.info())
df['f3']=df['f3'].astype('int')
# print(df.info())

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

출력값 =>133

<ipython-input-136-3e83f178c7e6>:20: 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)

 

  1. 마지막 방법으로 알려주신 sum의 방법의 경우 문제에서 제시하는 값을 변환하고 총 합을 출력하라는 지시에서 값을 실제로 변환하지는 않은 것 같은데.. 답만 맞으면 괜찮은 걸까요?

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

#views 컬럼에 결측치가 있는 데이터(행)을 삭제하고,
# print(df.isnull().sum())

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

# f3 컬럼의 결측치는 0, silver는 1, gold는 2, vip는 3 으로 변환한 후 

r1=sum(df['f3']=='silver')*1
r2=sum(df['f3']=='gold')*2
r3=sum(df['f3']=='vip')*3

print(r1+r2+r3)

=>133

 

답변 2

1

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

와!! 질문을 너무 깔끔하게 정리해 작성해 주셔서 감사드립니다 🤩🤩🤩


  1. FutureWarning은 오류는 아니고 미래 버전에서는 문제가 발생할 수 있다는 내용이기에 무시해도 무방합니다.


    replace를 중복으로 사용하지 않고 딕셔너리로 만들어서 한번에 쓰면 나오지 않는데 입문자가 딕셔너리 형태를 어려워 하는 경향이 있어 쉽게 코딩했습니다.

  2. 네 맞습니다. 작업형1과 3은 정답만 찾으면 되는 문제입니다.
    과정은 변환으로 저장하던 하지 않던 상관 없습니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 신수아님께서 작업형1 모의문제1의 문제3에서 변환 과정과 출력에 대해 질문을 주셨네요.

  1. pandas에서 사용한 replace 함수는 값 변환에 있어 매우 유용합니다. 현재 발행된 FutureWarning은 향후 버전에서 이 함수의 동작이 변경될 수 있다는 점을 미리 알려주는 것입니다. 지금 당장은 기능적으로 문제가 없으니 무시하셔도 됩니다. 그러나 코드의 호환성을 유지하려면 경고가 나타난 부분을 점검하고, 미래의 pandas 버전에서도 오류 없이 작동하도록 코드를 변경하는 것이 좋습니다.

  2. sum(df['f3']=='silver')*1 등의 방법은 각 그룹별로 값을 곱해 총합을 계산하는 방법으로, 변환 과정 없이도 원하는 결과를 얻을 수 있습니다. 문제의 지시 사항에 따라 데이터 변환 없이도 답을 구할 수 있지만, 이러한 방법이 허용되는지는 과제나 시험의 조건에 따라 다를 수 있습니다. 일반적으로는 명시된 변환 과정을 따르는 것이 바람직합니다.

더 많은 참고 자료로 아래 링크들을 추천드립니다:
- 문제3 변환 관련 문의: 결측값 처리와 replace 함수 사용에 대한 예시를 확인할 수 있습니다.
- 작업형1 모의문제1의 문제3에 대해 여쭙습니다~: pandasloc를 사용한 변환 방법을 소개하고 있습니다.

이 링크들을 통해 유사한 문제와 해결 방법을 알아보실 수 있습니다. 또한, 이 과정에서 실제 데이터 변환과 결과를 비교하면서 학습하는 데 큰 도움이 될 것입니다.

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