跳转至

pandas 中的 axis

pandas 中的axis参数代表对数据进行处理时遵循的方向。在单行、单列操作(如drop)时,axis=0axis=1分别代表删除行和删除列。在聚合操作(如求mean)时,axis=0axis=1分别代表求列均值和行均值。

总结

  • axis=0

如果是单行操作,就指的是某一行;

如果是聚合操作,指的是跨行 cross rows。

  • axis=1

如果是单列操作,就指的是某一列;

如果是聚合操作,指的是跨列 cross columns。

本文转载自公众号Python For Finance这篇帖子,已获得作者授权。

准备数据

Python
import pandas as pd

df = pd.DataFrame(
    [[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]],
    columns=["a", "b", "c", "d"],
    index=["one", "two", "three"],
)
print(df)

结果为:

Text Only
       a  b  c  d
one    1  1  1  1
two    2  2  2  2
three  3  3  3  3

axis=0代表行?axis=1代表列?

有人认为axis=0代表行,axis=1代表列,那么你就会迷惑:

drop函数

drop函数中axis=0删除行,axis=1删除列

删除 a 列:

Python
print(df.drop("a", axis=1))

结果为:

Text Only
       b  c  d
one    1  1  1
two    2  2  2
three  3  3  3

删除one行:

Python
print(df.drop("one", axis=0))

结果为:

Text Only
       a  b  c  d
two    2  2  2  2
three  3  3  3  3

mean函数

mean函数的axis=0表示对列进行求取均值,axis=1表示对行进行求取均值。

对行取均值:

Python
print(df.mean(axis=1))

结果为:

Text Only
one      1.0
two      2.0
three    3.0
dtype: float64

对列取均值:

Python
print(df.mean(axis=0))

结果为:

Text Only
a    2.0
b    2.0
c    2.0
d    2.0
dtype: float64
  • drop函数中axis=0删除行,axis=1删除列。

  • mean函数的axis=0表示对列进行求取均值,axis=1表示对行进行求取均值。

axis代表方向!

axis 在英文中是轴的意义,二维数据拥有两个轴:第 0 轴(axis=0)沿着行的垂直往下,第 1 轴(axis=1)沿着列的方向水平延伸。

坐标轴是有方向的,所以千万不要用行和列的思维去想 axis,因为行和列是没有方向的。

axis 的重点在于方向,而不是行和列。axis=1 代表跨列(cross columns),表示横向,方向从左到右;axis=0 代表跨行(cross rows),表示纵向,方向从上到下。

图片

  • df.mean(axis=1)代表沿着列水平方向计算均值,从左到右横向求均值。
  • df.drop(name, axis=1) 代表将name对应的列标签(们)沿着水平的方向依次删掉,横向发生变化,体现为列的减少。

Note

  • axis=0

如果是单行操作,就指的是某一行;

如果是聚合操作,指的是跨行 cross rows。

  • axis=1

如果是单列操作,就指的是某一列;

如果是聚合操作,指的是跨列 cross columns。

评论