gpt4 book ai didi

python - 如何使用 .SAS 或 SPS 元数据文件将 CSV 读取为 Pandas 数据帧?

转载 作者:行者123 更新时间:2023-12-02 09:50:05 31 4
gpt4 key购买 nike

我有一个大的 CSV 文件,它附带两个元数据描述文件。一个扩展名为 .sas,另一个扩展名为 .sps。打开它们,它们描述了 CSV 数据格式和类别。这些文件描述了数据格式和每列可能的类别。例如,值为 1 或 2 的列映射到 yesno

如何使用这些元数据文件来帮助我读取 CSV 文件?

我可以使用 read_csv 轻松读取它,但这些文件对于自动创建具有可能类别的列很有用。我可以为它们创建一个解析器,但必须有一个包或函数来完成它。也许我没有使用正确的搜索词。

这是 .sas 文件(抱歉,它是葡萄牙语):

proc format;
Value $SG_AREA
CH='Ciךncias Humanas'
CN='Ciךncias da Natureza'
LC='Linguagens e Cףdigos'
MT='Matemבtica';

Value $TP_LINGUA
0='Inglךs'
1='Espanhol';

Value $IN_ITEM_ADAPTADO
0='Nדo'
1='Sim';


DATA WORK.ITENS_2018;
INFILE 'C:\ITENS_PROVA_2018.csv' /*local do arquivo*/
LRECL=33
FIRSTOBS=2
DLM=';'
MISSOVER
DSD ;

INPUT
CO_POSICAO : BEST2.
SG_AREA : $CHAR2.
CO_ITEM : BEST6.
TX_GABARITO : $CHAR1.
CO_HABILIDADE : BEST2.
TX_COR : $CHAR7.
CO_PROVA : BEST3.
TP_LINGUA : $CHAR1.
IN_ITEM_ADAPTADO : $CHAR1. ;

ATTRIB SG_AREA FORMAT = $SG_AREA20.;
ATTRIB TP_LINGUA FORMAT = $TP_LINGUA8.;
ATTRIB IN_ITEM_ADAPTADO FORMAT = $IN_ITEM_ADAPTADO3.;

LABEL
CO_POSICAO='Posiחדo do Item na Prova'
SG_AREA='ֱrea de Conhecimento do Item'
CO_ITEM='Cףdigo do Item'
TX_GABARITO='Gabarito do Item'
CO_HABILIDADE='Habilidade do Item'
TX_COR='Cor da Prova'
CO_PROVA='Identificador da Prova'
TP_LINGUA='Lםngua Estrangeira '
IN_ITEM_ADAPTADO='Item pertencente א prova adaptada para Ledor'

;RUN;

在这里您可以看到等效的 .sps 文件:

GET DATA
/TYPE=TXT
/FILE= "C:\ITENS_PROVA_2018.csv" /*local do arquivo*/
/DELCASE=LINE
/DELIMITERS=";"
/ARRANGEMENT=DELIMITED
/FIRSTCASE=2
/IMPORTCASE= ALL
/VARIABLES=
CO_POSICAO F2.0
SG_AREA A2
CO_ITEM F6.0
TX_GABARITO A1
CO_HABILIDADE F2.0
TX_COR A7
CO_PROVA F3.0
TP_LINGUA A1
IN_ITEM_ADAPTADO A1.
CACHE.
EXECUTE.
DATASET NAME ITENS_18 WINDOW=FRONT.

VARIABLE LABELS
CO_POSICAO Posiחדo do Item na Prova
SG_AREA ֱrea de Conhecimento do Item
CO_ITEM Cףdigo do Item
TX_GABARITO Gabarito do Item
CO_HABILIDADE Habilidade do Item
TX_COR Cor da Prova
CO_PROVA Identificador da Prova
TP_LINGUA Lםngua Estrangeira
IN_ITEM_ADAPTADO Item pertencente א prova adaptada para Ledor.


VALUE LABELS
SG_AREA
"CH" Ciךncias Humanas
"CN" Ciךncias da Natureza
"LC" Linguagens e Cףdigos
"MT" Matemבtica
/TP_LINGUA
0 Inglךs
1 Espanhol
/IN_ITEM_ADAPTADO
0 Nדo
1 Sim.

您可以看到它们描述了每列的元数据。

最佳答案

.sas 是 program file extension用于 SAS,并且设计为通过 SAS 使用。它本质上是一个充当字典文件的命令文件。

.sps 是 SPSS 的程序文件扩展名,旨在通过 SPSS 使用。它本质上是一个充当字典文件的命令文件。我也想在这里提供一个方便的链接,但 SPSS 是 IBM 产品,他们的文档是一片 hell 般的风景,任何人都不应踏足。

尽管如此,你想要做的事情应该是可能的。 Pandas 本身是不够的,因为它没有内置功能来解决这些情况。 Pandas 对 SAS 的支持仅扩展到 .sas7bdat 数据文件,对 SPSS 的支持仅扩展到 .sav 数据文件。

Python(和 Pandas)可以读取 .sas 和 .sps 扩展名,因为它们是纯文本文件,但实际上无法对它们执行任何操作。

<小时/>

您可以通过以下两条途径来获得您想要的东西。

1) 在试用版上安装 SAS 或 SPSS,用它来读取数据,然后以替代格式导出。

2) 安装并尝试使用 Pandas 的 pyreadstat 扩展。

听起来 pandas 框架是您的首选,要使其发挥作用,您需要扩展它的功能。在本例中,使用 pyreadstat扩大。它旨在处理 SAS 和 SPSS 数据文件,并且处理它们的效率比 pandas 本身要高得多。该解决方案有一个警告。

Pyreadstat 本身就是 ReadStat 的转换。引用 pyreadstat 自述文件:

This module is a wrapper around the excellent Readstat C library by Evan Miller. 
Readstat is the library used in the back of the R library Haven,
meaning pyreadstat is a python equivalent to R Haven.

如果您只查看 pyreadstat 文件,您通常不会发现任何涉及 .sas 或 .sps 或字典文件的内容。相反,您需要查看 ReadStat 的自述文件 here 。它有一个章节专门介绍了此类情况。

到目前为止,我还没有测试 pyreadstat 中字典文件存在的 ReadStat 命令和函数,因此这可能不起作用。

如果您尝试此解决方案但失败,请跟进该线程,我将帮助您排除故障。

关于python - 如何使用 .SAS 或 SPS 元数据文件将 CSV 读取为 Pandas 数据帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58534190/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com