Pandas Pivot:深入指南,了解何时以及如何有效使用它
作者:社区 / 开发者
2023年8月3日
导航到
数据处理对于数据分析至关重要,Python 的 Pandas 库为此提供了大量的功能。其中之一就是 pivot 函数。在本指南中,我们将深入研究 Pandas pivot 函数、其应用以及何时以及如何有效地使用它。
Pandas 中的 pivot 函数是什么?
Pandas 中的 pivot 函数是一种通过将行转换为列来重塑数据的方法。当需要将数据从“长”格式重新排列为“宽”格式时,Pandas pivot 函数就会发挥作用。本质上,这会将某些行值转换为列标题,从而为您提供更广泛的数据视图。这可以使数据更易于阅读,尤其是当您想比较不同实体之间的属性时。
考虑一个捕获不同城市每日气温的数据集
Date City Temperature
0 2023-01-01 NY 55
1 2023-01-01 LA 72
2 2023-01-02 NY 53
3 2023-01-02 LA 75
这里,数据处于“长”格式——每个日期和城市对都有一个单独的行。但如果你想查看纽约和洛杉矶在每日期的气温,会怎样呢?
通过应用 pivot 函数,此数据集可以转换为以下内容
Date NY LA
0 2023-01-01 55 72
1 2023-01-02 53 75
注意,独特的城市已变为列标题,而气温按日期排列在它们下面。这种“宽”格式允许更容易地在城市之间进行比较。
pivot 函数的语法
为了实现这种转换,pivot 函数提供了三个主要参数
- 索引:索引参数用于设置新 DataFrame 的行结构。
- 列:列参数用于标识哪些唯一值将作为新列。
- 值:值参数确保正确的数据进入新的结构。
基本语法如下
DataFrame.pivot(index=None, columns=None, values=None)
例如,回到我们之前销售数据集的例子,如果你想要将数据转换为以天为索引、产品为列、销售额为值的形式,你可以使用以下代码
temperature_data.pivot(index='Date', columns='City', values='Temperature')
Pandas 中旋转函数的必要性
Pandas 中的旋转函数对于多个原因至关重要,主要围绕数据操作、转换和分析。以下是详细说明
1. 数据重塑
使用旋转函数的主要原因是为了重塑数据。它将数据从长格式转换为宽格式,这有助于更有效地比较不同的变量。这种重塑对于准备分析或可视化的数据集是基本的,因为它允许以更结构化和可读的形式表示数据。
2. 提高数据分析
通过重新排列数据集,旋转函数使用户能够进行更细微和精确的分析。它允许对复杂的数据集进行汇总,揭示在更杂乱的非旋转数据集中可能被隐藏的模式、趋势和见解。
3. 增强数据可视化
旋转有助于创建更有洞察力和意义的可视化。一个结构良好、已旋转的表格对于绘制图形和图表至关重要,因为它以易于解释和可视化的方式组织数据,提供了对潜在模式和趋势的清晰见解。
5. 数据完整性
旋转通过避免不必要的重复来帮助维护数据完整性。在转换数据时,特别是在聚合期间,拥有准确、无冗余的信息至关重要,而旋转函数通过更逻辑地重新组织数据而不改变原始数据集来确保这一点。
6. 时间效率
在 Pandas 中,使用旋转通常比手动重新组织数据或使用更复杂的转换函数更节省时间。通过简化数据转换过程,它能够加快数据分析速度,这在处理大型数据集时特别有益。
如何在 Pandas 中使用旋转
在 Pandas 中旋转数据是一项必备的技能,为了帮助您更好地理解,让我们通过一个示例进行说明。假设我们有一个示例 DataFrame,其中包含不同地区不同代理商的销售信息。DataFrame 看起来像这样
Agent Region Sales
0 Alice North 200
1 Alice South 150
2 Bob East 100
3 Bob West 180
4 Charlie North 120
5 Charlie West 200
现在假设我们想要将表旋转以更清晰地查看每个代理商在每个地区的销售情况。为此,我们应用以下旋转函数
pivoted_df = df.pivot(index='Agent', columns='Region', values='Sales')
print(pivoted_df)
执行上述代码将原始 DataFrame 转换为以下旋转形式
Region East North South West
Agent
Alice NaN 200.0 150.0 NaN
Bob 100.0 NaN NaN 180.0
Charlie NaN 120.0 NaN 200.0
从旋转表中,我们可以轻松地确定每个代理商在每个地区的销售数量。例如,Alice 在东部没有销售。
请注意,NaN(非数字)值表示缺失数据或在这种情况下,销售人员没有销售该特定项目。
这种表示方式允许更清晰、更迅速地理解数据,便于识别模式,例如哪些代理商在哪些地区表现良好,以及可能存在改进或进一步调查的机会。
DataFrame 旋转与 DataFrame Pivot Table 之间的区别是什么?
DataFrame.pivot 和 DataFrame.pivot_table 都是 Pandas 中的重塑工具,但它们服务于不同的目的。首先,pivot 用于基本重塑,并要求具有唯一索引列组合,但没有聚合功能。另一方面,pivot_table 是为高级重塑设计的。它通过允许聚合函数(如平均值或总和)来处理重复数据。当面对重复的数据条目时,pivot 会引发错误,而 pivot_table 会将它们聚合。本质上,pivot 用于简单情况,而 pivot_table 则提供更多的灵活性和功能。
我应该在使用 Pandas 时使用交叉表还是交叉表?
交叉表在处理两个类别的简单计数时是一个不错的选择。它很简单,专门为此目的而设计。另一方面,如果您需要详细的数据重塑或各种聚合方法,则 pivot_table 提供更多的灵活性和选项。您可以将交叉表视为适合基本任务,而 pivot_table 则针对更复杂的情况。Pandas 文档提供了对每个功能的深入了解。请始终记住,根据您的具体需求来选择。
Pandas Pivot 的用例
项目管理:如果一家公司跟踪项目任务,列有“日期”、“任务”和“状态”(例如,已完成、进行中、未开始),pivot 函数可以提供一个以日期为行、任务为列、状态为值的视图。这有助于更清晰地了解项目进度。
网站流量分析:如果一家公司跟踪网页访问量,数据列有“日期”、“网页”和“访问量”,则 pivot 可以将其重塑为以日期为行、不同网页为列、访问量为值的视图。这可以清楚地展示流量趋势。
时间序列分析:对于记录多个变量随时间变化的数据集(例如,不同公司的股票价格),您可以使用 pivot 以日期为行、公司为列、股票价格为值。这使您在进行时间序列分析时能够轻松地并列绘制不同公司的时序数据。
总结
Pandas Pivot 是 Pandas 库灵活性和强大功能的证明。无论是为了更清晰的可视化重塑数据集还是简化复杂的数据分析,熟练掌握 pivot 函数都可以显著提高数据操作技能。像所有强大的工具一样,关键在于知道何时以及如何有效地使用 Pandas pivot。
其他资源
本文由 Peace Aisosa Osarenren 撰写。Peace 是一位技术作家和数据分析师,擅长简化复杂概念。她热衷于将技术术语简化并使其更易于理解,因此迅速成为那些想更好地理解技术概念的读者的首选作家。无论是解释复杂的软件程序还是分解数据分析方法,她都有一种将技术概念普及化的天赋。