前言
axis 表示轴,是处理多维数据时用于表示维度方向的概念,在 pandas 中大部分的方法都有 axis 参数,因为 pandas 需要调用者告诉他,需要处理的是哪个维度的数据。
本文将分享我对 axis 的理解,希望帮助你更好理解 axis 的概念,这些概念不仅仅应用在 pandas ,同样适合于其他相关的库的理解(如 numpy 中的3维或以上的处理)。
通过本文你将学到以下内容:
不要死记硬背
有小伙伴会说,axis 这很简单啊,不就是**0表示行,1表示列**,还需要学啥呢?但是,你会发现在 pandas 中,有些方法好像对于 axis 的含义是相反的。
来看些例子,我们有如下数据:
"删除第2列",代码如下:
"删除第2行",代码如下:
这看起来很好理解,对吧。我们继续,不妨你在看答案之前,自己尝试思考一下 axis 的值是啥。
"为每一行求平均值" ,代码如下:
咦?为什么是 axis = 1 呢?根据直觉,你可能第一时间想到的是 axis = 0 吧。说好的 **0表示行,1表示列** 呢?
> 我知道网络上有许多讨论这方面的文章,但是我看到的大部分相关文章都只是列出问题,然后告诉你记住他们,记住当调用某些方法时概念是相反就好了。
真正的理解
我非常喜欢通过想象图像,去加深学习,来看看 pandas 中关于"轴"的示意图:
pandas 中有许多对 DataFrame 做操作的方法,这些方法都需要提供 axis 参数,用于指示对行或列操作。
而 pandas 中的计算方法对于 axis 参数的含义,**实际与 numpy 是一致的:"表示范围扩展的轴方向"**。
还是拿之前 "为每一行求平均值" 的需求来说。
当调用 df.mean(axis=1) 时,对于图如下:
"为每一列求平均值" 。
当调用 df.mean(axis=0) 时,对应图如下:
再回头看看在 pandas 中删除方法 drop 。
在官方网站的文档中,明确说明 axis 参数的含义:"从行或列中删除其标签"。
也就是说,axis 指示了在哪个轴上寻找对应的标签,然后将其删除。
看看对应图: