Y a-t-il un module Python pour ouvrir les fichiers SPSS?
8 réponses
selon ce que vous voulez faire--traiter les données en utilisant les commandes associées à R de rpy2 , ou passer à Python--la solution fournie par @Spacedman sur un thread associé pourrait facilement être adaptée à vos besoins.
dans les autres cas, Pandas comprend un emballage pratique pour rpy2
. Voici un exemple d'utilisation avec la tourbe et Barton weights.sav
ensemble de données:
>>> import pandas.rpy.common as com
>>> filename = "weights.sav"
>>> w = com.robj.r('foreign::read.spss("%s", to.data.frame=TRUE)' % filename)
>>> w = com.convert_robj(w)
>>> w.head()
ID WEIGHT LENGTH HEADC GENDER EDUCATIO PARITY
1 L001 3.95 55.5 37.5 Female tertiary 3 or more siblings
2 L003 4.63 57.0 38.5 Female tertiary Singleton
3 L004 4.75 56.0 38.5 Male year12 2 siblings
4 L005 3.92 56.0 39.0 Male tertiary One sibling
5 L006 4.56 55.0 39.5 Male year10 2 siblings
comme une note pour les gens trouve plus tard (comme moi): pandas.rpy
a été déprécié dans les plus récentes versions de pandas (>0.16) comme noté ici . Cette page contient des informations sur la mise à jour du code pour utiliser l'interface rpy2
.
mais l'avantage d'utiliser les bibliothèques IBM est qu'ils obtiennent ce format de fichier binaire assez complexe droit. Ils sont gratuits, vous soulagent du fardeau d'écrire du code pour ce format, et la licence vous permet de les redistribuer. Que demander de plus?
voici les paquets qui vous intéressent probablement
-
savReaderWriter on Bitbucket
-
savReaderWriter 3.4.2 in Python Package Index Repo
j'ai eu la même question que @Pyderman sur comment mettre à jour ceci pour pandas (>0.16). C'est ce que j'ai trouvé:
from rpy2.robjects import pandas2ri, r
filename = 'weights.sav'
w = r('foreign::read.spss("%s", to.data.frame=TRUE)' % filename)
df = pandas2ri.ri2py(w)
df.head()
peut-être pourriez-vous trouver cela utile: http://code.activestate.com/recipes/577811-python-reader-writer-for-spss-sav-files-linux-mac - /
vous pouvez utiliser une interface python pour R et ensuite importer les données en utilisant read.spss
dans library(foreign)
.
j'ai publié un paquet python" pyreadstat " qui lit les fichiers SPSS (sav, zsav et por), Stata et SAS. C'est un wrapper autour de la bibliothèque C ReadStat donc c'est très rapide. Readstat est la bibliothèque utilisée à l'arrière de la bibliothèque R Haven, qui est largement utilisé et très robuste.
le colis est autocontenu. Il ne nécessite pas l'utilisation de R (pas besoin d'installer une application supplémentaire) et il ne dépend pas de IBM dlls ou d'autres bibliothèques externes.
par exemple, pour lire un fichier sav SPSS vous feriez:
import pyreadstat
df, meta = pyreadstat.read_sav("/path/to/sav/file.sav")
DF est une base de données pandas. Meta contient des métadonnées telles que des étiquettes variables ou des étiquettes de valeur. read_sav lit les fichiers sav et zsav (compressés). Il y a aussi une fonction read_por pour les vieux fichiers por (portables).
vous pouvez le trouver ici: https://github.com/Roche/pyreadstat