为什么Numpy和Pandas的轴不同?
示例:
如果我想摆脱熊猫的专栏,我可以这样做:
df.drop("column", axis = 1, inplace = True)
在这里,我们使用axis = 1来放置一列(在DF中垂直放置)。
在Numpy中,如果我想垂直求和矩阵A,我将使用:
A.sum(axis = 0)
这里我使用的轴= 0。
答案 0 :(得分:1)
axis
在pandas
中很少使用。数据框具有2个维度,通常将它们区别对待。在drop
中,轴的定义有据可查,实际上与numpy
的用法相对应。
制作一个简单的数组和数据框:
In [180]: x = np.arange(9).reshape(3,3)
In [181]: df = pd.DataFrame(x)
In [182]: df
Out[182]:
0 1 2
0 0 1 2
1 3 4 5
2 6 7 8
从数组或列中删除一行:
In [183]: np.delete(x, 1, 0)
Out[183]:
array([[0, 1, 2],
[6, 7, 8]])
In [184]: np.delete(x, 1, 1)
Out[184]:
array([[0, 2],
[3, 5],
[6, 8]])
Drop在同一轴上执行相同的操作:
In [185]: df.drop(1, axis=0)
Out[185]:
0 1 2
0 0 1 2
2 6 7 8
In [186]: df.drop(1, axis=1)
Out[186]:
0 2
0 0 2
1 3 5
2 6 8
总而言之,定义也相同:
In [188]: x.sum(axis=0)
Out[188]: array([ 9, 12, 15])
In [189]: df.sum(axis=0)
Out[189]:
0 9
1 12
2 15
dtype: int64
In [190]: x.sum(axis=1)
Out[190]: array([ 3, 12, 21])
In [191]: df.sum(axis=1)
Out[191]:
0 3
1 12
2 21
dtype: int64
熊猫总和为Series
,相当于一维数组的熊猫。
使用axis
这样的归约运算来可视化sum
的操作有些棘手-尤其是对于二维数组。轴是保留还是卸下?考虑一维阵列(唯一的轴被删除)或3d阵列的轴可以帮助考虑,其中一个轴被删除而剩下两个。
答案 1 :(得分:0)
删除列时,将从水平轴1选取名称。沿轴0求和时,即为垂直求和。