[Python办公]Pandas创建透视表入门2

news2024/9/27 9:22:05

pivot_table 透视表在 Pandas 中是一个非常强大和灵活的工具,它支持许多高级功能,可以用于复杂的数据分析和报告生成。以下是一些更高级的用法和详细说明

1. 多级索引(MultiIndex)

pivot_table 支持多级索引,这意味着你可以根据多个列创建行索引和列索引。这在处理复杂的

数据结构时非常有用。

import pandas as pd

# 创建一个示例 DataFrame
data = {
    '部门': ['A', 'A', 'B', 'B'],
    '职位': ['经理', '开发', '经理', '开发'],
    '薪资': [500, 600, 700, 800],
    '性别': ['男', '女', '男', '女']
}
# 将数据转化为pandas的dataframe
df = pd.DataFrame(data)
#创建透视表
pivot_table = pd.pivot_table(
    df,
    values='薪资',
    index=['部门', '职位'],
    columns=['性别'],
    aggfunc='sum'
)

pivot_table参数含义说明:

  1. data: 输入的DataFrame数据。
  2. values: 需要聚合的列。可以是单个或多个列名。
  3. index: 用于分组的列,透视表的行标签。
  4. columns: 用于分组的列,透视表的列标签。
  5. aggfunc: 聚合函数,例如mean、sum、count等。默认是mean。
  6. fill_value: 填充缺失值的值。
  7. margins: 是否添加行/列的总计项,默认是False。
  8. margins_name: 总计项的名称,默认为All。
  9. dropna: 是否丢弃所有条目为NaN的列。
  10. observed: 对于分类数据,是否仅显示实际观测到的组合。

2. 使用 margins 进行总计

设置 margins=True 将在透视表的底部和/或右侧添加总计行和列。你还可以通过 margins_name 参数自定义总计的名称。

pivot_table = pd.pivot_table(
    df,
    values='薪资',
    index='部门',
    columns='职位',
    aggfunc='sum',
    margins=True,
    margins_name='总计'
)

3. 自定义聚合函数

aggfunc 参数不仅接受预定义的聚合函数,还可以接受自定义函数。这对于执行复杂的聚合操作非常有用。

def custom_agg(x):
    return x.max() - x.min()

pivot_table = pd.pivot_table(
    df,
    values='薪资',
    index='部门',
    columns='职位',
    aggfunc=custom_agg
)

4. 处理缺失值

pivot_table 提供了几个参数来处理缺失值:

  • fill_value: 用指定的值替换 NaN 值。
  • dropna: 设置为 True 时,会删除没有数据的行和列。
pivot_table = pd.pivot_table(
    df,
    values='薪资',
    index='部门',
    columns='职位',
    aggfunc='sum',
    fill_value=0,
    dropna=False
)

5. 分组和子集化数据

你可以在 pivot_table 中使用 groupby 功能对数据进行分组,并只对特定的子集进行分析。

pivot_table = pd.pivot_table(
    df.groupby('部门').head(2),  # 只考虑每个部门的前两个记录
    values='薪资',
    index='部门',
    columns='职位',
    aggfunc='sum'
)

6. 使用计算列

pivot_table 还允许你使用计算列,即在创建透视表时动态计算新的列。

pivot_table = pd.pivot_table(
    df,
    values='薪资',
    index='部门',
    columns='职位',
    aggfunc='sum'
)
pivot_table['总薪资'] = pivot_table.sum(axis=1)  # 计算每行的总薪资

7. 多个聚合函数

你可以为不同的列指定不同的聚合函数,甚至为同一列指定多个聚合函数。

pivot_table = pd.pivot_table(
    df,
    values=['薪资', '年龄'],
    index='部门',
    columns='职位',
    aggfunc={'薪资': 'sum', '年龄': ['mean', 'max']}
)

这些高级用法使得 pivot_table 成为一个非常强大的数据分析工具,可以用于处理各种复杂的数据结构和分析需求。通过灵活地使用这些功能,你可以轻松地创建满足特定需求的透视表。

以下是带有注释的代码,展示了如何使用 Pandas 的 pivot_table 函数以及一些高级用法:

import pandas as pd

# 假设 df 是这样的 DataFrame
#    部门  职位  薪资
# 0   A    经理   500
# 1   A    开发   600
# 2   B    经理   700
# 3   B    开发   800
data = {
    '部门': ['A', 'A', 'B', 'B'],
    '职位': ['经理', '开发', '经理', '开发'],
    '薪资': [500, 600, 700, 800]
}

# 创建 DataFrame
df = pd.DataFrame(data)


# 创建透视表,按部门和职位对薪资进行求和
pivot_table = pd.pivot_table(
    df,
    values='薪资',  # 要汇总的列名
    index='部门',  # 行索引的列名
    columns='职位',  # 列索引的列名
    aggfunc='sum'  # 聚合函数
)

