如何理解Pandas 和 Numpy里的axis

简述一种如何直观的理解Pandas 和 Numpy里面的axis参数的方法。

Numpy 和 Pandas里的sort、mean、drop等操作,不是分行或者列分别用一个method来定义,而是一个method里面用户指定axis来操作的,举例来说:

我们先在此处下载了一份各国酒类消费的csv文件为例。
Screen Shot 2017-12-12 at 18.46.14
如下是pandas里按axis 0和1进行drop的操作示例,我们很容易看出,axis 0是按行drop,而axis 1是按列drop:
Screen Shot 2017-12-12 at 18.46.22

但是,mean操作呢?
Screen Shot 2017-12-12 at 18.49.18

容易看出,axis 0得出了每一列的均值,而axis 1得出了则是每一行的均值。
那么,在Numpy里呢?

Screen Shot 2017-12-12 at 19.06.17

容易看出,axis为1的时候得出的是每行的sum,axis为0的时候得出了每列的sum。

由上面的例子,我们似乎可以看出,axis为1代表水平方向上的操作,axis为0代表垂直方向上的操作,比如axis为1的sum得出的就是每一行的和。

但是,在Pandas的Dataframe里面,为什么axis=1代表的是drop整个列呢?以下这个例子也可以说明一些情况:

Screen Shot 2017-12-12 at 18.56.53

联系这个视频How do I use the “axis” parameter in pandas? - YouTube,大家也可以得到一些结论,作者说:

0 is the row axis, and 1 is the column axis. When you drop with axis=1, that means drop a column. When you take the mean with axis=1, that means the operation should “move across” the column axis, which produces row means.
指的就是一种更加容易理解的方式,“0就是行的axis,1就是列的axis,当以axis=1来drop,那么就是drop一个column,而axis=1 来取mean,那么就是这个操作‘穿越’了列的axis,产生了行上的mean”。

另外,其实我们也可以这样来操作,
Screen Shot 2017-12-12 at 19.01.27
Screen Shot 2017-12-12 at 19.01.45

可以看出,axis=0与axis=’rows’是一样的(在Pandas里),是不是更加容易理解了?

How to Use t-SNE Effectively这个网站给了一个非常形象的t-SNE在线实验环境,推荐大家去看一看!