京公网安备 11010802034615号
经营许可证编号:京B2-20210330
数据重塑,顾名思义就是给数据做各种变形,主要有以下几种:
根据索引(index)、列(column)(values)值), 对原有DataFrame(数据框)进行变形重塑,俗称长表转宽表

import pandas as pd
import numpy as np
df = pd.DataFrame(
{ '姓名': ['张三', '张三', '张三', '李四', '李四', '李四'],
'科目': ['语文', '数学', '英语', '语文', '数学', '英语'],
'成绩': [91, 80, 100, 80, 100, 96]})
df
| 姓名 | 科目 | 成绩 | |
|---|---|---|---|
| 0 | 张三 | 语文 | 91 |
| 1 | 张三 | 数学 | 80 |
| 2 | 张三 | 英语 | 100 |
| 3 | 李四 | 语文 | 80 |
| 4 | 李四 | 数学 | 100 |
| 5 | 李四 | 英语 | 96 |
长转宽:使用 df.pivot 以姓名为index,以各科目为columns,来统计各科成绩:
df = pd.DataFrame(
{ '姓名': ['张三', '张三', '张三', '李四', '李四', '李四'],
'科目': ['语文', '数学', '英语', '语文', '数学', '英语'],
'成绩': [91, 80, 100, 80, 100, 96]})
df
| 姓名 | 科目 | 成绩 | |
|---|---|---|---|
| 0 | 张三 | 语文 | 91 |
| 1 | 张三 | 数学 | 80 |
| 2 | 张三 | 英语 | 100 |
| 3 | 李四 | 语文 | 80 |
| 4 | 李四 | 数学 | 100 |
| 5 | 李四 | 英语 | 96 |
df.pivot(index='姓名', columns='科目', values='成绩')
| 科目 | 数学 | 英语 | 语文 |
|---|---|---|---|
| 姓名 | |||
| 张三 | 80 | 100 | 91 |
| 李四 | 100 | 96 | 80 |

