Я нахожусь в процессе написания средства проверки данных для просмотра spss-файлов, и мне необходимо программно обрабатывать различные проверки.Первый шаг - получить доступ к файлу spss, преобразовать его в фрейм данных pandas и запустить оттуда мои проверки.Единственный способ сделать это - через RPY2.К сожалению, я очень мало знаю R и не могу заставить работать ни одно из приведенных ниже решений.Любая помощь / литература будет высоко ценится.
Я извлек некоторые вещи из других постов и создал это:
Использование RPY2
from rpy2.robjects import pandas2ri
from rpy2.robjects import r
from pathlib import Path
import pyreadstat
pandas2ri.activate()
w = r('foreign::read.spss("%s", to.data.frame=TRUE)' % filename)
df = pandas2ri.ri2py(w)
df.head()
w.head()
Ошибка:
rpy2.rinterface_lib.embedded.RRuntimeError: Error in foreign::read.spss("path to test.sav", :
error reading system-file header
Использование pyreadstat (это дает мне столбцы, но выдает ошибки, когда я пытаюсь получить базовые данные)
meta = pyreadstat.read_sav(filename, metadataonly=True)
cols = [x for x in meta[0]]
df, meta = pyreadstat.read_sav(filename, usecols=cols)
print(df)
Ошибка:
pyreadstat._readstat_parser.PyreadstatError: STRING type with value 4/23/19 17:50 with date type
ОБНОВЛЕНИЕ:
Использование гавани сейчас, новсе еще получаются ошибки:
rdf = r(f'haven::read_sav("{filename}")')
Ошибка:
ValueError: Invalid value NaN (not a number)