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 th
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'>
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.
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.