我正在学习Pandas DataFrame并遇到了这段代码:
df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6]]))
现在,当我按照this page的建议使用print(list(df.columns.values))
时,输出为:
[0, 1, 2]
我无法理解输出。有什么值0,1,2表示。由于DataFrame的高度为2,我认为最后一个值2表示高度。 0和1怎么样?
如果这个问题重复,我道歉。我找不到任何相关的解释。如果有任何类似的问题,请提及链接。
非常感谢。
答案 0 :(得分:3)
如果问题是什么是列检查样本:
df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6]]))
print (df)
0 1 2
0 1 2 3
1 4 5 6
#default columns names
print(list(df.columns.values))
[0, 1, 2]
print(list(df.index.values))
[0, 1]
df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6]]), columns=list('abc'))
print (df)
a b c
0 1 2 3
1 4 5 6
#custom columns names
print(list(df.columns.values))
['a', 'b', 'c']
print(list(df.index.values))
[0, 1]
您还可以查看docs:
pandas对象中的轴标记信息有多种用途:
使用已知指标识别数据(即提供元数据),这对于分析,可视化和交互式控制台显示非常重要 启用自动和显式数据对齐
允许直观地获取和设置数据集的子集
答案 1 :(得分:3)
df
是一个数据框。退后一步,接受这意味着什么。我的意思是从熊猫角度看它的意义。尽管不同的人对数据框的含义有很多细微差别,但一般来说,它是一个包含行和列的数据表。
考虑示例数据框df
。我创建了一个4x4表,每个单元格中都有元组,表示该单元格的(row, column)
位置。您还会注意到行上的标签为['A', 'B', 'C', 'D']
,列上的标签为['W', 'X', 'Y', 'Z']
df = pd.DataFrame(
[[(i, j) for j in range(4)] for i in range(4)],
list('ABCD'), list('WXYZ')
)
df
W X Y Z
A (0, 0) (0, 1) (0, 2) (0, 3)
B (1, 0) (1, 1) (1, 2) (1, 3)
C (2, 0) (2, 1) (2, 2) (2, 3)
D (3, 0) (3, 1) (3, 2) (3, 3)
如果我们想按位置引用,则会在此处突出显示第0行和第3列。
df.style.applymap(lambda x: 'background: #aaf' if x == (0, 3) else '')
我们可以使用iloc
(处理序数/位置索引)到达该位置
df.iloc[0, 3]
(0, 3)
Pandas的特殊之处在于它为我们提供了一种引用行和/或列的替代方法。我们可以使用loc
(处理标签索引)
df.loc['A', 'Z']
(0, 3)
我故意用字母标记行和列,以免混淆标签索引与位置索引。在您的数据框中,您让Pandas为行和列提供默认索引,这些标签最终只是等同于您开始时的位置。
考虑我们数据框的这个修改版本。我们称之为df_
df_ = df.sort_index(axis=1, ascending=False)
df_
Z Y X W
A (0, 3) (0, 2) (0, 1) (0, 0)
B (1, 3) (1, 2) (1, 1) (1, 0)
C (2, 3) (2, 2) (2, 1) (2, 0)
D (3, 3) (3, 2) (3, 1) (3, 0)
请注意,列的顺序相反。当我在上面调用与df_
df_.iloc[0, 3]
(0, 0)
我得到了一个不同的答案,因为我的列已经移动并且超出了原来的位置。
但是,如果我调用相同的标签参考
df_.loc['A', 'Z']
(0, 3)
我得到同样的东西。因此,无论行或列的顺序如何,标签索引都允许我引用。
Pandas将数据存储在属性values
df.values
array([[(0, 0), (0, 1), (0, 2), (0, 3)],
[(1, 0), (1, 1), (1, 2), (1, 3)],
[(2, 0), (2, 1), (2, 2), (2, 3)],
[(3, 0), (3, 1), (3, 2), (3, 3)]], dtype=object)
属性columns
df.columns
Index(['W', 'X', 'Y', 'Z'], dtype='object')
属性index
df.index
Index(['A', 'B', 'C', 'D'], dtype='object')
恰好在OP的样本数据框中,列为[0, 1, 2]