Pandas之八Reshaping(二)

简介: 聊聊透视表功能,该功能和Excel中的数据透视功能相似。pivot:对原始DataFrame进行变形整理。pivot table:可以在数据变形整理的基础上,做数据聚合操作。

前文我们聊过了数据重塑中的stackunstack,今天继续聊聊透视表功能,该功能和Excel中的数据透视功能相似。

  • pivot:对原始DataFrame进行变形整理。
  • pivot table:可以在数据变形整理的基础上,做数据聚合操作。

下面使用图中数据对其进行说明

df = pd.DataFrame(
{"A": ["foo", "foo", "foo", "foo", "foo",
       "bar", "bar", "bar", "bar"],
 "B": ["one", "one", "one", "two", "two",
       "one", "one", "two", "two"],
 "C": ["small", "large", "large", "small",
       "small", "large", "small", "small",
       "large"],
 "D": [1, 2, 2, 3, 3, 4, 5, 6, 7],
 "E": [2, 3, 4, 5, 6, 7, 8, 9, 10]
})

1. Pivot

将原始DataFrame重塑,返回一个新的DataFrame,大体变形过程如下图所示。

80a60a4624454158a75ae83b2816d7e7.png

简要说明其参数:

  • data:需要做数据透视的原始DataFrame数据
  • columns:指定一个或多个列的值作为新DataFrame的列
  • index:指定一个或多个列的值作为新DataFrame的index,注意其值不可以重复,否则报错(可选,若不填则使用现有index)
  • values:指定一个或多列的值作为新DataFrame的值(可选,若不填则使用所有剩余列)

1.1 只指定必填参数

以指定columns为例,以B列的值作为新DataFrame的列名,会默认将其余所有列作为values,缺失值以np.nan替代。

可以理解为:原index不变,而以B列中的onetwo来作为列名,展示DataFrame中所有的数据。

pd.pivot(df, columns="B")

1.2 指定所有参数

# 批定index时,注意该列的值不可重复
# 指定一列时,该列值不可重复;指定多列时,第一列的值不可重复。
pd.pivot(df, columns="B", 
         values="D", index=["E","C"])

2. Pivot Table

使用pivot只能对数据进行变形整理,有时还需要做新的数据做聚合分析,就可以使用pivot table,大体逻辑如下图。

该方法参数比较多,简单对其进行说明:

  • data:需要做数据透视的原始DataFrame数据
  • values:一列或多列做聚合处理的列名
  • index:在数据透视表index上进行分组的列,与pivot不同的是此处列中的值可以重复,因为会做聚合
  • columns: 在数据透视表列上进行分组的列
  • aggfunc: 将要应用的聚合函数,默认是计算均值 numpy.mean

datavaluesindexcolumns的用法与pivot基本一致,主要说一说aggfunc

2.1 指定一个聚合函数

对数据透视表中的DE的数据做求和计算

pd.pivot_table(df,values=["D","E"], 
               index=["A"], 
               columns=["C"],
               aggfunc=np.sum)

2.2 指定多个聚合函数

对所有数据,同时做求和和平均值计算

pd.pivot_table(df,values=["D","E"], 
               index=["A"], 
               columns=["C"],
               aggfunc=[np.sum,np.mean])

2.3 各value列指定不同聚合函数

D列的值做求和,对E列的值计算平均值

pd.pivot_table(df,values=["D","E"], 
               index=["A"], 
               columns=["C"],
               aggfunc={"D":np.sum,"E":np.mean})

目录
相关文章
|
1月前
|
SQL 数据挖掘 数据处理
Python数据分析(二)—— Pandas快速入门
Python数据分析(二)—— Pandas快速入门
|
SQL 索引 Python
Pandas之三选择数据
介绍在pandas中筛选数据的几种方法,快速定位某行、某列、具体元素的方法
749 0
Pandas之三选择数据
|
2月前
|
SQL 机器学习/深度学习 数据处理
10个Pandas的高级技巧
Pandas是我们最常用的数据处理Python库之一。尽管您可能已经与它共事多年,但可能还有许多您尚未探索的实用方法。我将向您展示一些可能未曾听说但在数据整理方面非常实用的方法。
64 0
|
7月前
|
机器学习/深度学习 人工智能 数据挖掘
pandas快速入门指南
Pandas 是一个开源的第三方 Python 库,从 Numpy 和 Matplotlib 的基础上构建而来,享有数据分析“三剑客之一”的盛名(NumPy、Matplotlib、Pandas)。是学习数据分析、AI机器学习必学组件之一。 Pandas 这个名字来源于面板数据(Panel Data)与数据分析(data analysis)这两个名词的组合。在经济学中,Panel Data 是一个关于多维数据集的术语。Pandas 对数据的处理是为数据的分析服务的,它所提供的各种数据处理方法、工具是基于数理统计学出发,包含了日常应用中的众多数据分析方法。
87 0
pandas快速入门指南
BXA
|
11月前
|
机器学习/深度学习 数据采集 数据可视化
Python数据分析:Pandas基础教程
在Pandas中Series被定义为一个带索引的一维数组,它可以是任何一个数据类型的NumPy数组。DataFrame是具有行和列索引的二维数据结构,每列可以是不同类型的值(数字、字符串、布尔型等)
BXA
101 0
|
Oracle 数据挖掘 关系型数据库
python数据分析-pandas基础(1)
pandas是处理结构化(表格数据)最常用的工具,是python数据分析和数据处理的最成熟的库。pandas最早是为了处理金融数据而开发的,开放到社区至今,已经广泛应用于各个领域中;pandas以numpy为基础,而pandas是其他应用的数据基础,如Scikit-learn等。
133 0
python数据分析-pandas基础(1)
|
数据可视化 数据挖掘 数据处理
pandas 入门(一)
本文其实属于:Python的进阶之道【AIoT阶段一】的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 pandas 入门,后续还会单独发一篇 pandas 高级以及 pandas 进阶内容供读者学习。
197 0
pandas 入门(一)
|
索引 Python
pandas 入门(四)
本文其实属于:Python的进阶之道【AIoT阶段一】的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 pandas 入门,后续还会单独发一篇 pandas 高级以及 pandas 进阶内容供读者学习。
118 0
pandas 入门(四)
|
C++ 索引 Python
pandas 入门(三)
本文其实属于:Python的进阶之道【AIoT阶段一】的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 pandas 入门,后续还会单独发一篇 pandas 高级以及 pandas 进阶内容供读者学习。
163 0
pandas 入门(三)
|
存储 SQL 数据挖掘
Python数据分析实战基础 | 初识Pandas
Pandas是基于Numpy的专业数据分析工具,可以灵活高效的处理各种数据集,也是我们后期分析案例的神器。它提供了两种类型的数据结构,分别是DataFrame和Series,我们可以简单粗暴的把DataFrame理解为Excel里面的一张表,而Series就是表中的某一列,后面学习和用到的所有Pandas骚操作,都是基于这些表和列进行的操作。
402 0
Python数据分析实战基础 | 初识Pandas