df = pd.DataFrame(
{ '姓名': ['张三', '张三', '张三', '李四', '李四', '李四'],
'科目': ['语文', '数学', '英语', '语文', '数学', '英语'],
'成绩': [91, 80, 100, 80, 100, 96]})
df1 = pd.pivot(df, index='姓名', columns='科目', values='成绩').reset_index()
df1
| 科目 | 姓名 | 数学 | 英语 | 语文 |
|---|---|---|---|---|
| 0 | 张三 | 80 | 100 | 91 |
| 1 | 李四 | 100 | 96 | 80 |
宽表变长表:使用 pd.melt 以姓名为标识变量的列id_vars,以各科目为value_vars,来统计各科成绩:
df1.melt(id_vars=['姓名'], value_vars=['数学', '英语', '语文'])
| 姓名 | 科目 | value | |
|---|---|---|---|
| 0 | 张三 | 数学 | 80 |
| 1 | 李四 | 数学 | 100 |
| 2 | 张三 | 英语 | 100 |
| 3 | 李四 | 英语 | 96 |
| 4 | 张三 | 语文 | 91 |
| 5 | 李四 | 语文 | 80 |
random.seed(1024)
df = pd.DataFrame(
{'专业': np.repeat(['数学与应用数学', '计算机', '统计学'], 4),
'班级': ['1班','1班','2班','2班']*3,
'科目': ['高数', '线代'] * 6,
'平均分': [random.randint(60,100) for i in range(12)],
'及格人数': [random.randint(30,50) for i in range(12)]})
df
| 专业 | 班级 | 科目 | 平均分 | 及格人数 | |
|---|---|---|---|---|---|
| 0 | 数学与应用数学 | 1班 | 高数 | 61 | 34 |
| 1 | 数学与应用数学 | 1班 | 线代 | 90 | 42 |
| 2 | 数学与应用数学 | 2班 | 高数 | 84 | 33 |
| 3 | 数学与应用数学 | 2班 | 线代 | 80 | 43 |
| 4 | 计算机 | 1班 | 高数 | 93 | 34 |
| 5 | 计算机 | 1班 | 线代 | 66 | 43 |
| 6 | 计算机 | 2班 | 高数 | 88 | 45 |
| 7 | 计算机 | 2班 | 线代 | 92 | 44 |
| 8 | 统计学 | 1班 | 高数 | 83 | 46 |
| 9 | 统计学 | 1班 | 线代 | 83 | 41 |
| 10 | 统计学 | 2班 | 高数 | 84 | 49 |
| 11 | 统计学 | 2班 | 线代 | 66 | 49 |
各个专业对应科目的及格人数和平均分
pd.pivot_table(df, index=['专业','科目'],
values=['及格人数','平均分'],
aggfunc={'及格人数':np.sum,"平均分":np.mean})
| 及格人数 | 平均分 | ||
|---|---|---|---|
| 专业 | 科目 | ||
| 数学与应用数学 | 线代 | 85 | 85.0 |
| 高数 | 67 | 72.5 | |
| 统计学 | 线代 | 90 | 74.5 |
| 高数 | 95 | 83.5 | |
| 计算机 | 线代 | 87 | 79.0 |
| 高数 | 79 | 90.5 |
补充说明:
df.pivot_table()和df.pivot()都是Pandas中用于将长表转换为宽表的方法,但它们在使用方式和功能上有一些区别。
使用方式:
处理重复值:
聚合操作:
总的来说,df.pivot()方法适用于长表中不存在重复值的情况,而df.pivot_table()方法适用于长表中存在重复值的情况,并且可以对重复值进行聚合操作。根据具体的数据结构和分析需求,选择合适的方法来进行转换操作。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
在数字化时代,商业竞争的核心已从“经验驱动”转向“数据驱动”,越来越多的企业意识到,商业分析不是简单的数据统计与报表呈现 ...
2026-05-06在Excel数据透视表的实操中,“引用”是连接透视表与公式、辅助数据的核心操作,而相对引用作为最基础、最常用的引用方式,其设 ...
2026-05-06 很多数据分析师做过按月份的销售额趋势图,画过按天的流量折线图,但当被问到“时间序列和普通数据有什么本质区别”“季节性 ...
2026-05-06在Excel数据分析中,数据透视表是汇总、整理海量数据的高效工具,而公式则是实现数据二次计算、逻辑判断的核心功能。实际操作中 ...
2026-04-30Excel透视图是数据分析中不可或缺的工具,它能将透视表中的数据快速可视化,帮助我们直观捕捉数据规律、呈现分析结果。但在实际 ...
2026-04-30 很多数据分析师能熟练地计算指标、搭建标签体系,但当被问到“画像到底在解决什么问题”“画像和标签是什么关系”“画像如何 ...
2026-04-30在中介效应分析中,人口统计学变量(如年龄、性别、学历、收入、职业等)是常见的控制变量或调节变量,其处理方式直接影响分析结 ...
2026-04-29在SQL数据库实操中,日期数据的存储与显示是高频需求,而“数字日期”(如20240520、20241231、45321)是很多开发者、数据分析师 ...
2026-04-29 很多分析师在设计标签时思路清晰,但真到落地环节却面临“数据在手,不知如何转化为可用标签”的困境:或因加工方式选择不当 ...
2026-04-29在手游行业竞争日趋白热化的当下,“流量为王”早已升级为“留存为王”,而付费用户留存率更是衡量一款手游盈利能力、运营质量的 ...
2026-04-28在日常MySQL数据库运维与开发中,经常会遇到“同一台服务器上,两个不同数据库(以下简称“源库”“目标库”)的表数据需要保持 ...
2026-04-28 很多分析师每天和数据打交道,但当被问到“标签是什么”“标签和指标有什么区别”“标签体系如何设计”时,却常常答不上来。 ...
2026-04-28箱线图(Box Plot)作为一种经典的数据可视化工具,广泛应用于统计学、数据分析、科研实证等领域,核心价值在于直观呈现数据的集 ...
2026-04-27实证分析是社会科学、自然科学、经济管理等领域开展研究的核心范式,其核心逻辑是通过对多维度数据的收集、分析与解读,揭示变量 ...
2026-04-27 很多数据分析师精通Excel函数和数据透视表,但当被问到“数据从哪里来”“表和视图有什么区别”“数据库管理系统和SQL是什么 ...
2026-04-27在大数据技术飞速迭代、数字营销竞争日趋激烈的今天,“精准触达、高效转化、成本可控”已成为企业营销的核心诉求。传统广告投放 ...
2026-04-24在游戏行业竞争白热化的当下,用户流失已成为制约游戏生命周期、影响营收增长的核心痛点。据行业报告显示,2024年移动游戏平均次 ...
2026-04-24 很多业务负责人开会常说“我们要数据驱动”,最后却变成“看哪张报表数据多就用哪个”,往往因为缺乏一套结构性的方法去搭建 ...
2026-04-24在Power BI数据可视化分析中,切片器是连接用户与数据的核心交互工具,其核心价值在于帮助使用者快速筛选目标数据、聚焦分析重点 ...
2026-04-23以数为据,以析促优——数据分析结果指导临床技术改进的实践路径 临床技术是医疗服务的核心载体,其水平直接决定患者诊疗效果、 ...
2026-04-23