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

kyb1053님의 프로필 이미지
kyb1053

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

기초부족.(신용카드 분류 문제) -> copy 문

작성

·

21

0

image.png

안녕하십니까 선생님..!

여쭤볼꼐 있어 질문드립니다.

신용카드 사기검출 데이터셋에서

card_df = pd.read_csv('creditcard.csv') < 데이터 프레임을 불러왓고

df_copy = df.copy() 라고 해서 분석을 진행하는데

df_copy = card_df.copy() = df.copy() 인 건가요 ??

어떻게 df.copy가 card_df로 인식하는지 궁금합니다..!

image.png

답변 1

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

  1. 아래 get_train_test_dataset() 함수로 card_df가 입력됩니다.

X_train, X_test, y_train, y_test = get_train_test_dataset(card_df)

  1. 그리고 get_train_test_dataset()은 인자로 card_df를 입력 받아서, 이를 다시 get_preprocessed_df()에 인자로 입력합니다.

def get_train_test_dataset(df=None):

# 인자로 입력된 card_df DataFrame의 사전 데이터 가공이 완료된 복사 DataFrame 반환

df_copy = get_preprocessed_df(df)

...........

 

  1. 그리고, get_preprocessed_df() 는 인자로 card_df를 받지만 이를 건들지 않고, df.copy()로 새로운 DataFrame을 생성하고, 이 DataFrame에 Scaler, 컬럼명 변경, 피처 삭제 작업하고 이를 반환합니다.

def get_preprocessed_df(df=None):

df_copy = df.copy()

scaler = StandardScaler()

amount_n = scaler.fit_transform(df_copy['Amount'].values.reshape(-1, 1))

# 변환된 Amount를 Amount_Scaled로 피처명 변경후 DataFrame맨 앞 컬럼으로 입력

df_copy.insert(0, 'Amount_Scaled', amount_n)

# 기존 Time, Amount 피처 삭제

df_copy.drop(['Time','Amount'], axis=1, inplace=True)

return df_copy

 

  1. get_preprocessed_df(card_df)가 반환하는 DataFrame은 정확히는 card_df가 아닙니다. card_df는 변경이 없고, card_df를 copy()한 DataFrame에 데이터 가공작업을 수행한 뒤 반환하게 됩니다.

혹시 답변에 부족한 부분이 있으시면 다시 글 부탁드립니다 ^^

 

감사합니다.

kyb1053님의 프로필 이미지
kyb1053

작성한 질문수

질문하기