用Python(in PsychoPy)打开SPSS数据文件
有时,要访问SPSS的sav文件中的内容,而手里电脑没有SPSS软件,或者需要对SPSS数据文件中的数据进行SPSS支持不够好的操作,如对一组数据反复多次抽样。可以使用Python中的Pandas模块来访问SPSS的数据文件。
这里以PsychoPy中的Python编程环境为例,探索一下如何打开SPSS的.sav文件。现在我手里有一个保存了某个学校的某次考试成绩的数据文件,名为“成绩.sav”,其中有三个变量分别名为“语文”、“数学”及“物理”,即保存了这三科的成绩。
访问SPSS数据文件,需要用到pandas模块中的read_spss函数,这个函数在0.25版以后才有,但很多PsychoPy系统附带的pandas是0.23版的。因此,首先需要将PsychoPy里的pandas进行升级,升级操作如下。假设你已经安装好了PsychoPy,在Windows系统中,打开命令提示符对话框(这一功能在Windows的系统工具中),在命令提示符后输入
python –m pip install –upgrade pandas |
这里m前的减号是一个,而upgrade前面的减号是两个。运行这个命令,需要你的电脑已经连接网络,这个命令会自己判断你的pandas是否为最新版本,如果不是,就会从网上下载升级文件将pandas更新为最新版。在我写这篇小短文时,pandas的版本是1.1.3。升级后,检查PsychoPy中pandas的版本,可以使用如下语句。
import pandas as pd print(pd.__version__) |
注意,version前后的下划线是两个。
使用pandas读取SPSS数据文件,还需要一个模块叫pyreadstat,也是使用Windows命令提示窗口中运行python的pip 命令来安装。
python –m pip install pyreadstat |
好,现在就可以使用python语句来打开SPSS数据文件了。
在程序中,首先需要引用pandas模块,通行的引用方法是给其取个别名pd。然后在第3行,声名了一个名为data_file的变量,其中保存了数据文件的名字。这里假设数据文件与程序文件在同一个文件夹。然后在第6行,调用了pandas中的read_spss函数,把保存了数据文件名的变量data_file传递给这个函数。这个函数的返回值存储到变量my_data中。如果数据打开成功,程序就会接着运行第9行的代码,其作用是显示出变量my_data中的内容有多少,my_data的shape属性可以获得数据有多少行与多少列。
在输出窗口我们看到一行文字显示为(791,3),这说明我们的数据一共包含了791行,有三列。
我们还可以显示其中数学列的前10个值,使用如下代码。
在输出窗口中,我们可以看到如下内容:
这就是数据文件中数学一列的前5个值。
也可以使用pandas中的基本统计功能计算一些常见统计量,如,
这段代码会在输出窗口中显示本数据文件中语文的平均成绩。其它统计量像标准差、最小值、最大值等,都可以显示出来。