python stack unstack_Python之数据重塑
重塑层次化索引
Pandas中重塑层次化索引的操作主要是stack()方法和unstack()方法,前者是将数据的列“旋转”成行,后者是将数据的行“旋转”成列。
stack(self, level=-1, dropna=True)
上述方法中部分参数表示的含义如下:
level:表示操作内层索引。若设为0,表示操作外层索引,默认为-1
dropna:表示是否将旋转后的缺失值删除,若设为True,则表示自动过滤缺失值,设置False则相反
unstack(self, level=-1, fill_value=None)
上述方法中部分参数表示的含义如下:
level:表示操作内层索引。若设为0,表示操作外层索引,默认为-1
fill_value:若产生了缺失值,则可以设置这个参数用来替换NaN
对于单层索引的DataFrame类对象
stack()方法
测试对象:
df1:
A B
a A0 B0
b A1 B1
代码:
import numpy as np
df1 = pd.DataFrame({'A': ['A0', 'A1'],
'B': ['B0', 'B1']},
index=['a', 'b'])
df2 = pd.DataFrame(np.arange(8).reshape(2, 4),
columns=[['A', 'A', 'B', 'B'],
['A0', 'A1', 'B0', 'B1']])
result = df1.stack()
print("df1.stack():\n", result)
输出结果:
df1.stack():
a A A0
B B0
b A A1
B B1
dtype: object
从输出结果看出,result对象具有两层行索引。
具有两层行索引而不再具有列索引的对象到底是DataFrame对象还是Series对象呢?
我们使用type()函数来查看result的类型,与df1做对比
type(df1):
type(result):
从输出结果可以看出,DataFrame对象已经被转换成了一个Series对象。
unstack()方法
尝试将result对象重塑成df1,先将result.unstack()的结果保存在ans对象里
代码:
ans = result.unstack()
print("ans:\n", ans)
输出结果:
ans:
A B
a A0 B0
b A1 B1
使用type()函数查看ans的类型,然后将其与df1作比较
代码:
print("type(ans):\n", type(ans))
print("ans == df1?", ans == df1)
输出结果:
type(ans):
ans == df1?
A B
a True True
b True True
由上可知,unstack()方法是stack()方法的逆操作,可以将重塑的Series对象“恢复原样”,转变成原来的DataFrame对象。
对于多层索引的DataFrame类对象
测试对象:
df2:
A B
A0 A1 A0 A1
0 0 1 2 3
1 4 5 6 7
辨析操作内层索引与外层索引的区别
代码:
df2 = pd.DataFrame(np.arange(8).reshape(2, 4),
columns=[['A', 'A', 'B', 'B'],
['A0', 'A1', 'A0', 'A1']])
result1 = df2.stack() # 操作内层索引
result2 = df2.stack(level=0) # 操作外层索引
print("df2.stack():\n", result1)
print("df2.stack(level=0):\n", result2)
输出结果:
df2.stack():
A B
0 A0 0 2
A1 1 3
1 A0 4 6
A1 5 7
df2.stack(level=0):
A0 A1
0 A 0 1
B 2 3
1 A 4 5
B 6 7
查看多层索引对象转换后的类型
代码:
print("type(result1):\n", type(result1))
print("type(result2):\n", type(result2))
输出结果:
type(result1):
type(result2):
对于多层索引来讲,即使将外层行(列)索引或者内层行()列索引转换为列(行)索引,也不过是多层变单层,只要行和列两个方向仍然同时至少有单层索引存在,DataFrmae对象转换后就仍为DataFrame对象。
轴向旋转——pivot()方法
pivot()会根据给定的行索引或列索引重新组织一个DataFrame对象
pivot(self, index=None, columns=None, values=None)
上述方法中部分参数表示的含义如下:
index:用于创建新DataFrame对象的行索引 。如果未设置,则使用原DataFrame对象的索引。
columns:用于创建新DataFrame对象的列索引 。如果未设置,则使用原DataFrame对象的索引。
values:用于填充新DataFrame对象中的值。
代码:
df3 = pd.DataFrame({'A': ['A0', 'A0', 'A1', 'A1'],
'B': ['B0', 'B1', 'B0', 'B1'],
'C': ['C0', 'C1', 'C2', 'C3']})
print("df3:\n", df3)
print("df3.pivot(index='A', columns='B', values='C'):\n",
df3.pivot(index='A', columns='B', values='C'))
输出结果:
df3:
A B C
0 A0 B0 C0
1 A0 B1 C1
2 A1 B0 C2
3 A1 B1 C3
df3.pivot(index='A', columns='B', values='C'):
B B0 B1
A
A0 C0 C1
A1 C2 C3
本文地址:https://blog.csdn.net/Jormungand_V/article/details/109841128
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!
python stack unstack_Python之数据重塑相关推荐
- 【Python】merge:数据规整化:清理、转换、合并、重塑
merge:数据规整化:清理.转换.合并.重塑 目录: 文章目录 @[toc] 一 合并数据集 1 数据库风格的DataFrame合并 2 索引上的合并 3 轴向连接 4 合并重叠数据 二 重塑和轴向 ...
- Python 数据分析三剑客之 Pandas(八):数据重塑、重复数据处理与数据替换
CSDN 课程推荐:<迈向数据科学家:带你玩转Python数据分析>,讲师齐伟,苏州研途教育科技有限公司CTO,苏州大学应用统计专业硕士生指导委员会委员:已出版<跟老齐学Python ...
- pandas数据分析之数据重塑透视(stack、unstack、melt、pivot)
在数据分析的过程中,分析师常常希望通过多个维度多种方式来观察分析数据,重塑和透视是常用的手段. 数据的重塑简单说就是对原数据进行变形,为什么需要变形,因为当前数据的展示形式不是我们期望的维度,也可以说 ...
- Python数据攻略-Pandas数据重塑及透视表
大家好,我是Mr数据杨.让我们一起走进Python的世界,揭开它在数据处理中的神秘面纱.让我带你走进<三国演义>,看看Python在三国演义中的应用.想象一下,假如诸葛亮在草船借箭这个计划 ...
- python数据预处理 重复行统计_Python数据分析之数据预处理(数据清洗、数据合并、数据重塑、数据转换)学习笔记...
1. 数据清洗 1.1 空值和缺失值的处理 空值一般表示数据未知.不适用或将在以后添加数据.缺失值是指数据集中某个或某些属性的值是不完整的. 一般空值使用None表示,缺失值使用NaN表示 1.1 ...
- Python数据分析之数据预处理(数据清洗、数据合并、数据重塑、数据转换)学习笔记
文章目录 1. 数据清洗 1.1 空值和缺失值的处理 1.1.1 使用isnull()和notnull()函数 1.1.1.1 isnull()语法格式: 1.1.1.2 notnull()语法格式: ...
- pandas学习(创建多层索引、数据重塑与轴向旋转)
pandas学习(创建多层索引.数据重塑与轴向旋转) 目录 创建多层索引 数据重塑与轴向旋转 创建多层索引 隐式构造 Series 最常见的方法是给DataFrame构造函数的index参数传递两个或 ...
- 利用Python进行数据分析:数据规整(基于DataFrame)
利用Python进行数据分析:数据规整 在许多应用中,数据可能分散在许多文件或数据库中,存储的形式也不利于分析.本部分关注可以聚合.合并.重塑数据的方法. 文章目录 利用Python进行数据分析:数据 ...
- reshape功能介绍_Pandas中的数据重塑(reshape)功能
引言Pandas 是 python中常用的数据分析软件库,它提供了 DataFrames 和 Series 的工具,这使得 numpy 和 matplotlib 可以更加便捷地读取转换数据.数据重塑表 ...
- 【Python】GroupBy:数据聚合与分组运算
[博客地址]:https://blog.csdn.net/sunyaowu315 [博客大纲地址]:https://blog.csdn.net/sunyaowu315/article/details/ ...
最新文章
- DataGrid基于Access的快速分页法
- 【失败的尝试】C++中使用string进行switch判断
- linux视频教程之进程管理
- 如何用R和API免费获取Web数据?
- Mobile first! Wijmo 5 + Ionic Framework之:Hello World!
- 神策数据《品牌零售业数字化运营的方法论及实践》白皮书重磅发布
- 唯一标识计算机的位置目录与文件的是,计算机应用基础 7.doc
- 解决linux写入ntfs盘时报错:只读文件系统
- 基于easyui开发Web版Activiti流程定制器详解(六)——Draw2d详解(二)
- 020 ceph作openstack的后端存储
- 【软件领域知识整理】贵金属交易的K线图解释(二)
- Linux下安装Apache Maven安装
- android关于16进制转字符串的问题
- linux下安装asio4ks,FL Studio 第一步 初始化 2020-10-01
- Linux操作系统引导过程及MBR扇区故障解决
- linux 修改网卡 mac地址命令,Centos系统下查看和修改网卡Mac地址(附ifconfig命令格式)...
- QT ffmpeg 播放器
- 职业生涯阶段性回顾之第一个五年计划
- 计算机应用公式求和,Excel函数教程:与求和有关的函数
- 关于Value ‘0000-00-00 00:00:00‘ can not be represented as java.sql.Timestamp异常问题的解读
热门文章
- 【无标题】Win10鼠标单击右键点击“显示设置”,“个性化”弹出该文件没有与之关联的程序来执行该操作。
- CoLA任务的数据增强方法
- 贴吧防删图应该怎么学?【万能的小胡】
- 一文详解 Android热修复实现原理
- php 操作 PSD,PHP中使用Imagick操作PSD文件实例
- 用计算机pol计算方位角,卡西欧计算方位角 计算器算方位角.doc
- 一个简单的推荐系统实现
- 写代码有这16个好习惯,可以减少80%非业务的bug
- 漏洞库:爬取NVD-美国国家信息安全漏洞库
- 提高你修养的100句话