Pandas系列-如何使用axis参数

时间:2022-09-23 15:48:44

刚开始使用axis参数的时候觉得很困惑,不清楚什么时候用axis=0,什么时候该用axis=1. 看了些教程后茅塞顿开,这篇文章就是对axis参数使用的一些总结。

data = pd.read_csv(r'D:/python/Wholesale customers data.csv')
print(data.head())
   Channel  Region  Fresh  Milk  Grocery  Frozen  Detergents_Paper  Delicassen
0        2       3  12669  9656     7561     214              2674        1338
1        2       3   7057  9810     9568    1762              3293        1776
2        2       3   6353  8808     7684    2405              3516        7844
3        1       3  13265  1196     4221    6404               507        1788
4        2       3  22615  5410     7198    3915              1777        5185

如果想删除最后一列Delicassen该怎么做呢?

print(data.drop('Delicassen', axis=1).head())
   Channel  Region  Fresh  Milk  Grocery  Frozen  Detergents_Paper
0        2       3  12669  9656     7561     214              2674
1        2       3   7057  9810     9568    1762              3293
2        2       3   6353  8808     7684    2405              3516
3        1       3  13265  1196     4221    6404               507
4        2       3  22615  5410     7198    3915              1777

axis = 0就像是X轴跨行上下移动,而axis = 1就好比Y轴跨列左右移动, 删除一整列,可以想象成Y轴水平移动一格,抹除掉一整列。

#同理,如果我们要删除多列,只需要向函数传递多个列的名称,相当于Y轴在水平方向移动列多格.

data.drop(['Delicassen', 'Channel'], axis=1).head()

相应的如果要删除某行 axis = 0

删除第二行

data.drop(2, axis = 0)
   Channel  Region  Fresh  Milk  Grocery  Frozen  Detergents_Paper  Delicassen
0        2       3  12669  9656     7561     214              2674        1338
1        2       3   7057  9810     9568    1762              3293        1776
3        1       3  13265  1196     4221    6404               507        1788
4        2       3  22615  5410     7198    3915              1777        5185
5        2       3   9413  8259     5126     666              1795        1451

另外一种常见的需要用到axis参数的情况是在mean等统计函数里面

#假设我们要对每一行求平均值,这时axis = 0 是对列进行计算
print(data.mean(axis=0).head())
Channel        1.322727
Region         2.543182
Fresh      12000.297727
Milk        5796.265909
Grocery     7951.277273
dtype: float64