为什么 pandas 中的 .head 方法不显示 DataFrame 的前几行?

问题描述 投票:0回答:1

Screenshot of the code from a book ( Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow by Aurélien Géron)

我对 Pandas 中 .head() 方法应用于 DataFrame 时的行为感到困惑。它不显示前 8 个连续行,而是显示具有非连续索引的行,并且仅多次显示“ocean_proximity”属性下的少数类别。有 5 个可能的类别,但 .head(8) 仅显示其中 4 个的随机选择,有些类别出现多次。你能解释一下为什么会发生这种情况吗?

python pandas
1个回答
0
投票

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

您的数据框已以某种方式进行了转换,那些较大的索引最终位于顶部。至于类别,碰巧在头脑中只是运气。

© www.soinside.com 2019 - 2024. All rights reserved.