前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python干货,不用再死记硬背pandas关于轴的概念?

Python干货,不用再死记硬背pandas关于轴的概念?

作者头像
咋咋
发布2021-09-01 15:28:16
8160
发布2021-09-01 15:28:16
举报
文章被收录于专栏:数据大宇宙

前言

axis 表示轴,是处理多维数据时用于表示维度方向的概念,在 pandas 中大部分的方法都有 axis 参数,因为 pandas 需要调用者告诉他,需要处理的是哪个维度的数据。

本文将分享我对 axis 的理解,希望帮助你更好理解 axis 的概念,这些概念不仅仅应用在 pandas ,同样适合于其他相关的库的理解(如 numpy 中的3维或以上的处理)。

通过本文你将学到以下内容:

  • - 怎么理解不同方法中的 axis 参数的含义

不要死记硬背

有小伙伴会说,axis 这很简单啊,不就是**0表示行,1表示列**,还需要学啥呢?但是,你会发现在 pandas 中,有些方法好像对于 axis 的含义是相反的。

来看些例子,我们有如下数据:

  • - 3列数据,每列数据都是1到3的数字

"删除第2列",代码如下:

  • - df.drop('col2',axis=1) ,其中 axis=1 ,表明删除列

"删除第2行",代码如下:

  • - df.drop(1,axis=0) ,其中 axis=0 ,表明删除行

这看起来很好理解,对吧。我们继续,不妨你在看答案之前,自己尝试思考一下 axis 的值是啥。

"为每一行求平均值" ,代码如下:

咦?为什么是 axis = 1 呢?根据直觉,你可能第一时间想到的是 axis = 0 吧。说好的 **0表示行,1表示列** 呢?

> 我知道网络上有许多讨论这方面的文章,但是我看到的大部分相关文章都只是列出问题,然后告诉你记住他们,记住当调用某些方法时概念是相反就好了。

真正的理解

我非常喜欢通过想象图像,去加深学习,来看看 pandas 中关于"轴"的示意图:

  • - 轴0,则表示沿着行方向(竖向)
  • - 轴1,则表示沿着列方向(横向)

pandas 中有许多对 DataFrame 做操作的方法,这些方法都需要提供 axis 参数,用于指示对行或列操作。

而 pandas 中的计算方法对于 axis 参数的含义,**实际与 numpy 是一致的:"表示范围扩展的轴方向"**。

还是拿之前 "为每一行求平均值" 的需求来说。

当调用 df.mean(axis=1) 时,对于图如下:

  • - axis = 1 ,表示向轴1方向(横向)扩展范围
  • - 然后,每个扩展范围应用 mean 方法求平均值

"为每一列求平均值" 。

当调用 df.mean(axis=0) 时,对应图如下:

  • - axis = 0 ,表示向轴0方向(竖向)扩展范围
  • - 然后,每个扩展范围应用 mean 方法求平均值

再回头看看在 pandas 中删除方法 drop 。

在官方网站的文档中,明确说明 axis 参数的含义:"从行或列中删除其标签"。

也就是说,axis 指示了在哪个轴上寻找对应的标签,然后将其删除。

看看对应图:

  • - 由于 axis = 1,因此会在轴1方向(横向)中寻找标签值"col2",然后把其删除。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据大宇宙 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档