What's the difference between df.head() and df.head?

杀马特。学长 韩版系。学妹 提交于 2020-07-03 05:44:10

问题


In Jupyter Notebook or terminal, both df.head and df.head() can return an output of the dataframe, with some minor differences. What's the fundamental difference between the two different expressions and what role does parenthesis play in Python in general? Thanks!

>>>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

回答1:


Those aren't just "minor differences". You didn't actually take the head at all with df.head.

df.head() actually takes the head of the dataframe. You can see that the output only has 5 rows:

>>> 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

In contrast, df.head is just a method object for the head method of the dataframe df. The parentheses are needed to actually call the method. The method object's repr is basically

f"<bound method {classname}.{methodname} of {object!r}"

with the class name, method name, and repr of the object substituted in the appropriate places. The part of the output that looks like a dataframe is, in fact, the repr of the original df. It has 10 rows instead of 5 because it's the whole original dataframe, not the head.




回答2:


head return a method head() return the top 5(default) row in your dataframe

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



回答3:


Parentheses are used to call a function. Let’s take a small example with append just using it without parenthesis on a list will do nothing as it will just return the function itself but using the parenthesis call the function:

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

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

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

What you see when just using head is similar. They just added some code to actually call the function with default value.



来源:https://stackoverflow.com/questions/53999279/whats-the-difference-between-df-head-and-df-head

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!