zoukankan      html  css  js  c++  java
  • 数据可视化基础专题(三十五):Pandas基础(十五) 关于axis参数的理解

    来源:https://zhuanlan.zhihu.com/p/115646862

    之前一直对pandas和numpy里的axis 参数理解的不透彻,今天把它写下来加深印象。 axis = 0 是代表跨行,而axis = 1 是代表跨列,想明白这一点,对于其他的操作就都想明白了。 numpy 官方文档对axis的解释很简单,但是却很有用。numpy官方文档

    Axes are defined for arrays with more than one dimension. A 2-dimensional array has two corresponding axes: the first running vertically downwards across rows (axis 0), and the second running horizontally across columns (axis 1).

     

    二维数组有2个轴,0轴和1轴,以前我一直理解成axis = 0代表行,axis = 1 代表列,但是到了求运算的时候,比如sum(),mean()的时候,却往往是反的,其实并没有反,是我没有理解透。

    1. axis = 0,指的就是跨行,也就是沿着行标签index垂直向下执行。

    2. axis = 1,指的是跨列,也就是沿着列名水平方向执行

    对于经典的问题,下面的问题我们来解释一下:

     

    也就是说,当axis = 0的时候,我们是在跨行进行操作的,而当我们指定了某一个索引,它就跨不了行了,只能在特定的行上执行操作;对于一些算数运算,跨行操作就变成了一列一列的操作,也就是比如我取了第一行的一个值,然后再向下取第二个行的值,再向下取第三个值,依次类推,就是一列。

    而当axis = 1 的时候,就是跨列在水平方向上操作,而当我们指定了某一个列的时候,就不能跨列了,只能在这个列上执行;对于算数运算sum(),mean()求值的时候,就是在横向上遍历每行,对每行的数据进行操作,说简单点,就是我在第一列取了一个值,再在第二列取了第二个值,然后在第三列取第三个值,最终就是一行值了,所以最终就是对每行进行操作。

    我们来用代码示例以下:

    df1 = DataFrame(np.array([[1,2,3,4],[5,6,7,8]]),index = ['a','b'],columns = ['one','two','three','four'])

     

     

    pandas 中drop方法axis参数默认是0,如果我们需要删除列的话,必须要指定axis = 1,否则就可能报错,除非索引有和列名重名的。

    另外本文的理解特别感谢这篇博客,我看了其他的博客说的都不是太明白。

    https://www.cnblogs.com/wangcuican/p/11984829.html

  • 相关阅读:
    关于JAVA中的static方法、并发问题以及JAVA运行时内存模型
    【设计模式】抽象工厂模式
    spring mvc4.1.6 + spring4.1.6 + hibernate4.3.11 + mysql5.5.25 开发环境搭建及相关说明
    struts2.3.24 + spring4.1.6 + hibernate4.3.11+ mysql5.5.25开发环境搭建及相关说明
    git中Please enter a commit message to explain why this merge is necessary.
    扒一扒开源世界有哪些licenses?
    string.Format出现异常:输入字符串的格式不正确 Exception during StringFormat
    node-glob学习
    js中对URL进行转码与解码
    程序员如何修炼管理思维
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/14925044.html
Copyright © 2011-2022 走看看