python工具,用于处理来自healthcare cost and utilization program(http://hcup us.ahrq.gov)的数据。
PyHCU的Python项目详细描述
pyhcup是一个python库,用于解析和导入从美国医疗保健成本和利用程序(http://hcup-us.ahrq.gov)获得的数据。
关于
来自hcup的数据是一个文本文件,每一列有特定的宽度。但是,这些列的宽度及其名称在其他地方。hcup将此元数据作为sas或spss数据加载程序提供。
pyhcup是用来从sas加载程序中提取元数据的,然后使用该元数据来解析固定宽度文本文件中的实际数据。您仍然需要通过hcup获取实际数据。
在作者的博客http://bielism.blogspot.com/2013/12/hcup-and-python-pt-i-background.html上的一系列文章中提供了一组更详细的说明。
示例用法
加载数据文件/加载文件组合。
import pyhcup # specify where your data and loadfiles live datafile = 'D:\\Users\\hcup\\sid\\NY_SID_2009_CORE.asc' loadfile = 'D:\\Users\\hcup\\sid\\sasload\\NY_SID_2009_CORE.sas' # pull basic meta from SAS loadfile meta_df = pyhcup.meta_from_sas(loadfile) # use meta knowledge to parse datafile into a pandas DataFrame df = pyhcup.read(datafile, meta_df) # that's it. use df from here.
用两种方法处理无法保存在内存中的非常大的文件。
- 要导入行的子集(例如用于准备工作或疑难解答),请使用sas.df_from_sas()指定要读取的nrows和/或要跳过的skip rows。
# optionally specify nrows and/or skiprows to handle larger files df = pyhcup.read(datafile, meta_df, nrows=500000, skiprows=1000000)
- 要遍历行块(如导入数据库),请首先使用元数据构建列名和列宽列表。接下来,将chunkSize传递给上面的read()函数,以创建生成可管理大小的块的生成器。
chunk_size = 500000 reader = pyhcup.read(datafile, meta_df, chunksize=chunk_size) for df in reader: # do your business # such as replacing sentinel values (below) # or inserting into a database with another Python library
无论是拉入所有记录还是只拉入一大块记录,都可以替换hcup中所有令人讨厌的丢失/无效数据占位符(这对于一般解析非hcup文件的丢失值不太有用)。
# fyi, this bulldozes through all values in all columns with no per-column control replaced = pyhcup.replace_sentinels(df)
加载文件(元数据)的快捷方式
HCUP为州住院病人数据库(SID)、州非卧床手术数据库(SASD)和州急诊部数据库(SEDD)提供的SAS加载程序文件捆绑在该软件包中,以便于访问。您可以直接检索这些数据的元数据,而不必指定如上所述的加载文件路径。
使用get_meta()函数以这种方式获取meta。你必须把一个州的缩写作为第一个参数,把一年作为第二个参数,就像这样。
meta_df = pyhcup.get_meta('NY', 2009)
默认情况下,get_meta()获取SID核心数据。其他元可以用可选的关键字参数datafile('sid','sedd',或'sasd')和category('core','chgs','severity','dx_pr_grps',或'ahal')获取。
# California emergency department charges meta for 2010 ca_2010_emergency_charges_meta = pyhcup.get_meta('CA', 2010, datafile='SEDD', category='CHGS') # Arizona outpatient surgery DRG records meta for 2004 az_2004_surg_groups_meta = pyhcup.get_meta('AZ', 2004, datafile='SASD', category='DX_PR_GRPS' # etc.