MoonNote

반응형
     

 

 

 

엑셀 파일(실행 후 결과 값)

[Exam 01]Remove_duplicates_by_row.xlsx
0.00MB
[Exam 02]Remove_duplicates_by_column.xlsx
0.00MB

 

엑셀 파일 구성

코드 실행 후 파일 저장

 [Exam 01]Remove_duplicates_by_row.xlsx

예제 코드 01 결과

  [Exam 02]Remove_duplicates_by_column.xlsx

예제 코드 02 결과

 

중복 제거 예제 코드 01 (행 기준)

 DataFrame을 사용하여 중복 데이터가 있는 테이블을 생성

 dataframe_to_rows 함수를 사용하여 DataFrame의 데이터를 시트에 작성

 iter_rows 메서드를 사용하여 시트의 모든 행을 가져오고, seen 집합을 사용하여 중복 데이터를 확인

 중복이 없는 행은 rows_without_duplicates 리스트에 추가 후 중복 제거된 데이터만 시트에 작성

from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
from pandas import DataFrame

# Create a new workbook
workbook = Workbook()

# Select the activated workbook
sheet = workbook.active

# Create a dataframe included duplicate data
data = {'Name': ['Alice', 'Bob', 'Alice', 'Charlie', 'Bob', 'Alice'],
        'Age': [25, 30, 25, 35, 30, 25],
        'City': ['New York', 'Paris', 'London', 'Tokyo', 'Paris', 'New York']}
df = DataFrame(data)

# Write dataframe on sheet
for row in dataframe_to_rows(df, index=False, header=True):
    sheet.append(row)

# The process of removing duplicate data
rows = list(sheet.iter_rows(values_only=True))
seen = set()
rows_without_duplicates = []
for row in rows:
    if row not in seen:
        seen.add(row)
        rows_without_duplicates.append(row)

# Reset sheet
sheet.delete_rows(1, sheet.max_row)

# Create deduplicated data on a sheet
for row in rows_without_duplicates:
    sheet.append(row)

# save the file
workbook.save('[Exam 01]remove_duplicates_by_row.xlsx')

 

중복 제거 예제 코드 02 (열 기준)

 DataFrame을 사용하여 중복 데이터가 있는 테이블을 생성

T를 통해 DataFrame을 전치시키고 duplicated 함수를 사용하여 중복 확인

~로 duplicated에 대한 bool 출력 반전(중복이 아닌 데이터만 처리)

 중복이 없는 데이터만 시트에 작성

from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
from pandas import DataFrame

# Create a new workbook
workbook = Workbook()

# Select the activated workbook
sheet = workbook.active

# Create a dataframe included duplicate data
data = {'1st score': [100, 95, 100, 90, 100],
        '2nd score': [90, 100, 100, 95, 100],
        '3rd score': [100, 95, 100, 90, 100]}
df = DataFrame(data, index=None)

# print for deduplicated values by column
print(df.loc[:, ~df.T.duplicated()])

# Created duplicated data on a sheet
for row in dataframe_to_rows(df.loc[:, ~df.T.duplicated()], index=False, header=True):
    sheet.append(row)

# Save the file
workbook.save('[Exam 02]Remove_duplicates_by_column.xlsx')

 

 

 

 

 

 

 

 

 

 

 

※ 이 글이 도움이 되었다면 "👆🏻구독"과 "🤍공감" 버튼을 클릭해주세요. 클릭 한번이 글 쓰는데 큰 힘이 됩니다.

공유하기

facebook twitter kakaoTalk kakaostory naver band