2020-004 pandas与numpy中神奇的axis

本文探讨了在pandas和numpy中axis的概念及其应用。通过实例解析了axis如何影响数据操作,包括排序、合并、归一化等,并介绍了numpy中多维数组的轴处理。同时提出了有趣的思考问题,邀请读者探索两次不同操作结果的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pandas与numpy中神奇的axis

最近在百奥智汇兼职,基本上比较重的工作就在数据处理,所以pandas和numpy用的比较多。

不知不觉中,pandas各种函数越用越熟练,但是总要靠结果来推算到底应该指定axis=0还是1,你有没有这种经历呢?

经过摸索,我找到了一种axis利于记忆也好解释的理论。下面一起来看看吧!

核心内容

axis是你要操作的轴。

pandas

导入包,创建一个3X4的dataframe。

import pandas as pd
import numpy as np
data = pd.DataFrame(np.random.randn(4,3))
data.sum(axis=1)  

out:

0   -0.429278
1    0.415985
2    1.555418
3    3.364704
dtype: float64

axis=1,说明我们要对第二个轴进行操作。

操作中处理的是第二个轴一共3个值,3个值被消灭了,被1个和值取代,结果是长度为4的series。

data.drop(1,axis=1) 

out:

0 2
0 -0.002617 0.345585
1 0.273499 -0.386345
2 2.602432 0.284169
3 1.570347 1.656065

同样对第二个轴进行操作。

处理的是第二个轴3个值,3个值被drop掉1列后变为2个值,结果是4X2的dataframe。

data_ = pd.DataFrame(np.random.randn(4,3))
pd.concat([data,data_],axis=1) 

out:

0 1 2 0 1 2
0 -0.002617 -0.772246 0.345585 -0.349359 -0.033281 -0.774378
1 0.273499 0.528832 -0.386345 -1.630738 0.773259 -0.953177
2 2.602432 -1.331183 0.284169 1.714436 0.115564 2.480489
3 1.570347 0.138292 1.656065 0.229122 1.489628 3.029022

处理的是第二个轴,data二轴3个值,拼接的data_二轴也为3个值,所以结果是4X6的dataframe。

data.sort_values([0],axis=1) 

out:

1 0 2
0 -0.772246 -0.002617 0.345585
1 0.528832 0.273499 -0.386345
2 -1.331183 2.602432 0.284169
3 0.138292 1.570347 1.656065

处理的是第二个轴3个值,对第一个轴name为0对应的3个值进行排序,从小到大,结果是4X3的dataframe。

来个更复杂的

下面为常见的归一化:

data.apply(lambda a:(a-np.min(a))/(np.max(a)-np.min(a)),axis=1) 

out:

0 1 2
0 0.688502 0.0 1.000000
1 0.721001 1.0 0.000000
2 1.000000 0.0 0.410653
3 0.943524 0.0 1.000000

处理的是第二个轴3个值,对第一轴每一个name对应的三个值进行归一化处理,结果是4X3的dataframe 。

强行输出就会看的更清晰:

data.apply(lambda a:print(a),axis=1) 
0   -0.002617
1   -0.772246
2    0.345585
Name: 0, dtype: float64
0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值