欢迎访问宙启技术站
智能推送

Pandas透视表(pivot_table)详解

发布时间:2023-05-14 05:29:04

Pandas是Python的一个重要数据处理和数据分析框架。它已经成为了Python数据科学家的标配工具之一。而Pandas透视表(pivot_table)则是数据分析中一个非常常用的功能,它可以方便地对数据进行统计分析,呈现出来的结果直观可见,非常适合用于数据可视化以及报表展示。本文将详细介绍Pandas透视表的用法及应用场景。

### 1. 什么是透视表?

透视表(pivot_table)是一种数据汇总工具,它可以根据一个或多个键对数据进行聚合,将数据透视成一个新的表格。在Pandas中,我们使用pivot_table函数来创建透视表。

例如,我们有如下一份数据:

      City     Gender  Age  Sales
0   Beijing       Male   23    500
1  Shanghai     Female   25    200
2  Guangzhou     Female   29    400
3   Beijing       Male   31    700
4  Guangzhou     Female   24    300
5   Shanghai     Female   26    600
6  Guangzhou       Male   24    900

我们可以使用透视表来汇总这份数据,例如统计每个城市的销售总额、平均年龄、男女比例等等指标。

### 2. 透视表的使用方法

首先,我们需要导入pandas库:

import pandas as pd

然后,我们可以读取数据:

# 读取数据
df = pd.read_csv("data.csv")

接下来,我们可以使用pivot_table函数创建透视表。

# 创建透视表
pt = pd.pivot_table(df, index=["City"], values=["Sales", "Age"],
               aggfunc={"Sales": "sum", "Age": "mean"})
print(pt)

输出的结果如下所示:

             Age  Sales
City                  
Beijing    27.0   1200
Guangzhou  25.7   1600
Shanghai   25.5    800

这个结果就是我们按City字段对数据进行汇总后得出的透视表。其中,我们统计了每个城市的销售总额和平均年龄。

在上面的例子中,我们传递了三个参数给pivot_table函数:

- df:我们要进行透视的数据。

- index:指定透视表中的行。

- values:指定要聚合的列。

- aggfunc:指定聚合方法。

其中,indexvalues可以接收多个值。

aggfunc中,我们可以指定多个聚合函数,例如summeanmedian等等。

### 3. 透视表的更多选项

除了上面的参数之外,pivot_table函数还提供了其他非常有用的选项。

- columns:指定透视表中的列。

- margin:是否在透视表中添加总计行/列。

- fill_value:指定缺失值的填充值。

下面我们来看一些具体的例子。

#### 3.1 指定透视表中的列

我们可以同时在透视表中指定行和列。例如,我们可以根据以下数据创建透视表:

      City     Gender  Age  Sales
0   Beijing       Male   23    500
1  Shanghai     Female   25    200
2  Guangzhou     Female   29    400
3   Beijing       Male   31    700
4  Guangzhou     Female   24    300
5   Shanghai     Female   26    600
6  Guangzhou       Male   24    900

如果我们想要将这份数据按城市和性别进行透视,则可以使用以下代码:

# 创建透视表
pt = pd.pivot_table(df, index=["City"], columns=["Gender"], values=["Sales"],
               aggfunc={"Sales": "sum"})
print(pt)

输出的结果如下所示:

          Sales        
Gender   Female  Male
City                 
Beijing     NaN  1200
Guangzhou   700   900
Shanghai    800   NaN

#### 3.2 添加总计行/列

我们可以通过margins选项来添加总计行或列。例如,如果我们想要按城市和性别进行透视,同时还想要添加总计行和总计列:

# 创建透视表
pt = pd.pivot_table(df, index=["City"], columns=["Gender"], values=["Sales"],
               aggfunc={"Sales": "sum"}, margins=True)
print(pt)

输出的结果如下所示:

          Sales                 
Gender   Female  Male  All
City                      
Beijing     NaN  1200 1200
Guangzhou   700   900 1600
Shanghai    800   NaN  800
All        1500  2100 3600

#### 3.3 指定缺失值的填充值

有时候,数据中可能存在缺失值,这时候我们可以使用fill_value选项来指定缺失值的填充值。例如,如果我们想要在透视表中用0来填充缺失值:

# 创建透视表
pt = pd.pivot_table(df, index=["City"], columns=["Gender"], values=["Sales"],
               aggfunc={"Sales": "sum"}, margins=True, fill_value=0)
print(pt)

输出的结果如下所示:

          Sales                 
Gender   Female  Male  All
City                      
Beijing       0  1200 1200
Guangzhou   700   900 1600
Shanghai    800     0  800
All        1500  2100 3600

### 4. 透视表的应用场景

透视表在数据分析中非常常用,它可以帮助我们快速地进行数据汇总和统计分析,同时也非常适合用于数据可视化和报表展示。下面介绍一些透视表的应用场景:

- 翻转数据表格:如果你有一份数据表格,其中的列与行交换后更加利于数据分析,这时候你可以使用透视表来进行翻转。

- 统计汇总数据:透视表可以帮助你快速计算每个类别的平均值、总和、计数等等统计信息。如果你需要进行数据汇总和统计分析,透视表是提高效率的一种好方法。

- 数据可视化:透视表可以方便地将数据进行可视化,例如你可以将透视表转换成图表来进行展示,帮助其他人更好地理解数据信息。

- 数据报表:如果你需要向其他人展示数据报表,透视表可以帮助你快速生成报表,同时保证报表的准确性和可读性。

总之,透视表是数据分析中非常常用的工具,使用它可以让数据分析更加高效和精准。在Pandas中,我们可以使用pivot_table函数来创建透视表,灵活应用各种选项可以让数据分析更加灵活和高效。