nev*_*ves 7 python sas spss pandas
我有一个很大的 CSV 文件,它带有两个元数据描述文件。一个有.sas
扩展名,另一个有.sps
. 打开它们,它们描述了 CSV 数据格式和类别。这些文件描述了每列的数据格式和可能的类别。例如,值为 1 或 2 的列映射到yes和no。
如何使用这些元数据文件来帮助我阅读 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;
Run Code Online (Sandbox Code Playgroud)
在这里你可以看到等效的.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.
Run Code Online (Sandbox Code Playgroud)
您可以看到它们描述了每列的元数据。
简洁的方法是将 SAS 数据导出为 XPORT 或 SAS7BDAT 格式文件。
之后你可以使用 pandas 函数pandas.read_sas
:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_sas.html
导入 numpy as np 导入 pandas as pd
df = pd.read_sas('test.sas7bdat')
Run Code Online (Sandbox Code Playgroud)
如果您有大文件,则可以使用chunksize
一次仅读取 x 文件行的参数,返回迭代器。或者您可以使用iterator
参数来返回迭代器以增量读取文件。
归档时间: |
|
查看次数: |
797 次 |
最近记录: |