Python 数据分析三剑客之 Pandas(八):数据重塑/重复数据处理/数据替换

💡 原文中文,约15100字,阅读约需36分钟。
📝

内容提要

本文介绍了Pandas库的数据重塑、重复数据处理和数据替换功能。数据重塑使用stack和unstack方法,重复数据处理通过duplicated和drop_duplicates方法识别和删除重复项,数据替换则利用replace、where和mask方法进行条件替换。

🔎

延伸解读

stack 与 unstack 的层级控制

stack 和 unstack 都支持 level 参数,用于指定转换的层级。stack 默认 level=-1,将最内层列索引转换为行;unstack 默认 level=-1,将最内层行索引转换为列。通过设置 level,可以灵活调整数据的形状,例如在多层索引中指定特定层级进行重塑。此外,stack 的 dropna 参数控制是否删除全为 NaN 的行,unstack 的 fill_value 参数可填充缺失值,这些细节影响重塑后的数据完整性。

重复数据处理的 keep 参数策略

duplicated 和 drop_duplicates 都通过 keep 参数控制重复项的标记或删除方式。keep='first' 保留第一个出现的重复项,keep='last' 保留最后一个,keep=False 则将所有重复项标记为 True 或全部删除。在 DataFrame 中,subset 参数允许指定列子集来判断重复,仅当这些列的值相同时才视为重复。ignore_index 参数可在删除后重置索引,便于后续处理。

replace 的灵活替换方式

replace 方法支持多种替换模式:单个值替换单个值、多个值替换一个值、多个值替换多个值,以及通过字典指定列或值的映射。当 to_replace 为正则表达式时,需设置 regex=True 或直接使用 regex 参数。对于 DataFrame,可以传入嵌套字典为不同列指定不同的替换规则,例如 obj.replace({'A': {0: 100, 4: 400}})。这些方式使得数据清洗更加高效。

where 与 mask 的条件替换对比

where 和 mask 都基于条件进行替换,但逻辑相反:where 在条件为 False 时替换,mask 在条件为 True 时替换。两者都支持 other 参数指定替换值,默认替换为 NaN。在 DataFrame 中,条件可以是布尔 DataFrame,替换值可以是标量、Series 或 DataFrame。例如,obj.where(m, -obj) 与 obj.mask(~m, -obj) 效果相同,体现了二者的互补关系。

❓

Q&A

如何使用Pandas进行数据重塑?

可以使用stack和unstack方法进行数据重塑,stack将列转换为行,unstack将行转换为列。

Pandas中如何处理重复数据?

使用duplicated方法判断重复值,使用drop_duplicates方法删除重复值。

Pandas的replace方法有什么用?

replace方法用于根据值的内容进行替换,可以替换单个值或多个值。

如何在Pandas中删除重复项?

可以使用drop_duplicates方法,指定keep参数来选择保留的重复项。

Pandas的where和mask方法有什么区别?

where方法用于替换条件为False的值,而mask方法用于替换条件为True的值。

如何使用stack和unstack方法进行数据重塑的示例?

stack将DataFrame的列转换为行,unstack将行转换为列,具体用法可以参考Pandas文档。

🏷️

标签

➡️

继续阅读