更多详情请点击查看原文:Python 教学 | 数据分析必知必会——数据透视表

Python教学专栏,旨在为初学者提供系统、全面的Python编程学习体验。通过逐步讲解Python基础语言和编程逻辑,结合实操案例,让小白也能轻松搞懂Python!
>>>点击此处查看往期Python教学内容

本文目录

一、前言

二、演示数据介绍

三、数据透视表实现——df.pivot_table() 

四、结束语

五、相关推荐

本文共 2053 个字,阅读大约需要 6 分钟,欢迎指正!

Part1 前言

数据透视表是一种可以对数据动态排布并且分类汇总的表格格式,是数据分析中最常用的表格之一。使用数据透视表可以快速对多维数据进行数据透视,清晰地查看其数据分布。熟悉 Excel 的小伙伴可能在 Excel 中使用过数据透视表,今天我们要介绍的则是使用 Python 进行数据透视表制作的方法。

Part2 演示数据介绍

本文演示用的数据是基于“浙大卡特-企研中国涉农研究数据库”统计来的家庭农场(企业)数量统计(年度-城市-企业类型)数据表。该数据分多个维度(年份、省份、城市、企业类型)统计了家庭农场(企业)的企业进入数量、企业退出数量、企业存量等信息,样例数据如下图所示。

图片

样例数据来源:家庭农场(企业)数量统计(年度-城市-企业类型)

从上图可以看出,我们可以从多个维度对该数据进行分析,而这也正是数据透视表擅长的事情。

Part3 数据透视表实现——df.pivot_table()

我们可以使用 Pandas 库中的函数df.pivot_table()来构建数据透视表,在介绍这个函数的用法之前,我们先来看一下数据透视前后的数据结构发生了哪些变化。

图片

图片

原始数据为面板数据,记录了一个年份下一个城市的一种类型企业的数量,我们将其转为数据透视表后则可以直接看到某个省份下所有城市的每一年的加总值(上图数据透视应用的是加总函数)。实现上述数据透视的 Python 代码如下:

# 导入需要使用的第三方库
import pandas as pd
import numpy as np

# 读入数据
df = pd.read_csv('./CCAD_JTNC_JBXX_GNCSLX2024.csv')

# 构建数据透视表
data.pivot_table(
                values=['ADDED', 'DEAD', 'ALIVE'], 
                index=['PROVINCE_CN', 'ENTTYPE'], 
                columns=['YEAR'], 
                aggfunc=np.sum,
                margins=True
                )

下面我们来详细介绍一下df.pivot_table()的用法和参数。常用参数的名称以及含义如下表所示。

参数取值描述
values字段名或者含字段名的列表,也可以是 None,且默认值也是 None需要进行数据透视计算的字段名称,通常这些字段中的值都是数值。当不指定该参数时,默认使用 None,表示对所有数值字段进行数据透视计算。
index字段名或者含字段名的列表在数据透视表索引上进行分组的键,即哪些分组将显示在行索引上。
columns字段名或者含字段名的列表在数据透视表列上进行分组的键,即哪些分组将显示在列索引上。
aggfunc数据透视过程中分组后用于计算的函数,默认值为 'mean',即 np.mean 表示计算组内的平均值。上图例子中使用的是函数 'sum' ,即 np.sum,表示组内数据加总。可用的函数还有 'median'(取中位数)、'max'(取最大值)、'min'(取最小值)、'std'(计算标准差)、'var'(计算方差)……也可以使用自定义函数。
fill_value任意标量在数据透视表中,有时某些组合没有任何数据,这会导致这些位置出现缺失值(NaN)。此时你可以指定一个值来填充这些缺失值。把这个值传给该参数即可。
marginsTrue 或 False,默认值为 False是否在数据透视表的边缘添加总计行(显示每列的总和或其他聚合结果)和总计列(显示每行的总和或其他聚合结果)
margins_name任意字符串,默认值为 'All'当参数 margins 为 True 时,
dropnaTrue 或 False,默认值为 True在聚合时是否忽略值全为空的列。

了解上述参数后,这样我们再去使用构造数据透视表时就变得非常简单了,例如,当我们需要查看各省每年各类企业存量的最大值,就可以使用下面的代码进行数据透视。

data.pivot_table(
                values=['ALIVE'], 
                index=['PROVINCE_CN', 'ENTTYPE'], 
                columns=['YEAR'], 
                aggfunc=np.max,
                )

图片

数据透视表构建完成后,我们也可以将其保存为本地的 Excel 表,保存后,pandas 会自动根据分组进行合并单元格,还算是比较人性化。

# 保存时不设置 index 参数
data.pivot_table(
                values=['ALIVE'], 
                index=['PROVINCE_CN', 'ENTTYPE'], 
                columns=['YEAR'], 
                aggfunc=np.max,
                ).to_excel('./数据透视表.xlsx')

图片

Part4 总结

💡 本期文章介绍了数据分析库 pandas 中一个非常重要的函数 df.pivot_table(),使用它可以快速的构建数据透视表,熟练掌握后,将比使用 Excel 工具构建数据透视表还要简单,而且使用 pandas 对较大的数据集来说会更加方便。希望本期内容能为你提供帮助。 

