提交 20e98599 编写于 作者: W wizardforcel

ch7.

上级 ac060eed
# # 函数和表格
通过使用 Python 中已有的函数,我们正在建立一个使用的技术清单,用于识别数据集中的规律和主题。 现在我们将探索Python编程语言的核心功能:函数定义。 通过使用 Python 中已有的函数,我们正在建立一个使用的技术清单,用于识别数据集中的规律和主题。 现在我们将探索Python编程语言的核心功能:函数定义。
...@@ -241,3 +240,88 @@ ages.with_column( ...@@ -241,3 +240,88 @@ ages.with_column(
### 作为值的函数 ### 作为值的函数
我们已经看到,Python 有很多种值。 例如,`6`是一个数值,`"cake"`是一个文本值,`Table()`是一个空表,`age`是一个表值(因为我们在上面定义)的名称。
在 Python 中,每个函数(包括`cut_off_at_100`)也是一个值。 这有助于再次考虑菜谱。 蛋糕的菜谱是一个真实的东西,不同于蛋糕或配料,你可以给它一个名字,像“阿尼的蛋糕菜谱”。 当我们用`def`语句定义`cut_off_at_100`时,我们实际上做了两件事情:我们创建了一个函数来截断数字 100,我们给它命名为`cut_off_at_100`
我们可以引用任何函数,通过写下它的名字,而没有实际调用它必需的括号或参数。当我们在上面调用`apply`时,我们做了这个。 当我们自己写下一个函数的名字,作为单元格中的最后一行时,Python 会生成一个函数的文本表示,就像打印一个数字或一个字符串值一样。
```py
cut_off_at_100
<function __main__.cut_off_at_100>
```
请注意,我们没有使用引号(它只是一段文本)或`cut_off_at_100()`(它是一个函数调用,而且是无效的)。我们只是写下`cut_off_at_100`来引用这个函数。
就像我们可以为其他值定义新名称一样,我们可以为函数定义新名称。 例如,假设我们想把我们的函数称为`cut_off`,而不是`cut_off_at_100`。 我们可以这样写:
```py
cut_off = cut_off_at_100
```
现在`cut_off`就是函数名称了。它是`cut_off_at_100`的相同函数。所以打印出的值应该相同。
```py
cut_off
<function __main__.cut_off_at_100>
```
让我们看看另一个`apply`的应用。
### 示例:预测
数据科学经常用来预测未来。 如果我们试图预测特定个体的结果 - 例如,她将如何回应处理方式,或者他是否会购买产品,那么将预测基于其他类似个体的结果是很自然的。
查尔斯·达尔文(Charles Darwin)的堂兄弗朗西斯·高尔顿(Sir Francis Galton)是使用这个思想来基于数值数据进行预测的先驱。 他研究了物理特征是如何传递下来的。
下面的数据是父母和他们的成年子女的高度测量值,由高尔顿仔细收集。 每行对应一个成年孩子。 变量是家庭的数字代码,父母的高度(以英寸为单位),“父母身高”,这是父母双方身高的加权平均值 [1],家庭中孩子的数量 ,以及孩子的出生次序(第几个),性别和身高。
```py
# Galton's data on heights of parents and their adult children
galton = Table.read_table('galton.csv')
galton
```
| family | father | mother | midparentHeight | children | childNum | gender | childHeight |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | 78.5 | 67 | 75.43 | 4 | 1 | male | 73.2 |
| 1 | 78.5 | 67 | 75.43 | 4 | 2 | female | 69.2 |
| 1 | 78.5 | 67 | 75.43 | 4 | 3 | female | 69 |
| 1 | 78.5 | 67 | 75.43 | 4 | 4 | female | 69 |
| 2 | 75.5 | 66.5 | 73.66 | 4 | 1 | male | 73.5 |
| 2 | 75.5 | 66.5 | 73.66 | 4 | 2 | male | 72.5 |
| 2 | 75.5 | 66.5 | 73.66 | 4 | 3 | female | 65.5 |
| 2 | 75.5 | 66.5 | 73.66 | 4 | 4 | female | 65.5 |
| 3 | 75 | 64 | 72.06 | 2 | 1 | male | 71 |
| 3 | 75 | 64 | 72.06 | 2 | 2 | female | 68 |
(省略了 924 行)
收集数据的主要原因是,能够预测父母所生的孩子的成年身高,和数据集类似。让我们尝试这样做,用双亲的身高作为我们预测的基础变量。 因此双亲的身高是我们的预测性变量。
表格`heights`包含双亲和孩子的身高。 两个变量的散点图显示了正相关,正如我们对这些变量的预期。
```py
heights = galton.select(3, 7).relabeled(0, 'MidParent').relabeled(1, 'Child')
heights
```
| MidParent | Child |
| --- | --- |
| 75.43 | 73.2 |
| 75.43 | 69.2 |
| 75.43 | 69 |
| 75.43 | 69 |
| 73.66 | 73.5 |
| 73.66 | 72.5 |
| 73.66 | 65.5 |
| 73.66 | 65.5 |
| 72.06 | 71 |
| 72.06 | 68 |
(省略了 924 行)
```py
heights.scatter(0)
```
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册