要想有效使用数据,就必须同时在两个层面上思考问题:统计学层面和上下文层面。

例如,让我们看一看几位调查参与者的outcome序列。由于数据文件的组织方式,我们必须进行一些处理才能得到每位调查参与者的妊娠数据。以下函数实现了我们需要的处理:

def MakePregMap(df): 
    d = defaultdict(list) 
    for index, caseid in df.caseid.iteritems(): 
        d[caseid].append(index) 
    return d

df是包含妊娠数据的DataFrame对象。iteritems方法遍历所有妊娠记录的索引(行号)和caseid

d是将每个caseID映射到一列索引的字典。如果你不熟悉defaultdict,可以到Python的collections模块中查看其定义。使用d,我们可以查找一位调查参与者,获得其妊娠数据的索引。

下面的示例就查找了一位调查参与者,并打印出其妊娠结果列表:

>>> caseid = 10229
>>> indices = preg_map[caseid]
>>> df.outcome[indices].values
[4 4 4 4 4 4 1]

indices是调查参与者10229的妊娠记录索引列表。

以这个列表为索引可以访问df.outcome中指定的行,获得一个Series。上面的示例没有打印整个Series对象,而是选择输出values属性,这个属性是一个NumPy数组。

输出结果中的代码1表示成功分娩。代码4表示流产,即自发终止的妊娠,终止原因通常未知。

从统计学上看,这位调查参与者并无异常。流产并不少见,其他一些调查参与者的流产次数相同或者更多。

但是考虑到上下文,这个数据说明一位妇女怀孕6次,每次都以流产告终。她第7次也是最近一次怀孕成功产下了孩子。如果我们抱着同情心看待这些数据,就很容易被数据背后的故事感动。

全国家庭增长调查数据集中的每一条记录都代表一位参与者,这些参与者诚实地回答了很多非常私密而且难以回答的问题。我们可以使用这些数据解答与家庭生活、生育和健康相关的统计学问题。同时,我们有义务思及这些数据所代表的参与者,对他们心存敬意和感谢。

30:00