Pandas中的透视表

yizhihongxing

在Pandas中,透视表(pivot table)是一种数据汇总工具,它类似于Excel中的透视表,可以通过聚合、过滤等操作对数据进行快速统计和分析,帮助我们更好地理解和处理数据。

下面我们通过一个示例来详细讲解Pandas中的透视表。

假设我们有一个销售数据的DataFrame,每行表示一次销售,包括以下字段:

  • date: 销售时间
  • product: 销售的商品名称
  • category: 商品所属的类别
  • sales: 销售额
  • city: 销售所在的城市

首先,我们需要导入Pandas库和创建示例数据:

import pandas as pd

data = {
    'date': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-01', '2021-01-02', '2021-01-03'],
    'product': ['A', 'B', 'C', 'A', 'B', 'C'],
    'category': ['cat1', 'cat2', 'cat1', 'cat1', 'cat2', 'cat1'],
    'sales': [100, 200, 150, 120, 180, 130],
    'city': ['New York', 'Los Angeles', 'Chicago', 'New York', 'Los Angeles', 'Chicago']
}

df = pd.DataFrame(data)

接下来,我们可以使用Pandas的pivot_table()函数来创建透视表。pivot_table()函数的基本语法如下:

df.pivot_table(values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, margins_name='All')
  • values:指定用于聚合的数值列。
  • index:指定用于分组的行索引。
  • columns:指定用于分组的列索引。
  • aggfunc:指定聚合函数,常用的有summeancountmaxmin等。
  • fill_value:指定用于填充缺失值的值。
  • margins:指定是否在结果中添加分组汇总信息。
  • margins_name:指定分组汇总信息的名称。

比如,我们可以使用以下代码创建一个透视表,以每种商品在每个城市的销售额为统计指标:

pd.pivot_table(df, values='sales', index='product', columns='city', aggfunc='sum')

运行结果如下:

city     Chicago  Los Angeles  New York
product                               
A          120.0        180.0     100.0
B            NaN        380.0     200.0
C          150.0        130.0       NaN

其中,行表示商品名称,列表示城市,每个单元格表示对应商品在对应城市的销售额总和。可以看出,商品A在芝加哥和洛杉矶的销售额分别为120和180,商品B在洛杉矶和纽约的销售额分别为380和200,商品C在芝加哥和纽约的销售额分别为150和130。

除了单个聚合函数,aggfunc参数还可以接受一个列表或字典,用于同时计算多个聚合指标。比如,我们可以使用以下代码创建一个透视表,以每种商品在每个城市的平均销售额和销售量为统计指标:

pd.pivot_table(df, values=['sales', 'product'], index='category', columns='city', aggfunc={'sales': 'mean', 'product': 'count'})

运行结果如下:

            product                        sales                     
city        Chicago Los Angeles New York   Chicago Los Angeles New York
category                                                                
cat1              2           2        2     140.0       155.0    125.0
cat2              1           1        1     200.0       190.0    200.0

其中,行表示类别,列表示城市,每个单元格分别表示对应类别在对应城市的平均销售量和平均销售额。可以看出,cat1类别在三个城市的平均销售额分别为140、155、125,平均销售量分别为2、2、2,cat2类别在三个城市的平均销售额分别为200、190、200,平均销售量分别为1、1、1。

除了上述示例之外,透视表还可以进行多级分组、过滤、对列进行操作等等,具体操作可以参考Pandas官方文档和相关教程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas中的透视表 - Python技术站

(0)
上一篇 2023年3月27日
下一篇 2023年3月27日

相关文章

  • 用SQLAlchemy将Pandas连接到数据库

    使用 SQLAlachemy 将 Pandas 连接到数据库可以方便地将数据从 Pandas DataFrame 写入到数据库中。下面是详细的步骤: 首先导入需要的库: import pandas as pd from sqlalchemy import create_engine 创建连接数据库的引擎: engine = create_engine(‘my…

    python-answer 2023年3月27日
    00
  • 使用数据模式模块识别数据框架中的模式

    使用数据模式模块可以帮助我们快速识别数据框架中的模式,从而更好地分析和理解数据。下面是详细的讲解: 数据模式概述 在数据分析中,数据模式是指数据中的一种重复出现的特征或规律。例如,在一组销售数据中,我们可能会发现某些产品的销售量在特定的月份或季度有较大的波动,这就是一种数据模式。识别数据模式可以帮助我们更好地理解数据,找到数据中存在的问题或机会。 数据模式的…

    python-answer 2023年3月27日
    00
  • 如何在Python中计算指数型移动平均线

    指数型移动平均线(Exponential Moving Average, EMA)是一种重要的技术分析指标,它对价格的变动更为敏感,可以更快地反映最新价格的变动情况。在Python中计算指数型移动平均线也非常简单,下面我会给您介绍具体步骤。 首先需要引入numpy和pandas两个库,它们是Python数据分析中常用的工具。 import numpy as …

    python-answer 2023年3月27日
    00
  • 用Pandas的read_html()来抓取维基百科的表格

    当需要从网页上抓取表格数据时,Pandas中的read_html()函数可以帮助我们快速实现数据爬取。这个函数可以自动解析HTML页面中的表格标签,返回一个DataFrame对象,我们可以用它来进一步分析并处理数据。 下面是利用read_html()函数抓取维基百科的表格的示例代码: import pandas as pd url = ‘https://zh…

    python-answer 2023年3月27日
    00
  • Python中的应急表

    Python中的异常表达式 异常 Python中,异常指的是程序在运行时发生的错误。当程序遇到异常,程序的执行会被中断,Python运行时系统会搜索调用栈,查找能够处理该异常的try语句块,并调用相应的异常处理器。 基本语法 Python使用try…except…finally语句来处理异常: try: statements except excep…

    python-answer 2023年3月27日
    00
  • 在Python中Pandas的read_csv()函数中使用na_values参数

    在Python中,Pandas库是进行数据清洗、处理、分析以及可视化的常用工具之一。其中,read_csv()函数是Pandas库中常用的数据读取函数之一。在读取数据时,常常需要清洗数据中的缺失值。而na_values参数就是为了处理数据中的缺失值而设立的。 na_values参数可以传入一个list,指定哪些字符串代表缺失值,然后在读取数据时,将这些字符串…

    python-answer 2023年3月27日
    00
  • 查找Pandas的版本及其依赖关系

    要查找Pandas的版本及其依赖关系,可以使用以下命令: pip show pandas 这个命令会显示Pandas的版本和依赖关系。输出如下: Name: pandas Version: 1.1.5 Summary: Powerful data structures for data analysis, time series, and statistic…

    python-answer 2023年3月27日
    00
  • 如何在Pandas中用查询函数根据列值过滤行

    在Pandas中,可以使用查询函数来根据列值过滤行。以下是详细的讲解: 准备数据 首先,需要先准备一组数据。我们可以使用Pandas的DataFrame来存储数据。假设我们要准备一个学生成绩表,包含以下几个字段:姓名(name)、学号(id)、语文成绩(chinese)、数学成绩(math)、英语成绩(english)。 代码如下: import panda…

    python-answer 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部