GOOD4ME

[pandas] Index contains duplicate entries, cannot reshape 본문

개발.오류.정리/Python

[pandas] Index contains duplicate entries, cannot reshape

de_youn 2022. 11. 28. 15:55
반응형
무엇이 문제인가?

 

필자는 모 기업에서 데이터 인프라 및 분석 플랫폼 구축을 하고 있다.

플랫폼 구축을 하며
몇 가지 기능을 테스트하던 중,
Pandaspivot()을 특정 데이터에 적용해보니 하단의 오류가 발생한 것을 확인하였다.

...
Index contains duplicate entries, cannot reshape

상기의 오류를 직역해보면 대충,
"인덱스가 중복된 값을 포함하여, reshape이 불가하다" 이다.

음... 사용한 데이터는 실시간으로 적재되는 제조데이터인데
실시간 데이터에 중복이 포함될 수가 있을까❓❓
인덱스가 "2022-11-28 11:12:32" 같은 시계열 형태인데,
중복이 될 수 없다고 판단했기에 위의 의문을 갖게 되었다.

 

중복 데이터가 있는지 확인해보자

 

문제가 발생한 데이터는 
중복된 데이터가 언제 발생했는지 확인하기 위해,
하단과 같이 가공하였다.

dup_chk_df = df.groupby('date', as_index=False).agg({'pivot_col_name':','.join, 'pivot_val_name':'first'})
dup_df_list = dup_chk_df['f_meainspcd'].tolist()

for i, dup_val in enumerate(dup_df_list, 0):
  dup_val_list = dup_val.split(',')
  if len(dup_val_list) != len(set(dup_val_list)):
    print(i)

 

상기 코드를 실행해보니,

중복 행 번호 출력 화면


대량의 데이터들이 중복됐던 것이다...😥😥
데이터가 3,559,693개의 행9개의 열로 이루어져 있어서,
어느 정도 중복은 있을 거라 예상했지만 저렇게 많을 줄은 몰랐다...😂😂😂😂
실제로 데이터를 보여주면 확실한데,

외부 유출이 불가하여 상기처럼 행 번호만 보여줄 수밖에 없다...😣

실제로 데이터를 확인해보니, 정말 중복된 데이터들이었으며,
이 문제를 해결하기 위해 중복행을 제거하는 기능을 적용한 후,
다시 pivot() 기능을 적용해보았다.

 

중복 제거 후, 오류 해결이 되었는가?

 

우선 중복 제거 기능을 적용해보니,
기존 3,559,693개의 행에서 3,361,363개의 행으로
총 198,330개의 행이 제거되었다❗❗

이후, pivot() 기능 적용 결과
원하던 대로 데이터의 형태가 바뀐 것을 확인할 수 있었다😁😁

반응형
Comments