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

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

jinu220님의 프로필 이미지
jinu220

작성한 질문수

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

작업형1 모의문제1

문제3 변환 관련 문의

해결된 질문

작성

·

308

1

# your code
#데이터 변환은 replace!!
import pandas as pd
df = pd.read_csv('members.csv')
df = df.dropna(subset=['views'])
df['f3'] = df['f3'].fillna(0)
df = df.replace('silver',1).replace('gold',2).replace('vip',3)
df.head(10)

위 처럼 numpy를 불러오지 않고, f3컬럼에 결측값을 0으로 먼저 채운 후 변환문을 사용했는데 결과와 데이터프레임이 같아서

혹시 이 방법으로 해도 상관 없는건지 여쭤보려고 합니다~

 

다시 확인좀 하려고 지웠다가 다시 문의합니다!

그리고 map사용 시

#map
import pandas as pd
df = pd.read_csv("members.csv")
df = df.dropna(subset=['views'])

dict_list = {np.nan:0, 'silver':1, 'gold':2, 'vip':3}
df['f3'] = df['f3'].map(dict_list)

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

numpy를 불러야하는것이 맞겠죠?..

위에서 이미 한번 numpy 불러와서 에러가 발생하지 않은 것 같아서요.

답변 1

1

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

1. 네, 넘파이를 불러오지 않고, f3컬럼에 결측값을 0으로 먼저 채운 후 변환문을 사용해도 됩니다.
2. 잘 이해하고 계시네요! np가 들어가면 import numpy as np가 필요한데 이미 한번 불러와서 에러가 발생하지 않는 것 맞습니다.

추가로 loc를 활용해 아래처럼 푸는 방법도 있습니다 :)

cond1 = df['f3'] == 'silver'
cond2 = df['f3'] == 'gold'
cond3 = df['f3'] == 'vip'

df.loc[cond1, 'f3'] = 1
df.loc[cond2, 'f3'] = 2
df.loc[cond3, 'f3'] = 3

jinu220님의 프로필 이미지
jinu220
질문자

언제나 빠른 답변 감사드립니다.

추가 내용도 잘 숙지하겠습니다.

 

감사합니다~

 

jinu220님의 프로필 이미지
jinu220

작성한 질문수

질문하기