为什么`head`需要`()`和`shape`不?

时间:2017-10-07 01:49:27

标签: python pandas dataframe methods

在下面的代码中,我将csv文件导入Python的pandas库并显示前5行,并查询pandas数据帧的“形状”。

head()
  1. 为什么 head方法在shape之后需要空括号但head没有?它与他们的类型有关吗? 如果我在没有使用空括号的情况下调用head,我就不会得到相同的结果。是shape是一种方法而a = {} names = [ {'name': 'Bart'}, {'name': 'Lisa'}, {'name': 'Maggie'} ] for name in names: a.update(name) 只是一种属性吗?

  2. 我怎样才能将上述问题的答案概括为Python的其余部分?我试图在这里学习的不只是熊猫,而是Python。例如,如果_____是这种情况,如果没有提供参数,则必须包括空括号,而对于其他属性,则不包括?

2 个答案:

答案 0 :(得分:1)

当您致电data.head()时,您正在调用对象head(self)上的方法data

但是,当您编写data.shape时,您正在引用对象data的公共属性

请记住,方法和对象属性之间存在明显差异。您可以阅读here

答案 1 :(得分:0)

head是一种方法而不是属性的原因很可能与性能有关。如果head是一个属性,那么就意味着每次你争论数据帧时,pandas都必须预先计算数据切片并将其存储在head属性中,这将浪费资源。具有空括号的其他方法也是如此。

在形状的情况下,它作为属性提供,因为此信息对于任何数据框操作都是必不可少的,因此它是预先计算的并且可用作属性。