Python で IBM SPSS (つまり .sav) ファイルを開くためのモジュールはありますか? 追加の dll ファイル/ライブラリを必要としない最新のものがあれば、それは素晴らしいことです。
9 に答える
SPSS (sav、zsav、por)、Stata、SAS ファイルを読み込む Python パッケージ "pyreadstat" をリリースしました。これは C ライブラリ ReadStat のラッパーであるため、非常に高速です。Readstat は、広く使用され、非常に堅牢な R ライブラリ Haven の背後で使用されるライブラリです。
パッケージは自動で含まれています。R を使用する必要はなく (追加のアプリケーションをインストールする必要はありません)、IBM dll やその他の外部ライブラリに依存しません。
たとえば、SPSS sav ファイルを読み取るには、次のようにします。
import pyreadstat
df, meta = pyreadstat.read_sav("/path/to/sav/file.sav")
df はパンダのデータフレームです。メタには、変数ラベルや値ラベルなどのメタデータが含まれます。read_sav は、sav ファイルと zsav (圧縮) ファイルの両方を読み取ります。古い port (ポータブル) ファイル用の関数 read_por もあります。
ここで見つけることができます: https://github.com/Roche/pyreadstat
やりたいことに応じて ( rpy2から R 関連のコマンドを使用してデータを処理するか、Python に切り替えます)、関連するスレッドで@Spacedman によって提供されるソリューションは、ニーズに合わせて簡単に調整できます。
それ以外の場合、Pandasには の便利なラッパーがrpy2
含まれています。以下は、Peat と Barton のweights.sav
データ セットの使用例です。
>>> 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
後でこれを見つけた人のためのメモとして(私のように):ここpandas.rpy
に記載されているように、パンダの最新バージョン(> 0.16)では廃止されました。このページには、インターフェイスを使用するためのコードの更新に関する情報が含まれています。rpy2
しかし、IBM ライブラリを使用する利点は、このかなり複雑なバイナリ ファイル形式を適切に処理できることです。これらは無料で、この形式のコードを書く負担から解放され、ライセンスにより再配布が許可されています。これ以上何を尋ねることができますか?
おそらく、これが役に立つかもしれません: http://code.activestate.com/recipes/577811-python-reader-writer-for-spss-sav-files-linux-mac-/
R への python インターフェイスをread.spss
使用してから、 inを使用してデータをインポートできますlibrary(foreign)
。