我对 Pandas 中 .head() 方法应用于 DataFrame 时的行为感到困惑。它不显示前 8 个连续行,而是显示具有非连续索引的行,并且仅多次显示“ocean_proximity”属性下的少数类别。有 5 个可能的类别,但 .head(8) 仅显示其中 4 个的随机选择,有些类别出现多次。你能解释一下为什么会发生这种情况吗?
DataFrame 行可以通过多种类型的可哈希值进行索引。 Pandas 甚至将其称为“标签”,以将其与纯粹基于位置的索引进行对比。
DataFrame.loc
将按标签查找,而 DataFrame.iloc
将按索引查找。
在您的情况下,索引(或更恰当地说,“标签”)不仅仅是 0、1、2 等。这可以通过一个简单的测试数据帧来演示,我们对其进行排序以打乱原始索引。
>>> import pandas as pd
>>> df=pd.DataFrame({"test":["one", "two", "three", "four", "five", "six"]})
>>> df.head()
test
0 one
1 two
2 three
3 four
4 five
>>> df2 = df.sort_values(by="test")
>>> df2.head()
test
4 five
3 four
0 one
5 six
2 three
iloc
将通过位置索引获取行
>>> df2.iloc[0]
test five
Name: 4, dtype: object
而
loc
将按标签获取行
>>> df2.loc[0]
test one
Name: 0, dtype: object
您的数据框已以某种方式进行了转换,那些较大的索引最终位于顶部。至于类别,碰巧在头脑中只是运气。