2016-03-29 18 views
5

Bir SPSS dosyasında (.sav) pandas kullanarak çalışıyorum.SPSS dosyası (.sav) pandalara rpy yoluyla aktarıldığında Etiketler nasıl korunur?

enter image description here

ilk iki sıra delalet neyi soruştururken (I SPSS bilmiyorum) Açık

, öyle görünüyor: SPSS programında yokluğunda, burada .csv dönüştürüldüğünde gibi tipik bir dosya nasıl göründüğü ve İlk satır Label s içeriyor, ikinci satır ise VarName s içeriyor. Ben böylece pandalar dosyayı getirdiğinde

enter image description here

:

import pandas.rpy.common as com 

def savtocsv(filename): 
    w = com.robj.r('foreign::read.spss("%s", to.data.frame=TRUE)' % filename) 
    w = com.convert_robj(w) 
    return w 

sonra) (kafa yapmak, ilk satır (Etiket) eksik:

enter image description here

Etiketler nasıl korunabilir?

cevap

3

Etiketler read.spss işlevinden dönen nesnenin variable.labels özelliğinde saklanır.

Aşağıdaki değişken etiketleri alabilirsiniz:

import pandas.rpy.common as com 

def get_labels(filename): 
    w = com.robj.r('attr(foreign::read.spss("%s"), "variable.labels")' % filename) 
    w = com.convert_robj(w) 
    return w 

Eğer dataframe sütun adları gibi etiketleri ayarlamak istiyorsanız:

import pandas.rpy.common as com 

def savtocsv(filename): 
    w = com.robj.r('foreign::read.spss("%s", to.data.frame=TRUE)' % filename) 
    cols = list(com.robj.r("attr")(w, "variable.labels")) 
    w = com.convert_robj(w) 
    w.columns = cols 
    return w 
+0

Büyük, ne yapacağını görünüyor ben gerek, teşekkürler. Sanırım panda olan birileri, varName değerlerini değiştirerek bunları sütun başlıkları olarak taklit edebilirim. Ancak pandalarda daha fazla manipülasyon yapmak için dönüşümü kaydetmek için ** ve ** dönüşümleri tek seferde (com.robj.r() ''ye bir çağrı) dahil etmek mümkün mü? – Pyderman

+1

Dosyayı bir kez okumak ve öznitelikleri geri dönen nesneye almak mümkündür, ancak bence başka bir çağrı gerektirecektir. Lütfen güncellemeye bakın. – ayhan

+0

Güzel çalışıyor, teşekkürler. – Pyderman