PythonPandas 让数据处理、表示和分析变得更加简单。我们可以使用 Pandas 数据透视表 来创建类似电子表格的数据透视表,其结果以 DataFrame 的形式呈现。在生成的结果 DataFrame 中,数据透视表的层级将作为 MultiIndex 对象(分层索引)存储在行和列上。
在 pandas 中,数据透视表是一种对 DataFrame 中的数据进行汇总和聚合的方法,特别是在处理多个维度或分类变量时非常有用。它允许我们重塑和转换数据,从而更容易进行分析并获得洞察。在数据透视表中,我们可以指定原始 DataFrame 中的哪些列应该成为新的索引,哪些列应该成为新的列,以及哪些列应该用于数据聚合。
> 语法:
>
>
> pandas.pivottable(data, values=None, index=None, columns=None, aggfunc=‘mean‘, fillvalue=None, margins=False, dropna=True, marginsname=‘All‘, observed=NoDefault.no_default, sort=True)
>
>
> #### 参数:
>
> – **data**: 用于创建数据透视表的 DataFrame。
> – **values**: 要聚合的列。可以是一个列表、单个列名或标量值。它指定将在结果数据透视表中聚合的值。
> – **index**: 列、分组器、数组或前述对象的列表。其唯一值将成为数据透视表索引的列。
> – **columns**: 列、分组器、数组或前述对象的列表。其唯一值将成为数据透视表列的列。
> – **aggfunc**: 函数、函数列表或字典。指定如何聚合值。常见选项包括 ‘mean‘(平均值)、‘sum‘(求和)、‘count‘(计数)、‘min‘(最小值)、‘max‘(最大值)等。它可以是单个函数、函数列表,或者是键为列名、值为聚合函数的字典。
> – INLINECODEc07ad16c: 标量值,默认为 INLINECODE75e48ae5。用于填充结果数据透视表中缺失值的值。
> – INLINECODE9832921e: 布尔值,默认为 INLINECODEf442c558。如果为 True,它将在数据透视表中添加行/列边距(小计)。
> – INLINECODEa692cc05: 布尔值,默认为 INLINECODE3e61a55c。如果为 True,它将从结果中排除 NA/null 值。
> – INLINECODE5c2b3a2b: 字符串,默认为 INLINECODEe48689a0。当 margins=True 时,用于包含总计的行/列的名称。
> – INLINECODEa4fe6944: 布尔值,默认为 INLINECODE41b664cd(自 2.2.0 版本起已弃用)。该参数已被弃用且不再使用。
> – INLINECODE6c7a5fb8: 布尔值,默认为 INLINECODE91a94b59。如果为 True,则按索引和列级别的名称对结果 DataFrame 进行排序。
学生成绩报告的数据透视表
让我们创建一个包含 Name(姓名)、Subject(科目)、Score(分数)和 Grade(成绩)列的 DataFrame (INLINECODE28ec6826)。随后,使用 INLINECODE52542ac7 方法生成一个数据透视表,并将 ‘Name‘ 列指定为索引。我们可以通过 aggfunc 参数定义分数和成绩列的聚合函数。对于 ‘Score‘,我们计算平均值;而对于 ‘Grade‘,我们选择遇到的 ‘first‘(第一个)值作为代表成绩。
Python3
CODEBLOCK_6f68cb44
输出:
Grade Score
Subject DBMS DSA DBMS DSA
Name
Jeetu B A 80 90
Ram B B 82 75
Shravan A A 88 85
商店商品报告的数据透视表
我们创建一个结构化的 DataFrame 来捕获与日期 Date、不同类别 Category 以及相应的数值 Value1 和 Value2 相关的信息。设置 margins=True 会沿着行和列添加小计,从而创建更详细的数据摘要。
Python3
“
import pandas as pd
data = {
‘Date‘: [‘2022-01-01‘, ‘2022-01-01‘, ‘2022-01-02‘, ‘2022-01-02‘],
‘Category‘: [‘A‘, ‘B‘, ‘A‘, ‘B‘],
‘Value1‘: [10, 15, 20, 25],
‘Value2‘: [30, 35, 40, 45]
}
df = pd.DataFrame(data)