인프런 커뮤니티 질문&답변
작업형1 모의문제1의 문제3
해결된 질문
작성
·
69
0
문제3을 풀다가 궁금한 부분이 생겨서 질문합니다.
- 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)
- 마지막 방법으로 알려주신 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
와!! 질문을 너무 깔끔하게 정리해 작성해 주셔서 감사드립니다 🤩🤩🤩
 FutureWarning은 오류는 아니고 미래 버전에서는 문제가 발생할 수 있다는 내용이기에 무시해도 무방합니다.
 replace를 중복으로 사용하지 않고 딕셔너리로 만들어서 한번에 쓰면 나오지 않는데 입문자가 딕셔너리 형태를 어려워 하는 경향이 있어 쉽게 코딩했습니다.
- 네 맞습니다. 작업형1과 3은 정답만 찾으면 되는 문제입니다. 
 과정은 변환으로 저장하던 하지 않던 상관 없습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 신수아님께서 작업형1 모의문제1의 문제3에서 변환 과정과 출력에 대해 질문을 주셨네요.
- pandas에서 사용한 - replace함수는 값 변환에 있어 매우 유용합니다. 현재 발행된 FutureWarning은 향후 버전에서 이 함수의 동작이 변경될 수 있다는 점을 미리 알려주는 것입니다. 지금 당장은 기능적으로 문제가 없으니 무시하셔도 됩니다. 그러나 코드의 호환성을 유지하려면 경고가 나타난 부분을 점검하고, 미래의 pandas 버전에서도 오류 없이 작동하도록 코드를 변경하는 것이 좋습니다.
- sum(df['f3']=='silver')*1등의 방법은 각 그룹별로 값을 곱해 총합을 계산하는 방법으로, 변환 과정 없이도 원하는 결과를 얻을 수 있습니다. 문제의 지시 사항에 따라 데이터 변환 없이도 답을 구할 수 있지만, 이러한 방법이 허용되는지는 과제나 시험의 조건에 따라 다를 수 있습니다. 일반적으로는 명시된 변환 과정을 따르는 것이 바람직합니다.
더 많은 참고 자료로 아래 링크들을 추천드립니다:
- 문제3 변환 관련 문의: 결측값 처리와 replace 함수 사용에 대한 예시를 확인할 수 있습니다.
- 작업형1 모의문제1의 문제3에 대해 여쭙습니다~: pandas의 loc를 사용한 변환 방법을 소개하고 있습니다.
이 링크들을 통해 유사한 문제와 해결 방법을 알아보실 수 있습니다. 또한, 이 과정에서 실제 데이터 변환과 결과를 비교하면서 학습하는 데 큰 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.






