2. 重复数据处理

方法/操作语法示例描述
检测重复行df.duplicated() 返回布尔序列标记重复行(首次出现的行标记为False)
删除重复行df.drop_duplicates() 保留首次出现的行(默认检查所有列)
 df.drop_duplicates(subset=[‘col1’])仅根据指定列去重
 df.drop_duplicates(keep=’last’)保留最后一次出现的行

1. 检测重复行

import pandas as pd

# 创建包含重复数据的DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Alice', 'Charlie', 'Bob'],
    'Age': [25, 30, 25, 35, 30],
    'City': ['NY', 'LA', 'NY', 'SF', 'LA']
}
df = pd.DataFrame(data)

# 检测重复行(默认检查所有列)
print("重复行标记(False表示首次出现,True表示重复):")
print(df.duplicated())

输出:

Plain Text
0    False
1    False
2     True
3    False
4     True
dtype: bool

2. 删除重复行

# 默认保留首次出现的行
df_unique = df.drop_duplicates()
print("去重后的DataFrame:")
print(df_unique)

输出:

Plain Text
      Name  Age City
0    Alice   25   NY
1      Bob   30   LA
3  Charlie   35   SF

3. 按指定列去重

# 仅根据'Name'列去重(保留首次出现)
df_name_unique = df.drop_duplicates(subset=['Name'])
print("按Name列去重:")
print(df_name_unique)

输出:

Plain Text
      Name  Age City
0    Alice   25   NY
1      Bob   30   LA
3  Charlie   35   SF

4. 保留最后一次出现的重复行

# 保留最后一次出现的行
df_last = df.drop_duplicates(keep='last')
print("保留最后一次出现的行:")
print(df_last)

输出:

Plain Text
      Name  Age City
2    Alice   25   NY
4      Bob   30   LA
3  Charlie   35   SF

5. 综合案例:处理真实数据

# 加载包含重复值的数据(示例)
df_sales = pd.read_csv("sales_data.csv")

# 检查重复行数量
print("原始数据重复行数:", df_sales.duplicated().sum())

# 按'Order_ID'列去重,保留最后一次记录
df_clean = df_sales.drop_duplicates(subset=['Order_ID'], keep='last')

# 验证结果
print("去重后数据行数:", len(df_clean))

注意事项

  1. 性能优化:对大数据集去重时,可通过 subset 指定关键列以减少计算量。
  2. 逻辑一致性:确保 keep=’last’ 或 keep=False(删除所有重复)符合业务需求。
  3. 多列去重:subset=[‘col1’, ‘col2’] 可联合多列判断重复。

通过以上案例,可以灵活应对实际数据清洗中的重复值问题!

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发
头像-大赛人网
欢迎您留下宝贵的见解!
提交
头像-大赛人网

昵称

取消
昵称

    请登录后查看评论内容