下面是我生成一个数据框架的代码:
import pandas as pd
import numpy as np
dff = pd.DataFrame(np.random.randn(1,2),columns=list('AB'))
然后我得到了数据框架:
+------------+---------+--------+
| | A | B |
+------------+---------+---------
| 0 | 0.626386| 1.52325|
+------------+---------+--------+
当我输入命令时:
dff.mean(axis=1)
我得到:
0 1.074821
dtype: float64
根据pandas的参考,axis=1代表列,我希望命令的结果是
A 0.626386
B 1.523255
dtype: float64
我的问题是:轴在熊猫中是什么意思?
在Pandas上有两种最常见的axis用法:
用作索引,如df。iloc [0, 1]
用作函数内的参数,如df.mean(axis=1)
当使用作为索引时,我们可以解释为axis=0代表行,axis=1代表列,即df。iloc(行、列)。所以,df。Iloc[0,1]表示从第0行和第1列中选择数据,在本例中,它返回1.52325。
当使用作为参数时,axis=0表示垂直跨行选择对象,而axis=1表示水平跨列选择对象。
因此,df.mean(axis=1)表示水平计算跨列的平均值,它返回:
0 1.074821
dtype: float64
轴的一般用途是用于选择要操作的特定数据。而理解轴的关键,是把“选择”和“操作”的过程分开。
我们用一种额外的情况来解释:df。下降(A轴= 1)
该操作是df.drop(),它需要目标对象的名称
列,在这里是A。它和df。mean()不一样
对数据内容进行操作。
选择的是列的名称,而不是列的数据内容。由于所有列名都是水平排列在列之间的,所以我们使用axis=1来选择name对象。
总之,我们最好把“选择”和“操作”分开,对以下问题有一个清晰的认识:
选择什么对象
是怎么安排的
我将明确避免使用“行-wise”或“沿列”,因为人们可能会以完全错误的方式解释它们。
类比。直观地,你会期望pandas. datafframe .drop(axis='column')从N个列中删除一个列,并给出(N - 1)个列。所以你现在可以不关注rows(并从你的英语字典中删除row这个单词)。反之亦然,drop(axis='row')作用于行。
以同样的方式,sum(axis='column')在多个列上工作,并给出1列。类似地,sum(axis='row')的结果为1行。这与其最简单的定义形式是一致的,即将一组数字简化为一个数字。
一般来说,使用axis=column,您可以看到列,处理列,并获得列。忘记行。
使用axis=row,改变视角并在行上工作。
0和1只是“行”和“列”的别名。这是矩阵下标的惯例。
让我们看看Wiki上的表格。这是国际货币基金组织对2010年至2019年前十大国家GDP的估计。
1. 如果你想计算每个国家过去十年(2010-2019)的平均GDP,你需要做,df.mean(轴=1)。例如,如果你想计算美国从2010年到2019年的平均GDP, df。loc['美国',' 2010 ':' 2019 '].mean(轴= 1)
2. 如果我想计算所有国家每年的平均GDP(平均值),你需要做,df.mean(轴=0)。例如,如果你想计算2015年美国、中国、日本、德国和印度的平均GDP, df。loc(“美国”:“印度”,' 2015 '].mean(轴= 0)
注意:上述代码只有在使用set_index方法将“国家(或附属领土)”列设置为索引后才能工作。