df.head()和df.head有什么区别?

时间:2019-01-01 22:02:13

标签: python python-3.x pandas jupyter-notebook

在Jupyter Notebook或终端中,df.head和df.head()都可以返回数据帧的输出,但有一些细微差别。这两个不同表达式之间的根本区别是什么?括号通常在Python中扮演什么角色? 谢谢!

>>>df.head
<bound method NDFrame.head of          Date    Open    High     Low   Close    Volume
0    1-Jun-17  153.17  153.33  152.22  153.18  16404088
1    2-Jun-17  153.58  155.45  152.89  155.45  27770715
2    5-Jun-17  154.34  154.45  153.46  153.93  25331662
3    6-Jun-17  153.90  155.81  153.78  154.45  26624926
4    7-Jun-17  155.02  155.98  154.48  155.37  21069647
5    8-Jun-17  155.25  155.54  154.40  154.99  21250798
6    9-Jun-17  155.19  155.19  146.02  148.98  64882657
7   12-Jun-17  145.74  146.09  142.51  145.42  72307330
8   13-Jun-17  147.16  147.45  145.15  146.59  34165445
9   14-Jun-17  147.50  147.50  143.84  145.16  31531232
10  15-Jun-17  143.32  144.48  142.21  144.29  32165373
>>> df.head()
       Date    Open    High     Low   Close    Volume
0  1-Jun-17  153.17  153.33  152.22  153.18  16404088
1  2-Jun-17  153.58  155.45  152.89  155.45  27770715
2  5-Jun-17  154.34  154.45  153.46  153.93  25331662
3  6-Jun-17  153.90  155.81  153.78  154.45  26624926
4  7-Jun-17  155.02  155.98  154.48  155.37  21069647

3 个答案:

答案 0 :(得分:5)

这些不只是“微小差异”。实际上,您df.head根本没有采取任何行动。

df.head()实际上占据数据帧的开头。您可以看到输出只有5行:

>>> df.head()
       Date    Open    High     Low   Close    Volume
0  1-Jun-17  153.17  153.33  152.22  153.18  16404088
1  2-Jun-17  153.58  155.45  152.89  155.45  27770715
2  5-Jun-17  154.34  154.45  153.46  153.93  25331662
3  6-Jun-17  153.90  155.81  153.78  154.45  26624926
4  7-Jun-17  155.02  155.98  154.48  155.37  21069647

相反,df.head只是数据帧head的{​​{1}}方法的方法对象。需要括号才能实际调用该方法。方法对象的df基本是

repr

,在适当的位置替换了对象的类名称,方法名称和f"<bound method {classname}.{methodname} of {object!r}" 。实际上,看起来像数据帧的输出部分是原始repr的{​​{1}}。它有10行而不是5行,因为它是整个原始数据帧,而不是头部。

答案 1 :(得分:0)

括号用于调用函数。让我们举一个append的小例子,仅在列表上不带括号的情况下使用它就不会做任何事情,因为它只会返回函数本身,而是使用括号来调用函数:

a = [1]
a.append
print(a)
[1]

a.append(2)
print(a)
[1, 2]

append = a.append
append(3)
print(a)
[1, 2, 3]

仅使用head时会看到类似的结果。他们只是添加了一些代码以使用默认值实际调用该函数。

答案 2 :(得分:0)

head返回method head()返回数据框中的前5(默认)行

type(df.head)
<class 'method'>
type(df.head())
<class 'pandas.core.frame.DataFrame'>