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 函数提供了三个主要参数
- index:index 参数设置新 DataFrame 的行结构。
- columns:columns 参数标识哪些唯一值将用作新列。
- values:values 参数确保正确的数据进入新结构。
基本语法如下所示
DataFrame.pivot(index=None, columns=None, values=None)
例如,回顾我们的销售数据集示例,如果您想透视数据,使日期为索引,产品为列,销售额为值,则可以使用以下代码
temperature_data.pivot(index='Date', columns='City', values='Temperature')
为什么我们需要 Pandas 中的 Pivot 函数
Pandas 中的 pivot 函数至关重要,原因有很多,主要围绕数据操作、转换和分析。以下是详细的分解
1. 数据重塑
使用 pivot 函数的主要原因是重塑数据。它将数据从长格式转换为宽格式,这有助于更有效地比较不同的变量。这种重塑对于准备用于分析或可视化的数据集至关重要,因为它允许以更结构化和可读的形式表示数据。
2. 改进数据分析
通过重新排列数据集,pivot 函数使用户能够进行更细致和精确的分析。它允许总结复杂的数据集,揭示在更杂乱、非透视的数据集中可能仍然模糊的模式、趋势和见解。
3. 增强数据可视化
Pivot 有助于创建更具洞察力和意义的可视化效果。结构良好、透视的表格对于绘制图形和图表至关重要,因为它以易于解释和可视化的方式组织数据,从而清晰地洞察潜在的模式和趋势。
5. 数据完整性
透视通过避免不必要的重复来帮助维护数据完整性。在转换数据时,尤其是在聚合期间,拥有准确、非冗余的信息至关重要,而 pivot 函数通过更合乎逻辑地重新组织数据而不更改原始数据集来帮助确保这一点。
6. 时间效率
在 Pandas 中,使用 pivot 通常比手动重新组织数据或使用更复杂的转换函数更有效率。通过简化数据转换过程,它可以实现更快的数据分析,这在处理大型数据集时尤其有利。
如何在 Pandas 中使用 Pivot
在 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
现在假设我们想透视表格,以便更清楚地了解每个代理商在每个地区的销售额。为此,我们按如下方式应用 pivot 函数
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 Pivot 和 DataFrame Pivot Table 之间有什么区别?
DataFrame.pivot 和 DataFrame.pivot_table 都是 Pandas 中的重塑工具,但它们的用途不同。首先,pivot 用于基本重塑,需要唯一的索引-列组合,并且没有聚合功能。另一方面,pivot_table 专为高级重塑而设计。它通过允许均值或总和等聚合函数来处理重复项。当面对重复的数据条目时,pivot 会引发错误,而 pivot_table 会聚合它们。本质上,pivot 适用于简单的情况,而 pivot_table 提供更多的灵活性和功能。
在 Pandas 中,我应该使用 Crosstab 还是 Pivot Table?
当您处理跨两个类别的直接计数时,Crosstab 是一个不错的选择。它很简单,并且专门为此目的而设计。另一方面,如果您面临需要详细的数据重塑或各种聚合方法,pivot_table 提供更多的灵活性和选项。您可以将 crosstab 视为适用于基本任务,而 pivot_table 专为更复杂的任务而定制。Pandas 文档提供了对每种功能更深入的理解。始终记住根据您的具体要求选择。
Pandas Pivot 的用例
项目管理:如果公司使用诸如“日期”、“任务”和“状态”(例如,已完成、进行中、未开始)之类的列来跟踪项目任务,则 pivot 函数可以提供一个以日期为行、任务为列、状态为值的视图。这有助于更清晰地了解项目进度。
网站流量分析:如果公司正在使用诸如“日期”、“网页”和“访问次数”之类的数据列跟踪网页访问量,则 pivot 可以重塑此数据以显示日期为行、不同网页为列、访问次数为值。这提供了流量趋势的清晰图景。
时间序列分析:对于记录随时间变化的多个变量的数据集(例如,不同公司的股票价格),您可以使用 pivot 将日期作为行,公司作为列,股票价格作为值。这使得在进行时间序列分析时,可以轻松地并排绘制不同公司的时间序列数据。
总结
Pandas Pivot 证明了 Pandas 库的灵活性和强大功能。无论是重塑数据集以实现更清晰的可视化,还是简化复杂的数据分析,掌握 pivot 函数都可以显着提高一个人的数据操作技能。与所有强大的工具一样,关键在于了解何时以及如何有效地使用 Pandas pivot。
其他资源
这篇文章由 Peace Aisosa Osarenren 撰写。Peace 是一位技术作家和数据分析师,擅长简化复杂的概念。她热衷于分解技术术语并使其更广泛的受众可以理解,她已迅速成为任何希望更好地理解技术概念的人的首选作家。无论是解释复杂的软件程序还是分解数据分析方法,她都具有使技术概念与所有人相关的天赋。