我希望工作的SPSS文件(.sav)使用pandas。在没有SPSS程序的情况下,以下是转换为.csv时典型文件的样子:
在调查前两行的含义时(我不知道SPSS),似乎第一行包含Labels,而第二行包含VarNames。
因此,当我把这份文件带到熊猫里时:
import pandas.rpy.common as com
def savtocsv(filename):
w = com.robj.r('foreign::read.spss("%s", to.data.frame=TRUE)' % filename)
w = c
我有一个很大的SPSS文件(包含100多万条记录,列略低于150列),我想将其转换为Pandas DataFrame。
将文件转换为列表需要几分钟,将其转换为数据帧需要几分钟,设置列头也需要几分钟。
有没有什么我遗漏的优化方案呢?
import pandas as pd
import numpy as np
import savReaderWriter as spss
raw_data = spss.SavReader('largefile.sav', returnHeader = True) # This is fast
raw_data_list = list(raw_d
问题1)一般来说,我对python和编码都很陌生。我想从CSV获取我的数据,CSV有一列标有“美国OSHA可记录?”。在那一栏中,每一个答案都是“是”或“否”。我想显示一个plot.bar,显示"23是的“和"7的不”。本质上,将“是”和“否”的总和相加在列中,然后在1张干净的条形图中显示总数。它将显示两个条形图,在两个条形图的上方都有总数……问题是,条形图现在在X轴上有一行,每一行大约27次地说“不,是,不,是的,不”。我希望用户能够轻松地看到一个条形图,它的顶部只有两个条形图,总显示在像这张图像的顶部。
这是我的代码,我不知道我需要在列中总结是和否。
import pan
假设我有一个名为"ab.sav“的spss文件,如下所示:
gender value value2
F 433 329
. . 787
. . .
M 121 .
F 311 120
. . 899
M 341 .
在spss (Variable View)中,我用值1和2分别为M和F定义了gender的标签。
当我使用以下命令在python中加载它时:
>>> from rpy2.robjects.packages i
假设我有两个变量列表
list a: a1 a2 a3
list b: b1 b2 b3
我想用这样的方式来处理:
TEMPORARY.
SELECT IF a1=b1.
FREQUENCY someVar.
TEMPORARY.
SELECT IF a2=b2.
FREQUENCY someVar.
TEMPORARY.
SELECT IF a2=b2.
FREQUENCY someVar.
我试图在python循环中这样做:
BEGIN PROGRAM.
import spss
la = ['a1', 'a2', 'a3']
lb
我有一个SPSS数据库,我需要打开,但它是巨大的,如果打开天真如在下面的代码,它饱和RAM并最终崩溃。
import pandas as pd
def main():
data = pd.read_spss('database.sav')
print(data)
if __name__=='__main__':
main()
同样的熊猫功能,读取一个SAS数据库允许chunksize和iterator关键字,映射文件,没有读取它的所有内存在一次尝试,但对于SPSS这个选项似乎是缺失的。我是否还可以使用另一个python模块来完成此任务