# 打印透视表
print(pivot_table)

# 使用 margins 进行总计
pivot_table_with_margins = pd.pivot_table(
    df,
    values='薪资',  # 要汇总的列名
    index='部门',  # 行索引的列名
    columns='职位',  # 列索引的列名
    aggfunc='sum',  # 聚合函数
    margins=True,  # 添加总计行和列
    margins_name='总计'  # 设置总计行的名称
)

# 打印带有总计的透视表
print(pivot_table_with_margins)

# 自定义聚合函数
def custom_agg(x):
    return x.max() - x.min()

# 使用自定义聚合函数创建透视表
pivot_table_custom_agg = pd.pivot_table(
    df,
    values='薪资',  # 要汇总的列名
    index='部门',  # 行索引的列名
    columns='职位',  # 列索引的列名
    aggfunc=custom_agg  # 自定义聚合函数
)

# 打印使用自定义聚合函数的透视表
print(pivot_table_custom_agg)

# 处理缺失值
pivot_table_fillna = pd.pivot_table(
    df,
    values='薪资',  # 要汇总的列名
    index='部门',  # 行索引的列名
    columns='职位',  # 列索引的列名
    aggfunc='sum',  # 聚合函数
    fill_value=0,  # 用 0 替换 NaN 值
    dropna=False  # 即使某些组合没有数据,也保留对应的行和列
)

# 打印处理缺失值后的透视表
print(pivot_table_fillna)

# 使用计算列
pivot_table_with_calculated_column = pivot_table_with_margins.copy()
pivot_table_with_calculated_column['总薪资'] = pivot_table_with_margins.sum(axis=1)  # 计算每行的总薪资

# 打印带有计算列的透视表
print(pivot_table_with_calculated_column)

# 多个聚合函数
pivot_table_multiple_aggs = pd.pivot_table(
    df,
    values=['薪资', '年龄'],  # 要汇总的列名列表
    index='部门',  # 行索引的列名
    columns='职位',  # 列索引的列名
    aggfunc={'薪资': 'sum', '年龄': ['mean', 'max']}  # 为不同列指定不同的聚合函数
)

# 打印使用多个聚合函数的透视表
print(pivot_table_multiple_aggs)

这些代码示例展示了如何使用 pivot_table 进行数据透视,包括如何添加总计、使用自定义聚合函数、处理缺失值、添加计算列以及为不同列指定多个聚合函数。通过这些示例,你可以更好地理解 pivot_table 的灵活性和强大功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2052891.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iPhone16操作按钮大变样?引入快门拍摄按钮,提前告诉你它要干啥

随着智能手机摄影功能的不断升级,用户对于高质量照片和视频的需求也日益增长。苹果公司一直以来都在引领移动摄影技术的发展方向,而即将到来的iPhone 16系列更是备受瞩目。据多个消息来源透露,iPhone 16将引入一项创新功能——一个专门设计用…

【python实现修改所有可执行程序的图标】

实现效果: 图标在此 替换前: 吐槽:这原版看着也不像原版😃 替换后: 代码: 注:必须要.ico图标文件 import winreg import ctypes import sys import os# 使用管理员身份打开程序 ctypes.windll…

3万多育儿宝典育儿网站ACCESS\EXCEL数据库

找了下以前弄到的一些育儿数据,发现小数据的《育儿宝典育儿知识大全ACCESS数据库》《结构漂亮的怀孕手册ACCESS数据库》、《结构漂亮的亲子宝典ACCESS数据库》,大的数据有《3万妈妈说育儿百科知识ACCESS数据库》而今天又弄到了一个3万多的育儿宝典网站&a…

ArcGIS Pro基础:状态栏显示栏的比例尺设置和经纬度位置

上图所示,界面下方最左侧是显示的比例尺,可以进行选择设置,也可以进行自定义设置 上图所示,可以手动录入比例尺,同时也可以对比例尺设置别名,比如【实验1】作为特定比例尺的标记 如上图所示,可以…

火语言RPA流程组件介绍--变量持久化及读取

变量持久化及读取 对于一些常用变量在下次或其他流程需要继续使用时,可以将内存中的变量持久化保存到该组件格式化的特定本地文件中,在下次或其他流程使用时从文件读取数据输出至下一个组件或变量,常用来保存难以初始化或者在流程中进行特定…

解决方案上新了丨趋动科技牵手谐云,联合打造支持算力池化的边缘计算解决方案

得益于近些年发展得如火如荼的云原生技术、尤其是作为云原生技术底座的容器云技术的高速发展和产业化落地,业界发现,将GPU等算力资源容器化、资源池化,可以将算力的管理能力拓展到整个数据中心。 作为国内为数不多掌握底层核心技术的容器云产…

