读取SAS文件以获取元信息

时间:2018-05-31 20:59:45

标签: python apache-spark sas pyspark databricks

数据科学技术的新手。目前正致力于阅读SAS文件(.sas7dbat)。

能够使用以下方式阅读文件:

SAS7BDAT('/dbfs/mnt/myMntScrum1/sasFile.sas7bdat') as f:
    for row in f:
      print(row)

行打印所有数据。

当我们在SAS查看器中查看SAS文件时,我们可以看到元数据E.g.标签信息&实际数据上使用的变量(列名)

如何使用Python在Spark(Databricks)中读取此元数据?

enter image description here

4 个答案:

答案 0 :(得分:2)

您尝试过pyreadstat吗?

它可以直接读取元数据。

    import pyreadstat

    df, meta = pyreadstat.read_sas7bdat('/path/to/a/file.sas7bdat')

答案 1 :(得分:1)

Python中的大多数数据分析是使用pandas库完成的,该库有一个名为' read_sas'保留元数据,除非你被命令使用spark我强烈推荐pandas。以下是SAS用户的一组说明:https://blog.dominodatalab.com/pandas-for-sas-users-part-1/

答案 2 :(得分:0)

您可以使用名为h5的Spark外部程序包来读取spark-sas7bdat

这里是如何将其安装到Spark Application中 https://spark-packages.org/package/saurfang/spark-sas7bdat 及其github页面上的一些示例 https://github.com/saurfang/spark-sas7bdat

然后仅使用Spark读取方法

sas_file_name.sas7bdat

答案 3 :(得分:0)

如果您只对 metadata 感兴趣,您可以使用 pyreadstatmetadataonly 参数作为 True 传递,它不会读取任何数据,而只会读取元数据,因此文件的大小不会影响读取元数据所需的时间。

import pyreadstat

df, meta = pyreadstat.read_sas7bdat('/dbfs/mnt/myMntScrum1/sasFile.sas7bdat', metadataonly=True)

请注意,传递 metadataonly=True 时 df 将是一个空数据框,如果您既需要数据又需要元数据,则可能需要省略此项

您可以使用 meta.column_names_to_labels 访问变量标签,它会给出一个字典,其中变量名称是键,变量标签是值。

其他有用的元数据有:metadata.number_columnsmetadata.number_rowsmetadata.file_encodingmetadata.file_label 等。

您可以在 pyreadstat documentation

找到可用元数据的完整列表