pandas中的stack,unstack和numpy,stack,hstack,vstack通俗理解

在网上看上很多关于numpy中stack的复杂解释,其实他的实际含义和用法很简单,被人理解复杂了,当然,我们先看pandas中的stack,unstack的用法:
1,在我们常见的数据层次化结构分为两种,一种是花括号(一维数据),一种是表格(二维度数据),这个参考了如下网址https://www.cnblogs.com/bambipai/p/7658311.html
在这里插入图片描述
左边的是一维结构(类似于Series结构),右边的是二维结构(类似于Dataframe的结构),
在pandas中的stack函数是把二维结构堆叠成一维结构,
unstack是不要变成一维结构,也就是变成表格结构:
我们看下面代码:数据就是oracle中的emp表的数据:

import pandas as pd

df = pd.read_csv('emp.csv')

df2 = df.stack()

print(df2)

print(df2.unstack())
# dataframe.stack():把dataframe转化成series类型,就是把二维变成一维
# series.unstack():把series转化成dataframe类型 ,把以为转化成二维

2,我们再来看numpy的stack函数:
我们先看下帮助文档:Join a sequence of arrays along a new axis.
我们把它翻译成“沿着新轴连接数组序列”,其实这句话就已经告诉我们答案,这个函数是怎么使用的了。
我们先看代码:

a = [1,2,3,4]
b =[5,6,7,8]

print(np.stack((a,b),axis=0))
'''
结果:
[[1 2 3 4]
 [5 6 7 8]]
'''
print(np.stack((a,b),axis=1))
'''
结果:
[[1 5]
 [2 6]
 [3 7]
 [4 8]]
'''

在这里axis=0 ,可以简单的理解为行方向,axis=1,理解为列(竖)方向(只针对二维数组来这样理解),当axis=0的时候,从行的方向进行连接组成一个新的数组,axis=1的时候,从列的方向进行新的连接组成新的数组。当然对于ndarray 就需要真正的理解axis=0,1,2,3…的含义了,在理解上2darray 和ndarray是相通的。

3,我们再看hstack,vstack;这两个函数好理解,看代码

import numpy as np

a = [1, 2, 3]
b = [4, 5, 6]
# 注意np.hstack((a,b))是两个括号,因为需要传递进来元祖
print(np.hstack((a, b)))
'''
[1 2 3 4 5 6]
'''
print(np.vstack((a,b)))
'''
[[1 2 3]
 [4 5 6]]
'''

数据如下:

empno,ename,job,mgr,hiredate,sal,comm,deptno
7369,SMITH,CLERK,7902,1980/11/17,800,0,20
7499,ALLEN,SALESMAN,7698,1981/2/20,1600,300,30
7521,WARD,SALESMAN,7698,1981/2/22,1250,500,30
7566,JONES,MANAGER,7839,1981/4/2,2975,0,20
7654,MARTIN,SALESMAN,7698,1981/9/28,1250,1400,30
7698,BLAKE,MANAGER,7839,1981/5/1,2850,0,30
7782,CLARK,MANAGER,7839,1981/6/9,2450,0,10
7788,SCOTT,ANALYST,7566,1982/11/9,3000,0,20
7839,KING,PRESIDENT,7322,1981/12/17,5000,0,10
7844,TURNER,SALESMAN,7698,1981/12/8,1500,0,30
7876,ADAMS,CLERK,7788,1983/1/12,1100,0,20
7900,JAMES,CLERK,7698,1981/3/3,950,0,30
7902,FORD,ANALYST,7566,1981/6/3,3000,0,20
7934,MILLER,CLERK,7782,1982/1/23,1300,0,10

猜你喜欢

转载自blog.csdn.net/qwertyuiop5rghar/article/details/84495295