返回

一文速学Pandas索引重塑实现长宽表数据转换

后端

索引重塑:在 Pandas 中高效转换数据形状

理解索引重塑

在数据科学领域,Pandas 库以其强大的数据处理功能而闻名。索引重塑是一种至关重要的技术,允许我们轻松转换数据表的形状,以满足不同的分析和可视化需求。

想象一张桌子,其中行和列包含信息。索引重塑就好比将桌子旋转 90 度,将行索引变成列索引,反之亦然。这种转换提供了新的视角,有助于我们以不同的方式查看和理解数据。

使用 Pandas 实现索引重塑

Pandas 提供了两种主要方法来执行索引重塑:set_index()reset_index() 函数。

使用 set_index() 设置索引:

set_index() 函数允许我们指定要用作索引的列。它将选定的列变成索引,并将原有的索引移动到数据表中作为列。

例如,我们有一个包含学生姓名、年龄和成绩的数据表。我们可以使用以下代码将“学生姓名”列设置为索引:

import pandas as pd

df = pd.DataFrame({
    "学生姓名": ["小明", "小红", "小刚"],
    "年龄": [18, 20, 22],
    "成绩": [85, 90, 95],
})

df_indexed = df.set_index("学生姓名")

现在,df_indexed 将成为一个新的数据表,其中“学生姓名”列变成索引,而原先的索引变为“Unnamed: 0”列。

使用 reset_index() 重置索引:

reset_index() 函数与 set_index() 相反,它将索引重置为常规列。它将索引移动到数据表中,并将原先的索引列删除。

df_reset = df_indexed.reset_index()

执行此代码后,df_reset 将恢复到其原始形状,其中“学生姓名”列成为常规列,而“Unnamed: 0”列将被删除。

高级索引重塑

除了简单的索引重塑外,Pandas 还允许进行更高级的操作,例如:

  • 多列索引: 创建由多个列组成的分层索引。
  • 层次索引: 创建基于层次化数据的索引。
  • 合并和拆分索引: 使用 concat()split() 函数合并和拆分索引。

实例演示

让我们通过一个示例来了解索引重塑的实际应用。假设我们有一个包含销售数据的长宽表:

产品 | 地区 | 2023年1月 | 2023年2月 | 2023年3月

我们希望将其转换为宽表,其中每个产品占据一行,每个月占据一列。我们可以使用以下步骤进行转换:

  1. 将“产品”列设置为索引:
df_wide = df.set_index("产品")
  1. 将数据堆叠成一列:
df_wide = df_wide.stack()
  1. 将索引重置为列,并将堆叠后的列重命名为“销量”:
df_wide = df_wide.reset_index(name="销量")

现在,df_wide 将成为一个宽表,其中每个产品占据一行,每个月占据一列,而“销量”列包含相应的销售数据。

结论

掌握索引重塑技巧对于有效地处理和分析数据至关重要。通过灵活运用 set_index()reset_index() 函数以及高级索引重塑操作,我们可以轻松转换数据形状,获取不同的视角,并从中提取有价值的见解。

常见问题解答

1. 什么是索引重塑?

索引重塑是一种转换数据表形状的技术,它将行索引变成列索引,反之亦然。

2. 如何在 Pandas 中实现索引重塑?

可以使用 set_index()reset_index() 函数实现索引重塑。

3. 什么是多列索引?

多列索引是一个由多个列组成的分层索引。

4. 如何将长宽表转换为宽表?

可以通过以下步骤将长宽表转换为宽表:

  • 将产品列设置为索引。
  • 将数据堆叠成一列。
  • 将索引重置为列,并重命名堆叠后的列。

5. 索引重塑有什么好处?

索引重塑提供了新的数据视图,允许我们以不同的方式探索和分析数据。