👉如需获取本文演示代码以及演示所用数据请查看原文:Python 教学 | 数据分析必知必会——数据透视表

Part5 相关推荐

Python 教学

•  Python 教学 | 学习 Python 第一步——环境安装与配置

•  Python 教学 | Python 基本数据类型

•  Python 教学 | Python 字符串操作(上)

•  Python 教学 | Python 字符串操作(下)

•  Python 教学 | Python 变量与基本运算

•  Python 教学 | 组合数据类型-列表

•  Python 教学 | 组合数据类型-集合(内含实例)

•  Python 教学 | 组合数据类型 - 字典&元组

•  Python 教学 | Python 中的分支结构(判断语句)

•  Python 教学 | Python 中的循环结构(上)

•  Python 教学 | Python 中的循环结构(下)

•  Python 教学 | Python 函数的定义与调用

•  Python 教学 | Python 内置函数

•  Python 教学 | 最常用的标准库之一 —— os

•  Python 教学 | 盘点 Python 数据处理常用标准库

•  Python 教学 | “小白”友好型正则表达式教学(一)

•  Python 教学 | “小白”友好型正则表达式教学(二)

•  Python 教学 | “小白”友好型正则表达式教学(三)

•  Python 教学 | 数据处理必备工具之 Pandas(基础篇)

•  Python 教学 | 数据处理必备工具之 Pandas(数据的读取与导出)

•  Python 教学 | Pandas 数据索引与数据选取

•  Python 教学 | Pandas 妙不可言的条件数据筛选

•  Python 教学 | Pandas 缺失值与重复值的处理方法

•  Python 教学 | Pandas 表格数据行列变换

•  Python 教学 | Pandas 表格字段类型精讲(含类型转换)

•  Python 教学 | Pandas 数据合并(含目录文件合并案例)

•  Python 教学 | Pandas 数据匹配(含实操案例)

•  Python 教学 | Pandas 函数应用(apply/map)【上】

•  Python 教学 | Pandas 函数应用(apply/map)【下】

•  Python 教学 | Pandas 分组聚合与数据排序

•  Python 教学 | Pandas 时间数据处理方法

•  Python 教学 | 列表推导式 & 字典推导式

•  Python 教学 | 一文搞懂面向对象中的“类和实例”

•  Python 教学 | Python 学习路线+经验分享,新手必看!

•  Python 教学 | 解密 Windows 中的 Path 环境变量

•  Python 教学 | Jupyter Notebook 中那些十分有用的魔术命令

Python实战

•  Python实战 | 如何使用 Python 调用 API

•  Python 实战 | 使用正则表达式从文本中提取指标

•  大数据分析 | 用 Python 做文本词频分析

•  数据治理 | 从“今天中午吃什么”中学习Python文本相似度计算

•  数据治理 | 省下一个亿!一文读懂如何用python读取并处理PDF中的表格(赠送本文所用的PDF文件)

•  数据治理 | 还在人工识别表格呢?Python 调用百度 OCR API 又快又准

•  数据治理 | 如何用 Python 批量压缩/解压缩文件

•  案例分享:使用 Python 批量处理统计年鉴数据(上)

•  案例分享:使用 Python 批量处理统计年鉴数据(下)

•  Python 实战 | ChatGPT + Python 实现全自动数据处理/可视化

•  ChatGPT在指尖跳舞: open-interpreter实现本地数据采集、处理一条龙

•  Python 实战 | 文本分析之文本关键词提取

•  Python 实战 | 文本分析工具之HanLP入门

•  Python 实战 | 进阶中文分词之 HanLP 词典分词(上)

•  Python 实战 | 进阶中文分词之 HanLP 词典分词(下)

•  Python实战 | 文本文件编码问题的 Python 解决方案

•  Python 实战 | 从 PDF 中提取(框线不全的)表格

•  Python 实战 | 利用 Python 做长宽面板转换(附数据&代码)

•  Python 实战 | 拆分、合并、转换……请查收这份 PDF 操作手册

•  答疑解惑 | 云桌面用户如何使用 Python 连接数据库读写、处理数据

•  Python 实战 | 使用 Python 清洗文本字段中的 HTML 代码

•  答疑解惑 | csv 数据字段错位?导入 Stata 中途报错?到底怎么解决……

•  Python 实战 | 表格中多信息字段的拆分方法(一行变多行)

数据可视化

•  数据可视化 | 讲究!用 Python 制作词云图学问多着呢

•  数据可视化 | 地址数据可视化—教你如何绘制地理散点图和热力图

•  数据可视化 | 太酷了!用 Python 绘制3D地理分布图

•  数据可视化 | 用 Python 制作动感十足的动态柱状图

•  数据可视化 | Python绘制多维柱状图:一图展示西部各省人口变

迁【附本文数据和代码】

•  数据可视化 | 3D 柱状图一览各省农民合作社存量近十年变化

更多推荐