- Titanic data
本教程使用泰坦尼克号数据集,它以 CSV 格式存储。该数据包含以下数据列:
PassengerId:每位乘客的 ID。
Survived:乘客是否存活的指示。
0表示生存,1表示死亡。Pclass:3 个票务等级之一:
1等、2等和3等。Name:乘客姓名。
Sex:乘客性别。
Age:乘客年龄(以年为单位)。
SibSp:船上兄弟姐妹或配偶的数量。
Parch:船上父母或子女的数量。
Ticket:乘客的票号。
Fare:指示票价。
Cabin:乘客的客舱号。
Embarked:登船港口。
-
Air quality data
本教程使用由 \(NO_2\) 提供、并使用 OpenAQ 包提供的关于 py-openaq 和小于2.5微米的颗粒物(PM$_{2.5}$) 的空气质量数据。
air_quality_long.csv数据集分别在巴黎、安特卫普和伦敦提供了测量站 FR04014、BETR801 和 London Westminster 的 \(NO_2\) 和 \(PM_{25}\) 值。空气质量数据集包含以下列:
city: 传感器使用的城市,巴黎、安特卫普或伦敦
country: 传感器使用的国家,FR、BE 或 GB
location: 传感器 ID,FR04014、BETR801 或 London Westminster
parameter: 传感器测量的参数,\(NO_2\) 或颗粒物
value: 测量值
unit: 测量参数的单位,本例中为 ‘µg/m³’
DataFrame的索引是datetime,即测量时间。To raw data备注
空气质量数据以所谓的*长格式*数据表示形式提供,每个观测值占一行,每个变量占数据表的一列。长/窄格式也称为 tidy data format 。
如何重塑表格布局#
对表格行进行排序#
我想根据乘客的年龄对泰坦尼克号数据进行排序。
我想根据客舱类别和年龄降序对泰坦尼克号数据进行排序。
使用
DataFrame.sort_values(),根据定义的列对表格中的行进行排序。索引将跟随行的顺序。
有关表格排序的更多详细信息,请参阅用户指南的 sorting data 部分。
长表到宽表格式#
我们使用空气质量数据集的一个小子集。我们关注 \(NO_2\) 数据,并且只使用每个地点的最初两次测量(即每组的头部)。数据集的子集将称为 no2_subset。
我希望三个站点的值作为单独的列并排显示。
pivot()函数纯粹是数据的重塑:需要每个索引/列组合的单个值。
由于 pandas 内置支持绘制多列(请参阅 plotting tutorial ),因此从*长*表格式到*宽*表格式的转换使得能够同时绘制不同的时间序列:
备注
当未定义 index 参数时,将使用现有索引(行标签)。
有关 pivot() 的更多信息,请参阅用户指南的 pivoting DataFrame objects 部分。
透视表#
我想要每个站点 \(NO_2\) 和 \(PM_{2.5}\) 的平均浓度,以表格形式展示。
在
pivot()的情况下,数据只是被重新排列。当需要聚合多个值时(在本例中,是不同时间步的值),可以使用pivot_table(),它提供了一个聚合函数(例如,mean),用于如何组合这些值。
透视表是电子表格软件中一个众所周知的概念。当对每个变量的行/列边缘(小计)感兴趣时,将 margins 参数设置为 True:
有关 pivot_table() 的更多信息,请参阅用户指南关于 pivot tables 的部分。
备注
如果您想知道,pivot_table() 确实直接与 groupby() 相关联。通过同时对 parameter 和 location 进行分组,可以获得相同的结果:
air_quality.groupby(["parameter", "location"])[["value"]].mean()
宽格式到长格式#
再次从上一节创建的宽格式表中开始,我们使用 reset_index() 为 DataFrame 添加一个新索引。
我想要将所有的 \(NO_2\) 空气质量测量值收集到单个列中(长格式)。
DataFrame上的pandas.melt()方法将数据表从宽格式转换为长格式。列标题将成为新创建列中的变量名。
解决方案是 pandas.melt() 的简写形式。该方法会将 id_vars 中未提及的所有列“融化”成两列:一列包含列标题名称,另一列包含值本身。后者默认名为 value。
可以更详细地定义传递给 pandas.melt() 的参数:
附加参数具有以下效果:
value_vars定义了要一起“融化”的列。value_name提供了一个自定义的列名,用于值列,而不是默认的列名value。var_name为收集列标题名称的列提供了一个自定义的列名。否则,它会采用索引名称或默认的variable。
因此,参数 value_name 和 var_name 只是为生成的两列设置的用户定义名称。要融化的列由 id_vars 和 value_vars 定义。
有关使用 pandas.melt() 从宽格式到长格式的转换,请参阅用户指南关于 reshaping by melt 的部分。
REMEMBER
“sort_values”支持按一列或多列进行排序。
pivot函数纯粹是数据的重构,“pivot_table”支持聚合。pivot的反向操作(长到宽格式)是 ``melt``(宽到长格式)。
完整的概述可以在用户指南关于 reshaping and pivoting 的页面上找到。