NLP

reset_index() 사용 방법

still..epochs 2023. 7. 27. 20:01

요즘 다시 자연어 처리 관련되 공부를 하고 있는데, 네이버 영화 리뷰 데이터를 다루기 전에 null 데이터를 확인하고 삭제하는 작업을 하였다. 그런데 문득 기계적으로 데이터를 삭제하고 나면 reset_index()를 사용해 왔는데 reset_index()를 하지 않을 경우에 어떤 문제가 발생하는지 궁금하여 찾아보고 기록한다.

 

1. 'reset_index()' 를 사용하지 않으면 이전의 인덱스 값들이 그대로 유지된다. 따라서 삭제된 행들로 인해 인덱스 값이 불연속적이거나 중복될 수 있다.

2. 기존 인덱스가 그대로 유지되기 때문에 해당 인덱스가 데이터프레임의 컬럼으로 존재하게 된다. 이는 원치 않는 중복 정보를 가질 수 있고, 데이터프레임을 다룰 때 문제를 일으킬 수 있다.

3. 다른 데이터 프레임과 'concat()' 또는 'merge()' 등을 사용하여 병합할 때 인덱스가 없는 데이터프레임은 병합 과정에서 문제를 일으킬 수 있다.

 

사용 방법은 다음과 같다.

# 먼저 해당 데이터의 정보를 확인한다.
train_data.info()

데이터는 총 15만개 이지만 document 컬럼에 널값이 아닌 데이터가 149995 개인 것으로보아 null 데이터가 존재하므로 이를 삭제해줘야한다.(데이터의 형태에 따라 null 값이라고 해서 무조건 삭제하는 것은 안되고, 해당 컬럼의 성격을 파악하고 삭제해야 한다. 네이버 영화리뷰 데이터에서는 상관 없으므로 그냥 삭제)

 

# 널 데이터를 확인한다.
null_train_data = train_data[train_data.isnull().any(axis=1)]
null_train_data

 

train_data = train_data.dropna(how = 'any')
train_data = train_data.reset_index(drop=True)
train_data.info()

reset_index는 데이터프레임에 .reset_index(drop=True) 형태로 사용하면 된다.

 

reset_index() 함수에 drop=True 옵션을 사용하면 기존 인덱스가 삭제되고 새로운 0부터 시작하는 정수 인덱스가 생성됩니다.

참고로, reset_index() 함수를 사용하더라도 기본적으로는 새로운 데이터프레임이 반환되며, 기존 데이터프레임은 변경되지 않습니다. 따라서 새로운 데이터프레임을 적절히 변수에 할당해야 합니다. 변경을 원하는 경우 inplace=True 옵션을 추가하여 원본 데이터프레임을 직접 변경할 수도 있습니다. 하지만 주의하여 사용해야 합니다. 예를 들어, df.reset_index(inplace=True)와 같이 사용할 수 있습니다.

 

 

출처 : 갓 chatGPT

'NLP' 카테고리의 다른 글

Kfold( Cross Validation 교차검증 )  (0) 2023.08.03
Confusion Matrix, Accuracy, Precision, Recall, F1 score  (0) 2023.08.02
Model 평가 및 지표들  (0) 2023.07.31