下面是我生成一个数据框架的代码:
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
我的问题是:轴在熊猫中是什么意思?
让我们看看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方法将“国家(或附属领土)”列设置为索引后才能工作。
在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对象。
总之,我们最好把“选择”和“操作”分开,对以下问题有一个清晰的认识:
选择什么对象
是怎么安排的
在过去的一个小时里,我也一直在试着求出坐标轴。上述所有答案中的语言,以及文档都没有任何帮助。
要回答我现在理解的问题,在Pandas中,axis = 1或0意味着在应用函数时希望保持哪个轴头不变。
注意:当我说标题时,我指的是索引名
扩展你的例子:
+------------+---------+--------+
| | A | B |
+------------+---------+---------
| X | 0.626386| 1.52325|
+------------+---------+--------+
| Y | 0.626386| 1.52325|
+------------+---------+--------+
对于axis=1=columns:我们保持列标题不变,并通过改变数据应用平均值函数。
为了演示,我们保持列标题为常量:
+------------+---------+--------+
| | A | B |
现在我们填充A和B值的一个集合,然后找到平均值
| | 0.626386| 1.52325|
然后我们填充下一组A和B值,并找到平均值
| | 0.626386| 1.52325|
类似地,对于axis=rows,我们保持行标题不变,并不断更改数据:
为了演示,首先修复行标题:
+------------+
| X |
+------------+
| Y |
+------------+
现在填充第一组X和Y值,然后求平均值
+------------+---------+
| X | 0.626386
+------------+---------+
| Y | 0.626386
+------------+---------+
然后填充下一组X和Y值,然后找到平均值:
+------------+---------+
| X | 1.52325 |
+------------+---------+
| Y | 1.52325 |
+------------+---------+
总之,
当axis=columns时,将修复列标题并更改数据,这些数据将来自不同的行。
当axis=rows时,您将修复行标题并更改数据,这些数据将来自不同的列。
轴在编程中是形状元组中的位置。这里有一个例子:
import numpy as np
a=np.arange(120).reshape(2,3,4,5)
a.shape
Out[3]: (2, 3, 4, 5)
np.sum(a,axis=0).shape
Out[4]: (3, 4, 5)
np.sum(a,axis=1).shape
Out[5]: (2, 4, 5)
np.sum(a,axis=2).shape
Out[6]: (2, 3, 5)
np.sum(a,axis=3).shape
Out[7]: (2, 3, 4)
轴上的均值将导致该维度被移除。
参考原题,dff形状为(1,2)。使用axis=1将形状更改为(1,)。