首页 > 编程知识 正文

Python对数据去重

时间:2023-11-20 01:49:04 阅读:300536 作者:IOBG

数据去重是数据处理中常见的任务之一,Python提供了多种方法可以实现对数据的去重。本文将从多个方面详细阐述Python对数据去重的方法和技巧。

一、使用set进行去重

1、通过将数据转换为set类型,可以自动去重。

data = [1, 2, 3, 1, 2, 3]
unique_data = set(data)
print(unique_data)  # 输出:{1, 2, 3}

2、对于复杂数据类型,可以使用map函数将数据转换为哈希可比较的类型,再进行去重。

data = [{'name': 'Alice', 'age': 20}, {'name': 'Bob', 'age': 20}, {'name': 'Alice', 'age': 20}]
unique_data = set(map(lambda x: hash(tuple(x.items())), data))
print(unique_data)  # 输出:{567306710595313110, -3780316096660636730}

二、使用字典进行去重

1、利用字典的key的唯一性可以实现对数据的去重。

data = [1, 2, 3, 1, 2, 3]
unique_data = list(dict.fromkeys(data))
print(unique_data)  # 输出:[1, 2, 3]

2、对于复杂数据类型,可以使用字典的keys来去重。

data = [{'name': 'Alice', 'age': 20}, {'name': 'Bob', 'age': 20}, {'name': 'Alice', 'age': 20}]
unique_data = list({tuple(d.items()): d for d in data}.values())
print(unique_data)  # 输出:[{'name': 'Alice', 'age': 20}, {'name': 'Bob', 'age': 20}]

三、使用pandas库进行去重

1、通过pandas库的drop_duplicates方法可以方便地对DataFrame数据进行去重。

import pandas as pd

data = [{'name': 'Alice', 'age': 20}, {'name': 'Bob', 'age': 20}, {'name': 'Alice', 'age': 20}]
df = pd.DataFrame(data)
unique_data = df.drop_duplicates().to_dict(orient='records')
print(unique_data)  # 输出:[{'name': 'Alice', 'age': 20}, {'name': 'Bob', 'age': 20}]

2、对于指定列的去重,可以使用subset参数来指定列名。

import pandas as pd

data = [{'name': 'Alice', 'age': 20}, {'name': 'Bob', 'age': 20}, {'name': 'Alice', 'age': 20}]
df = pd.DataFrame(data)
unique_data = df.drop_duplicates(subset=['name']).to_dict(orient='records')
print(unique_data)  # 输出:[{'name': 'Alice', 'age': 20}, {'name': 'Bob', 'age': 20}]

四、使用hashlib进行去重

1、通过hashlib库可以实现对数据的哈希值计算,进而进行去重。

import hashlib

data = [1, 2, 3, 1, 2, 3]
unique_data = list({hashlib.md5(str(data).encode()).hexdigest(): data for data in data}.values())
print(unique_data)  # 输出:[1, 2, 3]

2、对于复杂数据类型,可以使用json库将数据转换为字符串,再进行哈希计算。

import hashlib
import json

data = [{'name': 'Alice', 'age': 20}, {'name': 'Bob', 'age': 20}, {'name': 'Alice', 'age': 20}]
unique_data = list({hashlib.md5(json.dumps(data, sort_keys=True).encode()).hexdigest(): data for data in data}.values())
print(unique_data)  # 输出:[{'name': 'Alice', 'age': 20}, {'name': 'Bob', 'age': 20}]

五、使用numpy库进行去重

通过numpy库的unique方法可以实现对数组、矩阵的去重。

import numpy as np

data = np.array([1, 2, 3, 1, 2, 3])
unique_data = np.unique(data)
print(unique_data)  # 输出:[1 2 3]

对于多维数组,可以指定axis参数来沿着指定轴进行去重。

import numpy as np

data = np.array([[1, 2, 3], [1, 2, 3], [4, 5, 6]])
unique_data = np.unique(data, axis=0)
print(unique_data)  # 输出:[[1 2 3] [4 5 6]]

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。