数据重塑,顾名思义就是给数据做各种变形,主要有以下几种:
根据索引(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
AI来了,数分人也可以很省力,今天给大家介绍7个AI+数据分析工具,建议收藏。 01酷表 EXCEL 网址:https://chatexcel.com/ 这是 ...
2024-12-26一个好的数据分析模型不仅能使分析具备条理性和逻辑性,而且还更具备结构化和体系化,并保证分析结果的有效性和准确性。好的数据 ...
2024-12-26当下,AI 的发展堪称狂飙猛进。从 ChatGPT 横空出世到各种大语言模型(LLM)接连上线,似乎每个人的朋友圈都在讨论 AI 会不会“ ...
2024-12-26数据分析师这个职业已经成为了职场中的“香饽饽”,无论是互联网公司还是传统行业,都离不开数据支持。想成为一名优秀的数据分析 ...
2024-12-26在数据驱动决策成为商业常态的今天,数据分析师这一职业正迎来前所未有的机遇与挑战。很多希望转行或初入职场的人士不禁询问:数 ...
2024-12-25数据分析师,这一近年来炙手可热的职业,吸引了大量求职者的注意。凭借在大数据时代中的关键作用,数据分析师不仅需要具备处理数 ...
2024-12-25在当今数字化变革的浪潮中,数据分析师这一职业正迎来前所未有的发展机遇。回想我自己初入数据分析行业时,那种既兴奋又略显谨慎 ...
2024-12-25在当今信息爆炸的时代,数据已经像空气一样无处不在,而数据分析则是解锁这些信息宝藏的钥匙。数据分析的过程就像是一次探险,从 ...
2024-12-25在职场上,拍脑袋做决策的时代早已过去。数据分析正在成为每个职场人的核心竞争力,不仅能帮你找到问题,还能提供解决方案,提升 ...
2024-12-24Excel是数据分析的重要工具,强大的内置功能使其成为许多分析师的首选。在日常工作中,启用Excel的数据分析工具库能够显著提升数 ...
2024-12-23在当今信息爆炸的时代,数据分析师如同一位现代社会的侦探,肩负着从海量数据中提炼出有价值信息的重任。在这个过程中,掌握一系 ...
2024-12-23在现代的职场中,制作吸引人的PPT已经成为展示信息的重要手段,而其中数据对比的有效呈现尤为关键。为了让数据在幻灯片上不仅准 ...
2024-12-23在信息泛滥的现代社会,数据分析师已成为企业决策过程中不可或缺的角色。他们的任务是从海量数据中提取有价值的洞察,帮助组织制 ...
2024-12-23在数据驱动时代,数据分析已成为各行各业的必需技能。无论是提升个人能力还是推动职业发展,选择一条适合自己的学习路线至关重要 ...
2024-12-23在准备数据分析师面试时,掌握高频考题及其解答是应对面试的关键。为了帮助大家轻松上岸,以下是10个高频考题及其详细解析,外加 ...
2024-12-20互联网数据分析师是一个热门且综合性的职业,他们通过数据挖掘和分析,为企业的业务决策和运营优化提供强有力的支持。尤其在如今 ...
2024-12-20在现代商业环境中,数据分析师是不可或缺的角色。他们的工作不仅仅是对数据进行深入分析,更是协助企业从复杂的数据信息中提炼出 ...
2024-12-20随着大数据时代的到来,数据驱动的决策方式开始受到越来越多企业的青睐。近年来,数据分析在人力资源管理中正在扮演着至关重要的 ...
2024-12-20在数据分析的世界里,表面上的技术操作只是“入门票”,而真正的高手则需要打破一些“看不见的墙”。这些“隐形天花板”限制了数 ...
2024-12-19在数据分析领域,尽管行业前景广阔、岗位需求旺盛,但实际的工作难度却远超很多人的想象。很多新手初入数据分析岗位时,常常被各 ...
2024-12-19