下面是我生成一个数据框架的代码:
import pandas as pd
import numpy as np
dff = pd.DataFrame(np.random.randn(1,2),columns=list('AB'))
然后我得到了数据框架:
+------------+---------+--------+
| | A | B |
+------------+---------+---------
| 0 | 0.626386| 1.52325|
+------------+---------+--------+
当我输入命令时:
dff.mean(axis=1)
我得到:
0 1.074821
dtype: float64
根据pandas的参考,axis=1代表列,我希望命令的结果是
A 0.626386
B 1.523255
dtype: float64
我的问题是:轴在熊猫中是什么意思?
我以前也很困惑,但我记得是这样的。
它指定将更改的数据帧的维度,或者将在其上执行操作。
让我们通过一个例子来理解这一点。
我们有一个数据框架df,它的形状是(5,10),这意味着它有5行10列。
现在,当我们使用df。mean(axis=1)时,它意味着维数1将被改变,这意味着它将有相同的行数,但不同的列数。因此得到的结果将是(5,1)的形状。
类似地,如果我们使用df.mean(axis=0),这意味着维度0将被改变,这意味着行数将被改变,但列数将保持不变,因此结果将是形状(1,10)。
试着把这个和问题中提供的例子联系起来。
在Pandas上有两种最常见的axis用法:
用作索引,如df。iloc [0, 1]
用作函数内的参数,如df.mean(axis=1)
当使用作为索引时,我们可以解释为axis=0代表行,axis=1代表列,即df。iloc(行、列)。所以,df。Iloc[0,1]表示从第0行和第1列中选择数据,在本例中,它返回1.52325。
当使用作为参数时,axis=0表示垂直跨行选择对象,而axis=1表示水平跨列选择对象。
因此,df.mean(axis=1)表示水平计算跨列的平均值,它返回:
0 1.074821
dtype: float64
轴的一般用途是用于选择要操作的特定数据。而理解轴的关键,是把“选择”和“操作”的过程分开。
我们用一种额外的情况来解释:df。下降(A轴= 1)
该操作是df.drop(),它需要目标对象的名称
列,在这里是A。它和df。mean()不一样
对数据内容进行操作。
选择的是列的名称,而不是列的数据内容。由于所有列名都是水平排列在列之间的,所以我们使用axis=1来选择name对象。
总之,我们最好把“选择”和“操作”分开,对以下问题有一个清晰的认识:
选择什么对象
是怎么安排的