What is the difference between Methods and Properties for an object in python?
Here in the above example you mentioned, you can pass argument to df.head() function, where as you cannot pass arguments for properties.
for same above example, if you have written df.head(20) it would return first 20 rows.
Suppose i have a data-frame object named as df, head() is a method that can be applied to df to see the first 5 records of the data-frame and df.size is a property to get the size of the data-frame. 
For the property we are not using '()' as we used for a method. This was little confusing initially. 
Could anyone explain whats basic difference between a property and a method in python. I mean why we had to define size as a property for a dataframe, why not it was defined as a method which would have just returned the size of the data-frame.