개요
데이터 분석가로서 정확하고 신뢰할 수 있는 통찰력을 얻기 위해 데이터 무결성을 보장하는 것은 우리의 책임입니다. 데이터 정리는 이 프로세스에서 중요한 역할을 하며 중복 값은 데이터 분석가가 직면하는 가장 일반적인 문제 중 하나입니다. 중복 값은 통찰력을 잘못 나타낼 수 있습니다. 따라서 중복 값을 처리하기 위한 효율적인 방법을 갖는 것이 중요합니다. 이 문서에서는 중복 값을 식별하고 처리하는 방법과 중복 관리를 위한 모범 사례를 알아봅니다.
중복 값 식별
중복 값을 처리하는 첫 번째 단계는 중복 값을 식별하는 것입니다. 중복 값을 식별하는 것은 데이터 정리에서 중요한 단계입니다. Pandas는 데이터 프레임 내에서 중복 값을 식별하기 위한 여러 가지 방법을 제공합니다. 이 섹션에서는 duplicated()
기능과 value_counts()
중복 값을 식별하는 기능.
Usin 중복()
XNUMXD덴탈의 duplicated()
함수는 DataFrame에서 중복 행을 확인하는 Pandas 라이브러리 함수입니다. 의 출력 duplicated()
function은 입력 DataFrame과 길이가 같은 부울 계열이며 각 요소는 해당 행이 중복인지 여부를 나타냅니다.
의 간단한 예를 들어 보겠습니다. duplicated()
기능:
import pandas as pd data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) df_duplicates = df.duplicated()
print(df_duplicates)
출력:
0 False
1 False
2 False
3 False
4 False
5 True
dtype: bool
위의 예에서는 학생 이름과 총점을 포함하는 DataFrame을 만들었습니다. 우리는 호출 duplicated()
부울 시리즈를 생성한 DataFrame에서 False
고유한 값을 나타내는 True
중복 값을 나타냅니다.
이 예에서 값의 첫 번째 발생은 고유한 것으로 간주됩니다. 그러나 마지막 값을 고유한 것으로 간주하고 중복 값을 식별할 때 모든 열을 고려하지 않으려면 어떻게 해야 합니까? 여기에서 다음을 수정할 수 있습니다. duplicated()
매개변수 값을 변경하여 작동합니다.
매개변수: 하위 집합 및 유지
XNUMXD덴탈의 duplicated()
함수는 선택적 매개변수를 통해 사용자 지정 옵션을 제공합니다. 아래에 설명된 대로 두 개의 매개변수가 있습니다.
-
subset
: 이 매개 변수를 사용하면 중복 검색 중에 고려할 열의 하위 집합을 지정할 수 있습니다. 하위 집합은 다음으로 설정됩니다.None
기본적으로 DataFrame의 각 열이 고려됨을 의미합니다. 열 이름을 지정하기 위해 하위 집합에 열 이름 목록을 제공할 수 있습니다.다음은 하위 집합 매개변수를 사용하는 예입니다.
df_duplicates = df.duplicated(subset=['StudentName'])
출력:
0 False 1 False 2 False 3 False 4 False 5 True dtype: bool
-
keep
: 이 옵션을 사용하면 중복으로 표시할 중복 행의 인스턴스를 선택할 수 있습니다. keep에 사용할 수 있는 값은 다음과 같습니다."first"
: 이것은 기본 값입니다.keep
옵션. 첫 번째 값을 고유한 것으로 간주하여 첫 번째 항목을 제외한 모든 중복 항목을 식별합니다."last"
: 이 옵션은 마지막 항목을 고유한 값으로 식별합니다. 다른 모든 항목은 중복으로 간주됩니다.False
: 이 옵션은 각 인스턴스에 중복 값으로 레이블을 지정합니다.
다음은 를 사용하는 예입니다. keep
매개 변수 :
df_duplicates = df.duplicated(keep='last')
print(df_duplicates)
출력:
0 True
1 False
2 False
3 False
4 False
5 False
dtype: bool
중복 값 시각화
XNUMXD덴탈의 value_counts()
기능은 중복을 식별하기 위한 두 번째 접근 방식입니다. 그만큼 value_counts()
함수는 각 고유 값이 열에 나타나는 횟수를 계산합니다. 적용하여 value_counts()
기능을 특정 열에 연결하면 각 값의 빈도를 시각화할 수 있습니다.
다음은 를 사용하는 예입니다. value_counts()
기능:
import matplotlib.pyplot as plt
import pandas as pd data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) name_counts = df['StudentName'].value_counts()
print(name_counts)
출력:
Mark 2
Ali 1
Bob 1
John 1
Johny 1
Name: StudentName, dtype: int64
이제 막대 그래프로 중복 값을 시각화해 보겠습니다. 막대 차트를 사용하여 중복 값의 빈도를 효과적으로 시각화할 수 있습니다.
name_counts.plot(kind='bar')
plt.xlabel('Student Name')
plt.ylabel('Frequency')
plt.title('Duplicate Name Frequencies')
plt.show()
중복 값 처리
중복 값을 식별한 후에는 해당 값을 처리해야 합니다. 이 섹션에서는 pandas를 사용하여 중복 값을 제거하고 업데이트하는 다양한 전략을 살펴봅니다. drop_duplicates()
및 replace()
기능. 또한 다음을 사용하여 중복 값으로 데이터를 집계하는 방법에 대해 설명합니다. groupby()
기능.
중복 값 제거
중복을 처리하는 가장 일반적인 방법은 DataFrame에서 중복을 제거하는 것입니다. DataFrame에서 중복 레코드를 제거하기 위해 다음을 사용합니다. drop_duplicates()
기능. 기본적으로 이 함수는 각 중복 행의 첫 번째 인스턴스를 유지하고 후속 항목을 제거합니다. 모든 열 값을 기반으로 중복 값을 식별합니다. 그러나 하위 집합 매개 변수를 사용하여 고려할 열을 지정할 수 있습니다.
구문 drop_duplicates()
매개변수의 기본값은 다음과 같습니다.
dataFrame.drop_duplicates(subset=None, keep='first', inplace=False)
XNUMXD덴탈의 subset
및 keep
매개변수는 다음과 같은 설명을 가집니다. duplicates()
. 세 번째 매개변수를 설정하면 inplace
에 True
, 모든 수정 사항은 원본 DataFrame에서 직접 수행되므로 메서드가 반환됩니다. None
원본 DataFrame이 수정됩니다. 기본적으로, inplace
is False
.
다음은 의 예입니다. drop_duplicates()
기능:
df.drop_duplicates(keep='last', inplace=True)
print(df)
출력:
StudentName Score
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45
모범 사례, 업계에서 인정하는 표준 및 포함된 치트 시트가 포함된 Git 학습에 대한 실습 가이드를 확인하십시오. 인터넷 검색 Git 명령을 중지하고 실제로 배움 이것!
위의 예에서 첫 번째 항목은 중복 항목이므로 삭제되었습니다.
중복 값 바꾸기 또는 업데이트
중복을 처리하는 두 번째 방법은 Pandas를 사용하여 값을 바꾸는 것입니다. replace()
함수. 그만큼 replace()
함수를 사용하면 DataFrame의 특정 값이나 패턴을 새 값으로 바꿀 수 있습니다. 기본적으로 값의 모든 인스턴스를 바꿉니다. 그러나 limit 매개 변수를 사용하여 교체 횟수를 제한할 수 있습니다.
다음은 replace()
기능:
df['StudentName'].replace('Mark', 'Max', limit=1, inplace=True)
print(df)
출력:
StudentName Score
0 Max 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45
여기에서 한계는 첫 번째 값을 대체하는 데 사용되었습니다. 마지막 항목을 교체하려면 어떻게 해야 합니까? 이 경우 다음을 결합합니다. duplicated()
및 replace()
기능. 사용 duplicated()
, 각 중복 값의 마지막 인스턴스를 표시하고 다음을 사용하여 행 번호를 얻습니다. loc
기능을 사용하여 교체하십시오. replace()
기능. 다음은 사용 예입니다. duplicated()
및 replace()
함께 기능합니다.
last_occurrences = df.duplicated(subset='StudentName', keep='first') last_occurrences_rows = df[last_occurrences] df.loc[last_occurrences, 'StudentName'] = df.loc[last_occurrences, 'StudentName'].replace('Mark', 'Max') print(df)
출력:
StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Max 45
복잡한 교체를 위한 사용자 지정 함수
경우에 따라 중복 값을 처리하려면 단순히 값을 제거하거나 업데이트하는 것보다 더 복잡한 교체가 필요합니다. 사용자 지정 기능을 사용하면 필요에 맞는 특정 교체 규칙을 만들 수 있습니다. 판다를 이용하여 apply()
함수를 사용하여 사용자 정의 함수를 데이터에 적용할 수 있습니다.
예를 들어 "StudentName" 열에 중복 이름이 있다고 가정합니다. 우리의 목표는 중복 값 끝에 숫자를 추가하여 고유하게 만드는 사용자 지정 함수를 사용하여 중복 값을 바꾸는 것입니다.
def add_number(name, counts): if name in counts: counts[name] += 1 return f'{name}_{counts[name]}' else: counts[name] = 0 return name name_counts = {} df['is_duplicate'] = df.duplicated('StudentName', keep=False)
df['StudentName'] = df.apply(lambda x: add_number(x['StudentName'], name_counts) if x['is_duplicate'] else x['StudentName'], axis=1)
df.drop('is_duplicate', axis=1, inplace=True)
print(df)
출력:
StudentName Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark_1 45
중복 값이 있는 데이터 집계
중복 값이 포함된 데이터를 집계하여 데이터를 요약하고 통찰력을 얻을 수 있습니다. 팬더 groupby()
함수를 사용하면 중복 값이 있는 데이터를 집계할 수 있습니다. 를 사용하여 groupby()
함수를 사용하여 하나 이상의 열을 그룹화하고 각 그룹에 대한 다른 열의 평균, 중앙값 또는 합계를 계산할 수 있습니다.
다음은 groupby()
방법:
grouped = df.groupby(['StudentName']) df_aggregated = grouped.sum()
print(df_aggregated)
출력:
Score
StudentName Ali 65
Bob 76
John 44
Johny 39
Mark 90
고급 기법
보다 복잡한 시나리오를 처리하고 정확한 분석을 보장하기 위해 사용할 수 있는 몇 가지 고급 기술이 있습니다. 이 섹션에서는 퍼지 중복, 시계열 데이터의 중복 및 중복 인덱스 값을 처리하는 방법에 대해 설명합니다.
퍼지 중복
퍼지 중복은 정확히 일치하지는 않지만 유사한 레코드이며 데이터 입력 실수, 맞춤법 오류, 형식 변형 등 다양한 이유로 발생할 수 있습니다. 우리는 fuzzywuzzy
문자열 유사성 일치를 사용하여 중복을 식별하는 Python 라이브러리.
퍼지 값을 처리하는 예는 다음과 같습니다.
import pandas as pd
from fuzzywuzzy import fuzz def find_fuzzy_duplicates(dataframe, column, threshold): duplicates = [] for i in range(len(dataframe)): for j in range(i+1, len(dataframe)): similarity = fuzz.ratio(dataframe[column][i], dataframe[column][j]) if similarity >= threshold: duplicates.append(dataframe.iloc[[i, j]]) if duplicates: duplicates_df = pd.concat(duplicates) return duplicates_df else: return pd.DataFrame() data = { 'StudentName': ['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark'], 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data) threshold = 70 fuzzy_duplicates = find_fuzzy_duplicates(df, 'StudentName', threshold)
print("Fuzzy duplicates:")
print(fuzzy_duplicates.to_string(index=False))
이 예에서는 사용자 지정 함수를 만듭니다. find_fuzzy_duplicates
DataFrame, 열 이름 및 유사성 임계값을 입력으로 사용합니다. 이 함수는 DataFrame의 각 행을 반복하고 다음을 사용하여 후속 행과 비교합니다. fuzz.ratio
의 방법 fuzzywuzzy
도서관. 유사성 점수가 임계값보다 크거나 같으면 중복 행이 목록에 추가됩니다. 마지막으로 이 함수는 퍼지 중복을 포함하는 DataFrame을 반환합니다.
출력:
Fuzzy duplicates:
StudentName Score Mark 45 Mark 45 John 44 Johny 39
위의 예에서 유사 항목은 "StudentName" 열에서 식별됩니다. 'find_fuzzy_duplicates' 함수는 다음을 사용하여 각 문자열 쌍을 비교합니다. fuzzywuzzy
도서관 fuzz.ratio
Levenshtein 거리를 기반으로 유사성 점수를 계산하는 함수. 임계값을 70으로 설정했습니다. 즉 일치 비율이 70보다 큰 이름은 퍼지 값으로 간주됩니다. 퍼지 값을 식별한 후 "중복 처리" 섹션에 설명된 방법을 사용하여 이를 관리할 수 있습니다.
시계열 데이터 중복 처리
여러 관찰이 동일한 타임스탬프에 기록되면 중복이 발생할 수 있습니다. 이러한 값을 제대로 처리하지 않으면 편향된 결과를 초래할 수 있습니다. 다음은 시계열 데이터에서 중복 값을 처리하는 몇 가지 방법입니다.
- 정확한 중복 삭제: 이 방법에서는 다음을 사용하여 동일한 행을 제거합니다.
drop_duplicates
팬더의 기능. - 값이 다른 중복 타임스탬프: 타임스탬프는 같지만 값이 다른 경우 다음을 사용하여 데이터를 집계하고 더 많은 통찰력을 얻을 수 있습니다.
groupby()
또는 가장 최근 값을 선택하고 다음을 사용하여 나머지 값을 제거할 수 있습니다.drop_duplicates()
와 더불어keep
매개변수가 '마지막'으로 설정되었습니다.
중복 인덱스 값 처리
중복 색인 값을 해결하기 전에 먼저 Pandas에서 색인이 무엇인지 정의해 보겠습니다. 인덱스는 DataFrame의 각 행에 할당된 고유 식별자입니다. Pandas는 기본적으로 XNUMX부터 시작하는 숫자 인덱스를 할당합니다. 그러나 인덱스는 모든 열 또는 열 조합에 할당할 수 있습니다. 인덱스 열에서 중복을 식별하기 위해 다음을 사용할 수 있습니다. duplicated()
및 drop_duplicates()
각각의 기능. 이 섹션에서는 다음을 사용하여 인덱스 열에서 중복을 처리하는 방법을 살펴보겠습니다. reset_index()
.
이름에서 알 수 있듯이 reset_index()
Pandas의 함수는 DataFrame의 인덱스를 재설정하는 데 사용됩니다. 를 적용할 때 reset_index()
기능을 사용하면 현재 인덱스가 자동으로 폐기되므로 초기 인덱스 값이 손실됩니다. 지정하여 drop
매개 변수 False
FBI 증오 범죄 보고서 reset_index()
기능을 사용하면 인덱스를 재설정하는 동안 원래 인덱스 값을 유지할 수 있습니다.
다음은 사용 예입니다. reset_index()
:
import pandas as pd data = { 'Score': [45, 65, 76, 44, 39, 45]
}
df = pd.DataFrame(data, index=['Mark', 'Ali', 'Bob', 'John', 'Johny', 'Mark']) df.reset_index(inplace=True)
print(df)
출력:
index Score
0 Mark 45
1 Ali 65
2 Bob 76
3 John 44
4 Johny 39
5 Mark 45
모범 사례
-
중복 데이터의 특성 이해: 조치를 취하기 전에 왜 중복 값이 존재하고 무엇을 나타내는지 이해하는 것이 중요합니다. 근본 원인을 파악한 다음 이를 처리할 적절한 단계를 결정합니다.
-
중복 처리를 위한 적절한 방법 선택: 이전 섹션에서 설명한 것처럼 중복을 처리하는 방법에는 여러 가지가 있습니다. 선택하는 방법은 데이터의 특성과 수행하려는 분석에 따라 다릅니다.
-
접근 방식 문서화: 중복 값을 감지하고 해결하는 과정을 문서화하여 다른 사람들이 사고 과정을 이해할 수 있도록 하는 것이 중요합니다.
-
운동주의: 데이터를 제거하거나 수정할 때마다 중복 제거로 인해 분석에 오류나 편향이 발생하지 않도록 해야 합니다. 건전성 테스트를 수행하고 각 작업의 결과를 확인합니다.
-
원본 데이터 보존: 데이터에 대한 작업을 수행하기 전에 원본 데이터의 백업 복사본을 만듭니다.
-
향후 중복 방지: 향후 중복 발생 방지를 위한 조치를 시행합니다. 여기에는 데이터 입력 중 데이터 유효성 검사, 데이터 정리 루틴 또는 고유성을 적용하기 위한 데이터베이스 제약 조건이 포함될 수 있습니다.
최종 생각
데이터 분석에서 중복 값을 처리하는 것은 중요한 단계입니다. 중복 값은 부정확한 결과를 초래할 수 있습니다. 중복 값을 효율적으로 식별하고 관리함으로써 데이터 분석가는 정확하고 중요한 정보를 도출할 수 있습니다. 언급된 기술을 구현하고 모범 사례를 따르면 분석가는 데이터의 무결성을 유지하고 데이터에서 귀중한 통찰력을 추출할 수 있습니다.
- SEO 기반 콘텐츠 및 PR 배포. 오늘 증폭하십시오.
- EVM 금융. 탈중앙화 금융을 위한 통합 인터페이스. 여기에서 액세스하십시오.
- 퀀텀미디어그룹. IR/PR 증폭. 여기에서 액세스하십시오.
- PlatoAiStream. Web3 데이터 인텔리전스. 지식 증폭. 여기에서 액세스하십시오.
- 출처: https://stackabuse.com/handling-duplicate-values-in-a-pandas-dataframe/
- :있다
- :이다
- :아니
- :어디
- 1
- 11
- 12
- 20
- 70
- 8
- 9
- a
- 위의
- 정확한
- 동작
- 실제로
- 추가
- 또한
- 주소
- 주소 지정
- 많은
- 후
- 집합
- 겨냥
- All
- 허용
- 수
- 중
- an
- 분석
- 분석자
- 애널리스트
- 및
- 다른
- 어떤
- 등장하다
- 신청
- 적용
- 접근
- 적당한
- 있군요
- 기사
- AS
- 할당 된
- At
- 자동적으로
- 백업
- 바
- 기반으로
- BE
- 전에
- 존재
- 이하
- BEST
- 모범 사례
- 바이어스
- 치우친
- 곡물
- 경계
- 비자 면제 프로그램에 해당하는 국가의 시민권을 가지고 있지만
- by
- 계산하다
- ~를 계산하다
- CAN
- 케이스
- 가지 경우
- 원인
- 거래차트
- 확인하는 것이 좋다.
- 왼쪽 메뉴에서
- 청소관련
- 단
- 열
- 결합
- 결합
- 공통의
- 복잡한
- 이해하다
- 행위
- 고려
- 고려
- 치고는
- 제약
- 이 포함되어 있습니다
- 동
- 만들
- 만든
- 결정적인
- Current
- 관습
- 사용자 정의
- 데이터
- 데이터 분석
- 데이터 입력
- 데이터베이스
- 취급
- 태만
- 따라
- 기술 된
- Detection System
- 결정
- 다른
- 직접
- 토론
- 논의 된
- 거리
- 문서
- 하지
- 돈
- 중복
- ...동안
- 마다
- 효과적으로
- 효율적인
- 효율적으로
- 요소
- 제거
- 제거
- 가능
- 수
- end
- 억지로 시키다
- 확인
- 항목
- 같은
- 오류
- 예
- 외
- 있다
- 설명
- 탐험
- 추출물
- 를
- 최종적으로
- 먼저,
- 초점
- 수행원
- 다음
- 럭셔리
- 진동수
- 에
- 기능
- 기능
- 미래
- 이득
- 생성
- 힘내
- 골
- 그래프
- 큰
- 그룹
- 안내
- 핸들
- 처리
- 손 -에
- 있다
- 여기에서 지금 확인해 보세요.
- 가져가
- 방법
- How To
- 그러나
- HTTPS
- i
- 같은
- 확인
- 식별자
- 식별하다
- 확인
- 식별
- if
- 구현
- 구현
- 중대한
- in
- 부정확 한
- 포함
- 포함
- 포함
- 색인
- 표시
- 표시
- 정보
- 처음에는
- 입력
- 통찰력
- 통찰력
- 예
- 보전
- 으로
- 소개
- 개요
- 호출
- 문제
- IT
- 그
- 요한 복음
- 유지
- 레이블
- 성
- 리드
- 배우다
- 배우기
- 길이
- 하자
- LG
- 도서관
- 제한
- 명부
- 잃어버린
- 유튜브 영상을 만드는 것은
- 관리
- 관리
- 표
- 두드러진
- 경기
- 어울리는
- 매트플롯립
- 최대
- XNUMX월..
- 평균
- 의미
- 방법
- 조치들
- 말하는
- 방법
- 방법
- 실수
- 수정
- 수정
- 수정
- 배우기
- 가장
- 여러
- 절대로 필요한 것
- name
- 이름
- 자연
- 요구
- 신제품
- 지금
- 번호
- 획득
- 발생하는
- of
- 제공
- on
- ONE
- 조작
- 선택권
- 옵션
- or
- 실물
- 기타
- 기타
- 우리의
- 아웃
- 설명
- 출력
- 쌍
- 팬더
- 매개 변수
- 매개 변수
- 패턴
- 수행
- 수행
- 실행할 수 있는
- 플라톤
- 플라톤 데이터 인텔리전스
- 플라토데이터
- 재생
- 가능한
- 잠재적으로
- 실용적인
- 사례
- 정확한
- 예방
- 너무 이른
- 방법
- 정확히
- 제공
- Python
- 비율
- 이유
- 최근
- 기록
- 기록
- 제거
- 제거
- 교체
- 바꿔 놓음
- 대표
- 대표
- 필요
- 각기
- 책임
- 얽매다
- 결과
- 결과
- 유지
- 반환
- 반품
- 반지
- 직위별
- 뿌리
- 열
- 규칙
- s
- 같은
- 시나리오
- 점수
- 둘째
- 섹션
- 섹션
- 연속
- 세트
- 그림자
- 시트
- 영상을
- 상당한
- 비슷한
- 단순, 간단, 편리
- 간단히
- 이후
- 일부
- 구체적인
- 스택카부스
- 기준
- 시작 중
- 단계
- 단계
- 중지
- 전략들
- 끈
- 학생
- 학생들
- 후속의
- 요약
- 맞춤형
- 소요
- 복용
- 기법
- 테스트
- 보다
- 그
- XNUMXD덴탈의
- 미래
- 그들의
- 그들
- 그때
- 그곳에.
- 따라서
- Bowman의
- 그들
- 제삼
- 이
- 생각
- 임계값
- 을 통하여
- 시간
- 시계열
- 시대
- 따라서 오른쪽 하단에
- 제목의
- 에
- 함께
- 금액
- 전이
- 신뢰할 수있는
- 두
- 이해
- 유일한
- 고유성
- 업데이트
- 업데이트
- us
- 사용
- 익숙한
- 사용
- 유효 기간
- 확인
- 가치 있는
- 가치
- 마케팅은:
- 여러
- Ve
- 필수
- 필요
- 였다
- 방법
- we
- 잘
- 뭐
- 언제
- 때마다
- 여부
- 어느
- 동안
- why
- 의지
- 과
- 이내
- X
- 자신의
- 제퍼 넷
- 제로