使用 Pandas 重塑数据

PythonPythonBeginner
立即练习

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

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将探索如何使用 sort_valuespivotpivot_tablemelt 等各种函数在 pandas 中重塑数据。我们将使用泰坦尼克号和空气质量数据集来演示重塑技术。

虚拟机提示

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

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

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

导入库并加载数据

首先,让我们导入所需的库并加载数据集。

import pandas as pd

## 加载泰坦尼克号数据集
titanic = pd.read_csv("data/titanic.csv")

## 加载空气质量数据集
air_quality = pd.read_csv("data/air_quality_long.csv", index_col="date.utc", parse_dates=True)

对表格行进行排序

按照乘客年龄对泰坦尼克号数据集进行排序,然后再按客舱等级和年龄以降序排列。

## 按年龄排序
titanic.sort_values(by="Age").head()

## 按客舱等级和年龄以降序排序
titanic.sort_values(by=['Pclass', 'Age'], ascending=False).head()

将长表格格式转换为宽表格格式

现在我们将使用 pivot 函数把空气质量的长格式数据转换为宽格式。

## 仅筛选二氧化氮(no2)数据
no2 = air_quality[air_quality["parameter"] == "no2"]

## 对每个地点(按地点分组)使用2个测量值(取前两行)
no2_subset = no2.sort_index().groupby(["location"]).head(2)

## 透视数据
no2_subset.pivot(columns="location", values="value")

创建数据透视表

创建一个数据透视表,以找出每个监测站中二氧化氮(𝑁𝑂2)和细颗粒物(𝑃𝑀2.5)的平均浓度。

air_quality.pivot_table(
    values="value", index="location", columns="parameter", aggfunc="mean"
)

将宽表格格式转换为长表格格式

现在,让我们使用 melt 函数将二氧化氮(𝑁𝑂2)的宽格式数据转换为长格式。

## 重置 no2_pivoted 的索引
no2_pivoted = no2.pivot(columns="location", values="value").reset_index()

## 转换数据格式
no_2 = no2_pivoted.melt(id_vars="date.utc")

总结

在本实验中,我们学习了如何使用 sort_valuespivotpivot_tablemelt 等各种函数在 pandas 中重塑数据。我们将这些技术应用于泰坦尼克号和空气质量数据集,以对数据进行排序、透视和重塑。这些重塑技术在处理 pandas 中的数据时至关重要,并且可以帮助我们有效地分析和可视化数据。