首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python sas7bdat模块用法

Python sas7bdat模块用法
EN

Stack Overflow用户
提问于 2013-10-29 05:59:12
回答 4查看 21.2K关注 0票数 11

我必须从SAS数据集中转储数据。我发现了一个名为sas7bdat.py的Python模块,它说它可以读取SAS .sas7bdat数据集,而且我认为,由于需要其他功能,用Python而不是SAS来完成项目会更简单、更直接。然而,交互式Python中的帮助(Sas7bdat)并不是很有用,我能找到的转储数据集的唯一示例如下所示:

代码语言:javascript
复制
import sas7bdat
from sas7bdat import *
# following line is sas dataset to convert
foo = SAS7BDAT('/support/sas/locked_data.sas7bdat')
#following line is txt file to create
foo.convertFile('/support/textfiles/locked_data.txt','\t')

这不是我想要的,因为a)它使用SAS变量名作为列标题,我需要它使用变量标签,b)它使用"nan“来表示缺少的数值,而我更愿意将值保留为空。

谁能给我推荐一些关于sas7bdat.py中包含的方法的有用文档?我用谷歌搜索了我能想到的所有关键字的排列,但都没找到。如果没有,谁能给我举一两个使用readColumnAttributes()、readColumnLabels()和/或readColumnNames()的例子?

谢谢大家。

EN

回答 4

Stack Overflow用户

发布于 2014-07-17 00:25:13

这只是一个部分的答案,因为我发现没有容易阅读的具体文档。

你可以查看源代码here

这显示了有关方法所需参数的一些基本信息,例如:

collabs,coltext,colcount)

  • readColumnNames(self,colname,coltext)

我认为你想要的大部分东西都存储在用SAS7BDAT创建对象时返回的"header“类中。如果你只是打印这个类,你会得到很多信息,但是你也可以访问类的属性。我认为您可能正在寻找的大部分内容都在foo.header.cols下。我怀疑您使用了各种头部属性作为您提到的方法的参数。

也许像这样的事情会让你们更亲近?

代码语言:javascript
复制
from sas7bdat import SAS7BDAT
foo = SAS7BDAT(inFile) #your file here...

for i in foo.header.cols:
    print '"Atrributes"', i.attr
    print '"Labels"', i.label
    print '"Name"', i.name

编辑:与这个特定问题无关,但是在尝试弄清楚不熟悉的类/库中发生了什么时,type()dir()命令会派上用场

票数 4
EN

Stack Overflow用户

发布于 2018-08-23 19:32:22

随着时间的推移,解决方案变得更容易。如果你想和熊猫一起工作,我认为这是最简单的:

代码语言:javascript
复制
import pandas as pd
df = pd.read_sas('/support/sas/locked_data.sas7bdat')

请注意,通过使用df.values可以很容易地获得numpy数组

票数 4
EN

Stack Overflow用户

发布于 2018-02-15 02:46:13

我知道我来晚了,但以防有人搜索类似的问题。最好的选择是:

代码语言:javascript
复制
import sas7bdat
from sas7bdat import *
foo = SAS7BDAT('/support/sas/locked_data.sas7bdat')
# This converts to dataframe:
ds = foo.to_data_frame()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19645852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档