Pandas中对轴axis=0和axis=1的理解

刚学习numpy和Pandas,被axis、axis=0或者axis='index',axis=1或者axis='columns'给搞蒙了,甚至经常觉得书是不是写错了,有点反直觉。

来自简书的一篇文章地址有张图解释的挺好的,见文章底部

 

引用一下这篇文章的话,理解的很好:

实际上axis = 1,指的是沿着行求所有列的平均值,代表了横轴,那axis = 0,就是沿着列求所有行的平均值,代表了纵轴。

但理解起来还是很绕,按我个人的理解,如果对比excel和MySQL的数据表来理解就更容易:

我们正常在使用excel或者mysql的时候,默认都是一行代表一条数据,每个列是不同的信息字段,我们在读取表的时候,都是一行一行读取的,如果要算max、min、sum等函数,其实都是一行一行计算全局的min、max、sum,但是算出来其实是每个列的数据的min、max、sum,这其实就是axis=0和axis='index'的意思:一行一行的计算,但是算出来其实是每列的结果;

相对应的,我们的excel、mysql,很少会实现跨列做计算,除非每列都是一样的数字信息,举个例子某一个数据表的每一行有一个主键是日期,每一列是对应每个页面的PV,那么我可以计算每个日期的PV总数、平均数,这时候就是跨列计算了,就是不常见的axis=1或者axis='columns',虽然是跨列计算,但是算出来的结果其实是行标签日期的数据结果。

axis=0,虽然是一行一行计算,其实算出来是每列的结果,换句话说,aixs=0是指计算的时候跨行、每行每行的算,那么算出来当然是每列的结果,就像一把梳子往下梳,得到的就是树条状的结果,每个竖条的标签当然就是columns的标签

axis=1,虽然是一列一列计算,其实算出来是每行的结果,换句话说,aixs=1是指计算的时候跨列、每列每列的算,那么算出来当然是每行的结果,就像一把梳子往右梳,得到的就是横条状的结果,每个横条的标签当然是index的标签

以上当然是自己的理解,具体还得自己琢磨才可以弄清楚。

相关推荐

Leave a Comment