자신에게 친절할 것 :)

Data Science/Pandas

[데이터 전처리] 중복값 duplicate value 찾기, 처리하기

Tashapark 2024. 6. 17. 18:31
728x90
반응형

# 코드잇 데이터 사이언티스트 강의 듣는 중


 

<중복값 duplicate value 찾기>

 

1) .duplicated() 

airbnb_df.duplicated() #true 중복 값.

 

 

 

 

--> 결측 값 여부에 따라서 true or false // 있으면 True

 

 

 

 

- 이거로는 총 개수 확인이 어렵기 때문에 .sum()을 해줌

airbnb_df.duplicated().sum()

#2


#중복을 인덱싱 한 값에서도 sum 확인 가능. 대신 인덱싱은 풀고 조건만 넣어야 함. 
#first와 last의 값은 같지만, False의 값은 예외도 추가되서 더 많아짐. 
airbnb_df.duplicated(subset='id').sum()
#6

 

--> 이건 전체 값이 중복되는 지 여부가 디폴트임.

 

- 인덱싱하면

airbnb_df[airbnb_df.duplicated()]

 

--> but, 이렇게 모든 값이 같은 경우는 드묾.

 

 


- 특정 벡터가 같은 지 확인 --> subset =''

- keep = '' --> 중복값의 첫번 째 값을 제외할 지, 마지막 값을 제외할 지, 중복 값 모두를 포함할지 결정. 

#id만 같아도 중복 값으로 치는 것
# 중복 값들 중 가장 처음 값은 false를 줘서 안 나타나고 나머지만 중복으로 보는 것.
airbnb_df[airbnb_df.duplicated(subset='id')]

#같은 결과
# 디폴트가 first 가장 위의 값은 중복값이 아니라고 보는 것.
airbnb_df[airbnb_df.duplicated(subset='id', keep='first')] 



#당연히 리스트로 여러 벡터에서 중복이 있는 지 여부도 확인이 가능
airbnb_df[airbnb_df.duplicated(subset=['id','n_reviews','price'])]

 

 

 

--> id가 같은 지 여부로 확인하는 것. 

--> keep = 'first'와 같은 값으로, 이게 디폴트임. 

- 겹치는 값 중 first는 제외하고 나머지 값들만 추출함. 

 

 

 

- keep = 'last' 

#겹치는 값 중 가장 마지막의 값이 중복이 아니라고 봄. 
airbnb_df[airbnb_df.duplicated(subset='id', keep='last')]

 

--> 위의 값과 비교해보면 값이 달라졌고, 순서도 달라짐. 

 

 

 

 

 

 

 

- keep = False

#겹치는 값 전체가 중복이라고 치는 것. 
airbnb_df[airbnb_df.duplicated(subset='id', keep=False)]

 

 

 

--> 값이 위의 것들에 비해서 더 추가되어서 많아졌음. 

 

 

 

 

 

 

 

 


<중복값 처리하기>

 

1) 중복값 삭제하기

- 개수가 적어서 삭제해도 큰 영향 x or 컬럼이나 로우의 값이 거의 다 결측값일 때 

- .drop_duplicates()

airbnb_df.drop_duplicates()

--> rows 수 확인해보면 줄어있음. 

--> 전체가 같은 값만을 의미함. 

 

- 위에서 확인했던 것과 마찬가지로, subset='', keep=''을 파라미터로 넣어서 중복 값의 기준을 바꿀 수 있음. 

#중복 값 지우기
airbnb_df.drop_duplicates(subset='id', keep='first')
airbnb_df.drop_duplicates(subset='id', keep='last')

 

- 삭제되었는지 확인. 

airbnb_df = airbnb_df.drop_duplicates(subset='id', keep='last')

airbnb_df.duplicated().sum()
#0

#구체적으로도 가능
airbnb_df.duplicated(subset='id').sum()
#0

 

728x90
반응형