在列表 vs 系列中理解 Python 语法

共3个回答, 标签: python pandas syntax

我是数据科学 Python (没有计算机科学背景) 的新手。我一直听说 Python 很容易,但是我在不断进步。作为一个例子,我理解:

Len (标题 [(标题年> = 1950) 和 (标题年 <= 1959)

“在标题数据框中,创建一个系列,从标题数据框的年份列中获取大于或等于 1950 年的任何内容,以及小于或等于 1959 年的任何内容。取它的长度。”

但是当我遇到以下情况时,我不理解以下逻辑:

T = 标题
(T.year/10*10).value _ count ().sort_index ().plot (种类 = 'bar')

或者

标题.value _ count ().head (10)

在这两种情况下,我显然可以把它拼凑起来。但目前还不清楚。第二,为什么 Python 不允许我像第一个例子一样使用方括号和常规括号?

第1个答案

这不是关于列表VsPd 系列,而是关于括号的功能 (()) 与括号 ([]) 在 Python 中。

在两种主要情况下使用括号: 修改操作的优先级顺序,以及在调用函数时分隔参数。

之间的区别1 2*3(1 2) * 3很明显,如果你想通过AB.到一个函数F, B.与 Haskell 不同,它不起作用。

我们主要关注这里的第一次使用; 例如,在这一行中:

(T.year/10*10).value _ count ().sort_index ().plot (种类 = 'bar')

如果没有括号,您将在10这是没有意义的。很明显,你想根据括号表达式的结果调用它们。

现在,在数学中,括号也可以用来表示优先级,与括号一起,在多个嵌套括号会混淆的情况下。例如,两者在数学上可能是等价的:

【 (1 2) * 3 】 * * 4
((1 2) * 3) * * 4

然而,在 Python 中情况并非如此:((1 2) * 3) * * 4可以评估,而【 (1 2) * 3 】 * * 4是一个打字错误,因为括号内的部分解析为名单,并且不能在列表.

相反,像这样的事情会发生什么标题 [年份> = 1950]与优先级不直接相关 (当然,括号之外的任何东西都不会是内部表达式的一部分)。

相反,括号表示索引; 在某种程度上,标题.年份> = 1950用于获取元素标题(这是使用过多_ _ Getitem _ _呆头呆脑的方法)。

这种索引的确切性质可能不同;列表取整数,法令获取任何可散列对象Pd 系列拿,除其他外,布尔Pd 系列(这就是这里发生的事情),但是它们最终代表了某种方式子集索引对象。

因此,在语义上,我们可以看到括号的意思不同于括号,并且不能互换。

为了完整起见,使用括号而不是括号有一个明显的好处: 它允许重新分配,因为它会自动将_ _ Setitem _ _或者_ _ Getitem _ _,取决于是否正在执行分配。

所以你可以做一些标题 [标题.年份> = 1950] = “没有”如果你愿意的话然而,在所有情况下,标题 (标题。年份> = 1950) = “无”的代表_ _ Call _ _,因此将以以下方式失败:

无法分配给函数调用
第2个答案

方括号用于列表和字典上的索引 (以及类似的东西)。另一方面,由于各种原因,使用括号。在这种情况下,它们用于在(T.年/10*10)或者作为函数调用Value _ count ()还有其他地方

对于像 pandas 这样的库,是否使用索引符号[]或者函数调用完全由库的实现来决定。您可以通过教程和库的文档了解这些细节。

在深入研究 pandas 库之前,我建议您学习 Python 语法的基础知识。官方教程:是一个很好的开始。

另一方面,当你编写代码时,不要让每一行都像你在这些例子中看到的那样复杂。相反,你应该将东西分成更小的部分,并将中间部分分配给变量。举个例子,你可以

(T.year/10*10).value _ count ().sort_index ().plot (种类 = 'bar')

把它变成

十年 = (t 年/10*10)
值 _ 计数 ()
排序 = 计数。 sort_index ()
排序。情节 (种类 = 'bar')
第3个答案
T = 标题
(T.year/10*10).value _ count ().sort_index ().plot (种类 = 'bar')

标题是一个数据框。是该框架中的一列。按照顺序,操作是

  • 将年份除以 10 (整数除法),再乘以 10。这将最后一个数字截断为 0,这样每年都是十年的开始。这样做的结果是另一列,与原始列的长度相同。
  • 统计这些值; 这将为每个十年生成一个带有条目 (年份、频率) 的新表。
  • 按默认索引排序此表
  • 制作结果的条形图。

你就这样走了吗?

相关问题

通过随机抽样其他列数据创建新列 如何使用熊猫获得包括每一个组合的计数 如何有效地展开矩阵的值与小块? 如何破坏 Python 对象并释放内存 将具有特殊格式的文本文档转换为熊猫数据框架 用两本字典绘制一只熊猫专栏图 构造函数中这种奇怪的冒号成员 (&ldquo;:&rdquo;) 语法是什么? 一次包含多个头文件,只有一个 # Include-expression? 到底是如何?: 操作员在 C 中工作?