📜  如何使用 Pandas stack() 将宽数据帧转换为整洁数据帧?(1)

📅  最后修改于: 2023-12-03 15:08:23.269000             🧑  作者: Mango

如何使用 Pandas stack() 将宽数据帧转换为整洁数据帧?

在数据处理中,经常遇到宽数据帧和长数据帧的转换问题。长数据帧一般是指数据排列在一列中的数据集,而宽数据帧则是指数据排列在表格中不同的列中。

Pandas 提供了 stack() 函数,可以将宽数据帧转换为整洁数据帧,使之更容易进行数据分析,并且有助于更好地可视化数据。

准备工作

本文主要使用 Pandas 库来进行数据处理,需要先安装 Pandas 库。

安装 Pandas 库的命令如下:

pip install pandas

安装完成后,就可以使用 Pandas 库进行数据处理了。

示例

下面,我们来看一个使用 Pandas stack() 函数将宽数据帧转换为整洁数据帧的示例。

生成宽数据帧

我们首先生成一个宽数据帧,包含三列数据:

import pandas as pd

data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Math': [89, 75, 86],
    'Science': [85, 82, 90],
    'English': [91, 87, 82]
}

df = pd.DataFrame(data)
print(df)

运行上面的代码,会输出以下结果:

       Name  Math  Science  English
0     Alice    89       85       91
1       Bob    75       82       87
2  Charlie    86       90       82

从输出结果可以看到,我们生成了一个宽数据帧,其中每个学生的姓名、数学成绩、自然科学成绩和英语成绩都分别排列在不同的列中。

使用 stack() 函数转换数据帧

我们可以使用 stack() 函数将宽数据帧转换为整洁数据帧。在转换数据帧时,我们需要将需要转换的列转换成行,使用 stack() 函数实现:

df_new = df.set_index('Name').stack().reset_index()
df_new.columns = ['Name', 'Subject', 'Score']
print(df_new)

运行上面的代码,会输出以下结果:

       Name  Subject  Score
0     Alice     Math     89
1     Alice  Science     85
2     Alice  English     91
3       Bob     Math     75
4       Bob  Science     82
5       Bob  English     87
6  Charlie     Math     86
7  Charlie  Science     90
8  Charlie  English     82

从输出结果可以看到,我们使用 stack() 函数将宽数据帧转换为了整洁数据帧,每个学生的姓名、科目和成绩都分别排列在了不同的行中。

总结

本文主要介绍了如何使用 Pandas stack() 函数将宽数据帧转换为整洁数据帧。使用 stack() 函数可以更好地进行数据分析,并且有助于更好地可视化数据。如果您在数据分析过程中遇到了宽数据帧和长数据帧的转换问题,可以考虑使用 Pandas stack() 函数。