SpringBoot响应式编程(4)Spring Security Reactive

一、概述 1.1应用安全 防止攻击: ○ DDos、CSRF、XSS、SQL注入... 控制权限 ○ 登录的用户能干什么。 ○ 用户登录系统以后要控制住用户的所有行为,防止越权; 传输加密 ○ https ○ X509 认证: ○ OAuth2.0 ○ JW…

【秋招笔试】8.15联想(前端卷)-(第二套)-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…

微软开源项目 Detours 详细介绍与使用实例分享

目录 1、Detours概述 2、Detours功能特性 3、Detours工作原理 4、Detours应用场景 5、Detours兼容性 6、Detours具体使用方法 7、Detours使用实例 - 使用Detours拦截系统库中的UnhandledExceptionFilter接口,实现对程序异常的拦截 C++软件异常排查从入门到精通系列教程…

ant design 的 tree 如何作为角色中的权限选择之二

还是接着上一节来 ant design 的 tree 如何作为角色中的权限选择之一 这里先放一下全部代码: import { useIntl } from umijs/max; import React, { Key, useState } from react; import { ProForm, ProFormText } from ant-design/pro-components; import { Form…

Python爬虫案例一:获取古诗文并按用户输入的作者名进行数据保存

前言: 1、什么是爬虫?也称为网页蜘蛛(Web Spider),通俗来说,解放人的双手, 去互联网获取数据, 以数据库, txt, excel, csv, pdf, 压缩文件, image, video, music保存数据。本质: 模拟浏览器, 向服务器发送…

【书生大模型实战】InternVL 微调实践闯关任务

一、关卡任务 基础任务 follow 教学文档和视频使用QLoRA进行微调模型,复现微调效果,并能成功讲出梗图.尝试使用LoRA,或调整xtuner的config,如LoRA rank,学习率。看模型Loss会如何变化,并记录调整后效果(选…

消防隐患在线小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,消防隐患举报管理,消防隐患分类管理,统计分类管理,处理结果管理,系统管理 微信端账号功能包括:系统首页,我…

vue+elmentui 定义狂拽黑金配色的按钮+消息框

1 修改效果 通过自定义样式的方式可以修改elmentui的配色,例如下面我们修改掉了button的primary配色为黑金色: 修改前: 修改后 修改了elementui 的$message(success类型)颜色为黑金色、图标也修改为金色了: 修改前…

WPF 手撸插件 三 插件文件热加载

1、在程序运行的同时将插件文件复制到指定的插件目录下,插件自动被加载。不废话了直接上代码吧。需要的可以帮我贡献点积分,谢谢各位大佬了。 示例文件下载https://download.csdn.net/download/xingchengaiwei/896388912、主要功能代码如下。注意初学者…

阿里云搜索专家实操:如何高效构建企业级 AI 搜索?

作者:来自阿里云搜索产品专家牛俊 本文由阿里云搜索产品专家牛俊在【AI 搜索 TechDay】上的分享【阿里云 AI 搜索 Demo 展示和动手实践】整理而成。 阿里云 AI 搜索的产品能力与业务价值 阿里云 AI 搜索的方案,基于阿里云 Elasticsearch Inference API…

什么是国债期货?怎么玩?

国债期货,也就是利率期货,是一种在交易所里买卖未来国债价格的金融工具。它允许投资者在今天定下价格,然后在将来的某个时间点进行交易。在中国,国债期货在金融期货交易所上市,有几种不同的期限,比如30年期…

CDGA|数据治理核心能力框架与数据治理体系规划

随着数字化转型的加速和大数据技术的广泛应用,数据已成为企业核心资产之一。如何高效、安全地管理和利用数据,成为企业提升竞争力和创新能力的重要课题。本文将从数据治理核心能力框架和数据治理体系规划两个方面进行探讨,以期为企业的数据治…

Controller中接收数组参数 post请求中在body中传+post请求中通过表单形式传(x-www-form-urlencoded)

1、场景 需要根据用户id集合批量删除用户数据,前端使用post请求,controller中参数接收数组参数并根据用户id删除用户基本信息 2、分析处理: 2.1、前端请求类型contentType:application/json 请求体中为json字符串,后端新建一个Us…

【GH】【EXCEL】bumblebee简介:GH↔EXCEL

文章目录 bumblebeeaddressComponentAnalysisAppCellChartingDataGraphicsRangeShapesWorkbooksWorksheets Sample: Accessing_ExcelExcel ApplicationWorkbookSave Workbook (Create)Get All Workbooks from AppGet Workbook by Name Get WorkbookGet Active Workbook from Ap…