通过unstack()函数将堆叠数据重整为规整数据
发布时间:2024-01-09 17:15:21
unstack()函数是Pandas库中的一个函数,用于将堆叠数据(stacked data)重整为规整数据(unstacked data)。堆叠数据是指数据的行索引和列索引都是层次化的,而规整数据是指数据的行索引和列索引都是单层的。通过使用unstack()函数,我们可以将堆叠数据按照我们想要的方式进行重组。
下面是一个使用unstack()函数的示例:
假设我们有一个包含学生考试成绩的DataFrame,其中行索引是学生的姓名,列索引是科目和具体考试日期的层次化索引,值是对应科目在对应日期的考试成绩。我们希望将这个堆叠数据按照科目进行重整,使得行索引是学生姓名,列索引是科目,值是对应科目的所有考试成绩。
首先,让我们创建一个包含堆叠数据的DataFrame:
import pandas as pd
data = {'姓名': ['小明', '小红', '小刚', '小明', '小红', '小刚'],
'科目': ['数学', '数学', '数学', '语文', '语文', '语文'],
'考试日期': ['2021-01-01', '2021-02-01', '2021-03-01', '2021-01-01', '2021-02-01', '2021-03-01'],
'考试成绩': [90, 95, 80, 85, 90, 95]}
df = pd.DataFrame(data)
stacked_df = df.set_index(['姓名', '科目', '考试日期'])
现在,stacked_df是一个堆叠数据,它的行索引包含三个层次:姓名、科目和考试日期。我们可以使用unstack()函数将其重整为规整数据:
unstacked_df = stacked_df.unstack()
unstack()函数将第三个层次的索引(考试日期)作为列索引,得到以下结果:
考试成绩
考试日期 2021-01-01 2021-02-01 2021-03-01
姓名 科目
小刚 数学 NaN NaN 80.0
语文 NaN NaN 95.0
小明 数学 90.0 NaN NaN
语文 85.0 NaN NaN
小红 数学 NaN 95.0 NaN
语文 NaN 90.0 NaN
现在,我们得到了一个规整数据,行索引是学生的姓名,列索引是考试日期,值是对应的考试成绩。可以看到,unstack()函数将堆叠数据转换为了规整数据,更方便我们进行分析和处理。
在实际的数据分析中,我们经常会遇到需要重整数据的情况。通过使用unstack()函数,我们可以灵活地将堆叠数据按照我们的需求进行重组,进一步加强数据的可读性和可操作性。
