使用 Pandas 进行数据重塑

Beginner

This tutorial is from open-source community. Access the source code

简介

在数据分析中,经常会遇到数据未按我们期望的方式排列的数据集。重塑数据是指改变数据在行和列中的组织方式的过程。在本实验中,我们将探索 Pandas 中一些用于重塑数据的关键方法,包括透视(Pivot)、堆叠(Stack)、拆栈(Unstack)、熔化(Melt)、交叉制表(Cross tabulations)、平铺(Tiling)、因式分解(Factorizing)和爆炸(Exploding)。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”(Notebook)标签页,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作的验证无法自动化。

如果你在学习过程中遇到问题,可以随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。

导入必要的库并创建 DataFrame

首先,让我们导入必要的库,并为我们的示例创建一个 DataFrame。

import pandas as pd
import numpy as np

## 创建 DataFrame
np.random.seed([3, 1415])
n = 20
cols = np.array(["key", "row", "item", "col"])
df = cols + pd.DataFrame((np.random.randint(5, size=(n, 4)) // [2, 1, 2, 1]).astype(str))
df.columns = cols
df = df.join(pd.DataFrame(np.random.rand(n, 2).round(2)).add_prefix("val"))

使用单一聚合进行透视

透视(Pivot)是 Pandas 中重塑数据的关键方法之一。它提供了一种转换数据的方式,以便你可以从不同角度查看数据。

## 使用 val0 的均值对 df 进行透视
df.pivot_table(values="val0", index="row", columns="col", aggfunc="mean", fill_value=0)

使用多个聚合进行透视

我们还可以在透视操作中执行多个聚合。

## 使用 val0 的均值和总和对 df 进行透视
df.pivot_table(values="val0", index="row", columns="col", aggfunc=["mean", "sum"])

交叉制表

交叉制表是一种用于定量分析多个变量之间关系的方法。

## 行与列之间的交叉制表
df.pivot_table(index="row", columns="col", fill_value=0, aggfunc="size")

总结

恭喜你!你已经完成了“使用 Pandas 进行数据重塑”实验。你可以在 LabEx 中练习更多实验来提升你的技能。