美文网首页
Python数据分析中的轴

Python数据分析中的轴

作者: 大空翼123 | 来源:发表于2022-01-13 12:05 被阅读0次

Numpy 、Pandas 、Matplotlib是Python 数据中不可或缺的三个工具。而Numpy与Pandas作为数据处理的首选工具其具有以下优势:

          1.   Numpy底层代码大部分是基于C语言写成,算法非常黑科技,而Pandas又是基于Numpy的,因此Numpy与Pandas相比较于Python代码运行起来更加高效

        2.对于同样的数值计算任务,Numpy与Pandas的编写更加方便

       3.  Numpy与Pandas提供了大量的数据处理库与数据模型,这些工具使数据处理与分析更加高效与便捷

  作为python数据分析中必不可少的工具,有一个问题常常令初学者困扰,那就是numpy与pandas中的轴。

到底哪个是0轴?哪个是1轴?哪个是行?哪个是列?

关于轴的问题即便是在数据分析必备丛书《利用python进行数据分析》一书中也没有特别明确的讲解,今天就让我们来捋一捋python中的轴。

1. 什么是轴

        类似于我们常用的坐标轴,在Numpy与Pandas中,轴可以理解为方向,不同于坐标轴中的x,y,z,Numpy中的轴以0,1,2数字表示。

      对于一维数组类似于列表的形式只有一个0轴,即只有一个方向;对于二维数组(shap(3,3))类似于二维矩阵的形式可以看做是在一个平面内,所以二维数组有2个轴即0轴和1轴;对于三维数组(shap(3,3,3))可以视作在空间内有3个轴0,1,2,至于四五六七八维数据就比较抽象,轴的数量也逐步增加......

2. 二维数组中的轴

一维数组只有一个方向,其排列方向即为轴的方向,很好理解。

     那么对于数据中最常见的二维数组的轴该如何理解?理解坐标最好的方式即是看图像,如下:

图1

图2

   看惯了常规X轴与Y轴,可能会觉得这两个图像的坐标轴是相互冲突的???

   直接拿数据来分析理解,首先导入numpy创建一个二维数据:

      接下来试着计算该数组在0轴和1上和:

     可以看到该数组在0轴上的和为[2,4]即[0+2,1+3],在1轴上的和为[1,5]即[0+1,2+3]

      再用平均值来计算:

      由以上计算我们或许可以得出numpy中axis=0即为竖轴,axis=1为横轴的结论,因此图片2是正确的

                     事实的真相真的是这样吗?

      接下来我们对数组进行添加和删除操作:

     此时可以发现:0变成了对横轴的操作,1变成了对竖轴的操作。

    与上面的结论有些矛盾了?

    其实,我们可以这样的理解:

对于对于数据上行列的函数计算,以图1为例,0轴即是在横轴某一刻度下的数值进行计算,即沿横轴竖直向下,也就是跨行运算。对于数组的添加与删除,axis=0即是在横轴每一个刻度下进行删除和增加的操作,改变的是行的数量,axis=1则反之,此方法称之为刻度法

图1

对于如图2所示的坐标系我们也可以将axis=0理解为竖轴,axis=1理解为横轴。数组上的函数计算即是轴所串在一起的数值进行计算,就像串糖葫芦一样,而数组的删除与增加可以看做是沿数轴的方向增加一行或者一列,此方法为串糖葫芦法

     以上两种坐标轴从2个角度来理解numpy数组中的轴,大家可以选择合适的方法来进行理解和学习。

3. 三维数组

      建议以串糖葫芦法理解,更加清晰:

4. 四维数组

选用下标法来理解:

      当axis=0时,numpy验证第0维的方向来求和,即角标0的变化方向:

第一个元素=c0000+c1000=0+8=8;

第二个元素=c0001+c1001=1+9=10;

       同理可得最后的结果如下:

简要概括下标的用法:

假设axis = i,则numpy沿着第 i 个下标变化的方向进行操作。

本文以三种方法来理解numpy中的额坐标轴。

      其中刻度法仅在二维数组中便于理解,串糖葫芦法可适用于二维和三维数组,对于更高维度的数组只好用下标法来理解。

      日常数据分析中我们最常采用的即是二维数组,因此对于刻度法与串糖葫芦法的理解与熟练运用会对数据分析有很大的帮助(选择一个即可,建议串糖葫芦法,亦可应用于三维数组),至于更高维度的数据建议采用下标法一步步推算。

相关文章

网友评论

      本文标题:Python数据分析中的轴

      本文链接:https://www.haomeiwen.com/subject/kgsncrtx.html