我是数据科学 Python (没有计算机科学背景) 的新手。我一直听说 Python 很容易,但是我在不断进步。作为一个例子,我理解:
Len (标题 [(标题年> = 1950) 和 (标题年 <= 1959)
“在标题数据框中,创建一个系列,从标题数据框的年份列中获取大于或等于 1950 年的任何内容,以及小于或等于 1959 年的任何内容。取它的长度。”
但是当我遇到以下情况时,我不理解以下逻辑:
T = 标题
(T.year/10*10).value _ count ().sort_index ().plot (种类 = 'bar')
或者
标题.value _ count ().head (10)
在这两种情况下,我显然可以把它拼凑起来。但目前还不清楚。第二,为什么 Python 不允许我像第一个例子一样使用方括号和常规括号?
这不是关于列表
VsPd 系列
,而是关于括号的功能 (()
) 与括号 ([]
) 在 Python 中。
在两种主要情况下使用括号: 修改操作的优先级顺序,以及在调用函数时分隔参数。
之间的区别1 2*3
和(1 2) * 3
很明显,如果你想通过A
和B.
到一个函数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 _ _
,因此将以以下方式失败:
无法分配给函数调用
方括号用于列表和字典上的索引 (以及类似的东西)。另一方面,由于各种原因,使用括号。在这种情况下,它们用于在(T.年/10*10)
或者作为函数调用Value _ count ()
还有其他地方
对于像 pandas 这样的库,是否使用索引符号[]
或者函数调用完全由库的实现来决定。您可以通过教程和库的文档了解这些细节。
在深入研究 pandas 库之前,我建议您学习 Python 语法的基础知识。官方教程:是一个很好的开始。
另一方面,当你编写代码时,不要让每一行都像你在这些例子中看到的那样复杂。相反,你应该将东西分成更小的部分,并将中间部分分配给变量。举个例子,你可以
(T.year/10*10).value _ count ().sort_index ().plot (种类 = 'bar')
把它变成
十年 = (t 年/10*10)
值 _ 计数 ()
排序 = 计数。 sort_index ()
排序。情节 (种类 = 'bar')
T = 标题
(T.year/10*10).value _ count ().sort_index ().plot (种类 = 'bar')
标题
是一个数据框。年
是该框架中的一列。按照顺序,操作是
你就这样走了吗?