Python 获取原始数据

Python 获取原始数据,函数raw_data()类似于第3章的例子,但有一些重要的变化。该应用程序中用到了如下内容:

from Chapter_3.ch03_ex5 import (
    series, head_map_filter, row_iter)
from typing import (
    NamedTuple, Callable, List, Tuple, Iterable, Dict, Any)

RawPairIter = Iterable[Tuple[float, float]]

class Pair(NamedTuple):
    x: float
    y: float

pairs: Callable[[RawPairIter], List[Pair]] \
    = lambda source: list(Pair(*row) for row in source)

def raw_data() -> Dict[str, List[Pair]]:
    with open("Anscombe.txt") as source:
        data = tuple(head_map_filter(row_iter(source)))
        mapping = {
            id_str: pairs(series(id_num, data))
            for id_num, id_str in enumerate(
                ['I', 'II', 'III', 'IV'])
        }
    return mapping

函数raw_data()会打开本地数据文件,并利用row_iter()函数将解析后的文件的每一行返回单独的项目行中。上面运用head_map_filter()函数删除了文件的头部,结果创建了一个列表元组结构,并将其赋给data变量,这可以将输入解析为有用的结构。生成的结构是NamedTuple的子类Pair的一个实例,且其中两个字段的类型提示为float

上面使用字典推导式构建了从id_str到由series()函数结果组合配对的映射。函数series()从输入文档中提取 (x,y) 对。文档中的每个序列都在两个相邻的列中。名为I的序列在第0列和第1列,函数series()从中提取相关列对。

创建的函数pairs()是匿名函数对象,因为它是带有单个参数的小型生成器函数。该函数根据series()函数创建的匿名元组序列构建所需的NamedTuple对象。
由于raw_data()函数的输出是映射,因此通过名称选取某个特定的序列,示例如下:

>>> raw_data()['I']
[Pair(x=10.0, y=8.04), Pair(x=8.0, y=6.95), ...

给定一个键,例如I,该序列是一个Pair对象的列表,且该序列中的每一项都具有x值和y值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程