全国家庭增长调查
1973年起,美国疾病控制和预防中心(CDC)开始全国家庭增长调查(NSFG,http://cdc.gov/nchs/nsfg),以收集“与家庭生活、婚姻状况、妊娠情况、生育情况等相关的”信息,进行健康服务和健康教育项目规划。
本实例将使用这项调查收集的数据研究第一胎是否出生较晚,并解答一些其他问题。在使用调查数据前,先熟悉codebook。可以从美国疾病控制和预防中心的网站(NSFG)的"Questionnaires, Dataset, and Related Document"选项中下载全国家庭增长调查数据的代码本和使用手册。
全国家庭增长调查的妊娠数据下载地址为: ftp://ftp.cdc.gov/pub/Health_Statistics/NCHS/Datasets/NSFG
本文使用2013_2015_FemPregData.dat的数据,2013_2015_FemPregSetup.dct是一个数据字典,记录了数据文件的格式。
2013_2015_FemPregSetup.dct数据字典的内容为:
infile dictionary {
*************************************
* NATIONAL SURVEY OF FAMILY GROWTH (NSFG), 2013-2015
* STATA Pregnancy Data Dictionary
*
* Warning: Edit this file at your own risk
*
*****************************************************
_lines(1)
_line(1)
_column(1) long CASEID %5f "受访者编码"
_column(6) byte PREGORDR %2f "怀孕次数"
_column(8) byte HOWPREG_N %2f "当前怀孕月数"
......
2013_2015_FemPregData.dat的内容为:
60418 1 5 ---
60418 2 5 ---
60418 3 5 ---
......
读取定宽字符文件的类:
#表示一组固定宽度的变量
import numpy as np
import pandas
class FixedWidthVariables(object):
#初始化
#variables:DataFrame
#index_base:索引列标
def __init__(self, variables, index_base=0):
self.variables = variables
# 默认为:colspecs-1
self.colspecs = variables[['start', 'end']] - index_base
# 将colspecs转为int列表
self.colspecs = self.colspecs.astype(np.int).values.tolist()
self.names = variables['name']
#使用pand方法读取定宽字符
#返回DataFrame对象
def ReadFixedWidth(self, filename, **options):
df = pandas.read_fwf(filename,
colspecs=self.colspecs,
names=self.names,
**options)
return df
加载字典文件: