inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] 처음하는 파이썬 머신러닝 부트캠프 (쉽게! 실제 캐글 문제 풀며 정리하기) [데이터분석/과학 Part2]

다르게 적용해보는 Feature Engineering1 (업데이트)

강의 중 에러 질문

736

kanghwan.cha

작성한 질문수 9

0

다르게 적용해보는 Feature Engineering1

5:50

df_all['Age'] = df_all.groupby(['Title', 'Pclass'])['Age'].apply(lambda x: x.fillna(x.median()))

에서 아래와 같은 에러가 뜹니다.

  11613         if not value.index.is_unique:
  11614             # duplicate axis
  11615             raise err
  11616 
> 11617         raise TypeError(
  11618             "incompatible index of inserted column with frame index"
  11619         ) from err
  11620     return reindexed_value

TypeError: incompatible index of inserted column with frame index

이전 챕터에서

df_all["Age"].fillna(df_all.groupby(['Title', 'Pclass'])["Age"].transform("median"), inplace=True)

위와 같은 진행했었던 기억이 있는데 비슷한 맥락이 맞나요?

아직 모르는게 많아서 강의자료에서 에러가 뜨면 턱턱 막히네요.... 😢

 

python 머신러닝 pandas kaggle

답변 1

0

잔재미코딩 DaveLee

안녕하세요. 답변 도우미입니다.

우선 전체 강의자료는 그대로만 순차적으로 실행하시면 에러가 뜨지 않거든요. 아마 중간에 실행 순서를 달리 하셨거나, 임의 코드를 넣어서 실행을 하시면서 에러가 나신 것으로 이해가 됩니다. 그렇다면, 아예 새로 강의 자료를 다운받으셔서 영상과 함께 테스트해보시면 에러도 나지 않고, 당황하지 않으실꺼예요~~

위 문의와 관련해서 보다 상세히 설명드리면, 맞습니다. 두 코드 조각은 모두 Age 컬럼에 있는 결측치를 TitlePclass를 기준으로 그룹화한 후, 해당 그룹의 Age 컬럼의 중앙값으로 채우는 방법을 시도하고 있어요.

첫 번째 코드는 groupbyapply를 사용하는데, 이 때 apply 함수 내에서 사용된 lambda 함수를 통해 각 그룹에 대해 fillna를 호출하고 있습니다. x는 각 그룹의 Age 컬럼을 나타내며, x.median()은 그 그룹의 중앙값을 계산합니다.

df_all['Age'] = df_all.groupby(['Title', 'Pclass'])['Age'].apply(lambda x: x.fillna(x.median()))

 

두 번째 코드는 fillna를 직접 호출하지 않고, groupbytransform을 통해 같은 작업을 수행하는 코드입니다. transform("median")은 각 그룹의 중앙값을 계산하고, 이를 fillna의 인자로 넘겨줍니다. inplace=True 파라미터는 df_allAge 컬럼을 직접 수정합니다.

df_all["Age"].fillna(df_all.groupby(['Title', 'Pclass'])["Age"].transform("median"), inplace=True)

 

에러 메시지 TypeError: incompatible index of inserted column with frame index는 첫 번째 코드에서 df_all['Age']에 새로운 값들을 할당하려 할 때, 반환된 시리즈의 인덱스와 df_all의 인덱스가 일치하지 않을 때 발생합니다. 이는 apply 함수가 반환한 결과가 원래 데이터프레임과 다른 인덱스를 가지고 있을 때 발생할 수 있습니다.

이 문제를 해결하기 위해 두 번째 코드처럼 transform을 사용하는 것이 더 안정적인 방법일 수 있습니다. transform은 원본 데이터프레임의 인덱스를 유지한 채로 결과를 반환하므로 이런 종류의 인덱스 불일치 문제가 발생하지 않습니다.

판다스의 이런 작동 방식은 처음 접할 때 다소 혼란스러울 수 있으나, 각 함수가 어떤 결과를 반환하는지, 그리고 인덱스가 어떻게 유지되는지를 이해하면 훨씬 수월해집니다. 데이터 분석에서는 이런 세부적인 부분에 대한 이해가 중요하므로, 실습을 통해 차근차근 익혀가시길 권합니다.

감사합니다.

자료 공유 질문

0

52

1

Ascii 에러 관련하여 질문드립니다

0

73

1

고차원 데이터 질문

0

46

0

test / train 데이터 나누기

0

93

1

세션4 범주형 데이터 분석 패턴 강의 질문

0

197

2

pandas 2.2.2, xgboost 2.1.3 에러 해결 방법

0

209

1

sklearn v1.5.1

0

166

1

머신러닝 적용을 위한 Feature Engineering 작업1

0

174

2

missingno 대체

0

163

1

scikit-learn 1.5.1 matplotlib 3.9.2

0

127

1

환불문의

0

259

1

자료공유를 받으려고 하는데 에러가 납니다.

0

154

1

iplot에서 항상 에러나는 분 안계신가용?

0

219

1

사망 여부 영향 가능성

0

139

1

섹션4_인코딩 이해하고 적용해보기(원핫인코딩) 질문

0

184

1

df.corr(numeric_only=True).iplot() 에러 해결 어떻게 해야되나요?

0

275

1

주피터 노트북 201_REGRESSION_BIKE_SHARING_MODELS 중 질문

0

242

1

3강 강의 자료 코드 관련 질문입니다

1

334

1

맥 사용자 mkdir .kaggle 했는데 파일이 안만들어집니다.

0

410

1

Bayesian Optimization에서 optimizer.maximize()함수를 더이상 지원 안한다고 합니다.

0

873

2

Bayesian Optimization LightGBM 적용

0

451

2

하이퍼 파라미터 튜닝 기법 적용하기 실행값이 미묘하게 달라요.

1

336

1

중복된 코드 수정 요청 - 자전거 공유 문제 이해와 EDA3

0

211

1

cross_val_score 에러

0

455

1