如何使用 Pandas 的 stack() 函数将宽格式 DataFrame 转换为整洁格式 DataFrame?
由于 Python 拥有丰富的库和框架,它已成为数据分析和处理中最流行的编程语言之一。在这些库中,Pandas 作为数据处理中最有价值和最强大的工具之一脱颖而出。使用 Pandas,您可以轻松加载、转换和分析各种格式的数据。
在本教程中,我们将探讨如何使用 Pandas 的 stack() 函数将宽格式 DataFrame 转换为整洁格式 DataFrame。将宽格式 DataFrame 转换为整洁格式是许多数据分析工作流程中的一个必要步骤,因为它可以更轻松地进行数据操作、绘图和建模。在本文的下一部分,我们将深入探讨 Pandas stack() 函数的细节,并演示如何将其用于此转换过程。
如何使用 Pandas 的 stack() 函数将宽格式 DataFrame 转换为整洁格式 DataFrame?
在深入了解转换过程之前,让我们花点时间了解宽格式和整洁格式 DataFrame 的概念。
宽格式 DataFrame 的结构方式是,每一行代表一个单独的实体或观测值,例如一个人或一个产品。宽格式通常包含多个列,这些列存储与每个实体相关的不同属性或变量。
相反,整洁格式 DataFrame 遵循特定的结构,这使得数据分析和处理更容易。在整洁格式 DataFrame 中,每一行代表一个唯一的观测值或测量值。另一方面,列包含不同的变量或属性。
现在我们已经对宽格式和整洁格式 DataFrame 有了基本的了解,让我们深入探讨如何使用 Pandas 的 stack() 函数将宽格式 DataFrame 转换为整洁格式 DataFrame。
探索 Pandas 的 stack() 函数
Pandas 中的 stack() 函数专门用于旋转或重塑 DataFrame。它以宽格式 DataFrame 作为输入,并通过将列堆叠到行中将其转换为整洁格式 DataFrame。此操作通常称为“堆叠”,因为它垂直堆叠列值,从而产生一个更窄、更长的 DataFrame。
现在,让我们来看一个示例场景,以演示如何使用 Pandas 中的 stack() 函数将宽格式 DataFrame 转换为整洁格式 DataFrame。
考虑以下包含学生不同科目分数的宽格式 DataFrame
示例
import pandas as pd
# Create a sample wide dataframe
data = {
'Name': ['Student1', 'Student2', 'Student3'],
'Math Score': [85, 70, 95],
'Science Score': [90, 80, 92]
}
wide_df = pd.DataFrame(data)
print("Wide DataFrame:")
print(wide_df)
输出
上述代码的宽格式 DataFrame 将如下所示
Name Math Score Science Score 0 Student1 85 90 1 Student2 70 80 2 Student3 95 92
要将此宽格式 DataFrame 转换为整洁格式,我们将按照以下步骤操作
导入必要的库并加载 DataFrame
我们首先导入 Pandas 库,它为我们提供了用于转换的 stack() 函数。我们还使用 Pandas 的 DataFrame 构造函数加载宽格式 DataFrame。
示例
import pandas as pd
# Create a sample wide dataframe
data = {
'Name': ['Student1', 'Student2', 'Student3'],
'Math Score': [85, 70, 95],
'Science Score': [90, 80, 92]
}
wide_df = pd.DataFrame(data)
print("Wide DataFrame:")
print(wide_df)
检查宽格式 DataFrame 并识别要堆叠的列
仔细查看宽格式 DataFrame 并识别需要堆叠的列。在我们的示例中,我们希望堆叠“数学分数”和“科学分数”列,以将其转换为单独的行。
# Inspect the wide dataframe
print("Wide DataFrame:")
print(wide_df)
宽格式 DataFrame 将如下所示
Name Math Score Science Score 0 Student1 85 90 1 Student2 70 80 2 Student3 95 92
应用 stack() 函数重塑 DataFrame
现在,让我们使用 stack() 函数将宽格式 DataFrame 转换为整洁格式。我们将 stack() 函数应用于 wide_df 并将结果分配给一个新的变量 tidy_df。
# Apply the stack() function tidy_df = wide_df.stack().reset_index() tidy_df.columns = ['ID', 'Subject', 'Score']
讨论生成的整洁格式 DataFrame 及其结构
应用 stack() 后,我们获得了一个新的 DataFrame tidy_df,它以整洁格式表示原始的宽格式 DataFrame。整洁格式 DataFrame 有三列:“ID”、“科目”和“分数”。整洁格式 DataFrame 中的每一行对应于特定学生在特定科目中的分数。
# Display the resulting tidy dataframe
print("\nTidy DataFrame:")
print(tidy_df)
上述 DataFrame 对应的整洁格式 DataFrame 将如下所示
ID Subject Score 0 0 Math Score 85 1 0 Science Score 90 2 1 Math Score 70 3 1 Science Score 80 4 2 Math Score 95 5 2 Science Score 92
在生成的整洁格式 DataFrame 中,我们可以看到“ID”列表示宽格式 DataFrame 的原始行索引,“科目”列包含科目名称,“分数”列包含相应的分数。现在每一行都表示一个唯一的观测值,这使得数据分析和操作更加容易。
因此,我们已成功使用 Pandas 的 stack() 函数将宽格式 DataFrame 转换为整洁格式 DataFrame。
结论
在本文中,我们学习了如何使用 Pandas 的 stack() 函数将宽格式 DataFrame 转换为整洁格式 DataFrame。首先,我们探讨了宽格式和整洁格式 DataFrame 之间的区别,后者更容易分析和处理。然后,我们通过一个示例场景进行了演示,在这个场景中,我们使用了 stack() 函数来转换一个包含学生不同科目分数的宽格式 DataFrame。我们还提供了有关如何应用 stack() 函数的分步指南,并展示了生成的整洁格式 DataFrame 的结构及其列。总的来说,Pandas 的 stack() 函数是用于重塑和转换 DataFrame 以满足我们的数据分析需求的宝贵工具。
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP