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

Jas*_* Hu 0 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
Run Code Online (Sandbox Code Playgroud)

WeN*_*Ben 5

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

type(df.head)
<class 'method'>
type(df.head())
<class 'pandas.core.frame.DataFrame'>
Run Code Online (Sandbox Code Playgroud)


use*_*ica 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
Run Code Online (Sandbox Code Playgroud)

相反,df.head它只是head数据帧方法的方法对象df.实际调用该方法需要括号.方法对象repr基本上是

f"<bound method {classname}.{methodname} of {object!r}"
Run Code Online (Sandbox Code Playgroud)

使用类名,方法名和repr在适当位置替换的对象.事实上,看起来像数据帧的输出部分是repr原始部分df.它有10行而不是5行,因为它是整个原始数据帧,而不是头部.


Y0d*_*0da -1

括号用于调用函数。让\xe2\x80\x99s 举一个小例子,append在列表上不带括号而使用它不会执行任何操作,因为它只会返回函数本身,但使用括号调用该函数:

\n\n
a = [1]\na.append\nprint(a)\n[1]\n\na.append(2)\nprint(a)\n[1, 2]\n\nappend = a.append\nappend(3)\nprint(a)\n[1, 2, 3]\n
Run Code Online (Sandbox Code Playgroud)\n\n

刚使用时看到的内容head是相似的。他们只是添加了一些代码来实际调用具有默认值的函数。

\n