SPSS – 打开 CSV 数据文件

作者:Ruben Geert van den Berg,发表于 SPSS Blog

概要

本教程将引导你如何在 SPSS 中打开 .csv 数据文件。我们选择了一个从 Google Analytics (GA) 获取的 .csv 文件作为示例。考虑到许多读者可能不熟悉 GA,下面的截图展示了数据在导出为 .csv 文件之前的基本形态。

SPSS 打开 .csv 数据 - Google Analytics 1

原始数据文件(由 GA 生成)可以从 这里 下载。之所以选择这个文件,是因为在 SPSS 中打开它会遇到一些你在实际数据中经常遇到的问题。我们将花时间解释并解决这些问题。

Notepad++

好的,我们从哪里开始呢?通常,.csv 文件与 MS Excel 或 OpenOffice Calc 等电子表格编辑器相关联。但是,更好的方法是使用 Notepad++ 或类似的文本编辑器检查该文件。我们马上就会看到,这使我们能够收集有关文件内容的一些重要信息。下面的屏幕截图显示了数据在 Notepad++ 中的样子。

CSV 文件的内容

SPSS 打开 .csv 数据 - Notepad++ 1

请注意,文件的前 6 行是对数据的基本描述。在检查完数据的其余部分后,我们将删除它们。 第 7 行包含变量名。请注意,其中大多数变量名不适用于 SPSS,因为它们包含空格或以百分号开头。我们将手动清理它们。 实际数据从第 8 行开始,删除前 6 行后,这将是数据的第二行。 注意数据值是如何用逗号分隔的(因此称为“逗号分隔值”,即 .csv 文件)。这些逗号被称为分隔符 (delimiter) 如果一个值包含逗号,则它会被双引号引起来。这就是文本限定符 (text qualifier)。这些引号表示它们之间的逗号不应被视为分隔符。

更多 CSV 文件的内容

SPSS 打开 .csv 数据 - Notepad++ 2

如果我们快速向下滚动文件(提示:使用键盘上的 pgdn 键),我们会看到第 318 行是包含原始数据值的最后一行。 第 319 行及以下包含我们不需要的汇总统计信息。因此,我们将删除它们。

SPSS 打开 .csv 数据 - Notepad++ 3

最后但同样重要的是,请注意状态栏中的“UTF-8”。这是文件编码 (encoding)。它基本上告诉我们如何将字符映射到文件实际包含的位(1 和 0)。

清理 CSV 文件

现在,我们像刚才讨论的那样清理 .csv 文件。完成此操作后,我们将使用不同的文件名保存它。这使我们能够将手动编辑的文件与 GA 生成的原始文件进行比较。我们将在 SPSS 中打开的最终 .csv 文件可以从 browsers.csv 下载。

在 SPSS 中打开 CSV 文件

我们现在准备好在 SPSS 中打开我们的 .csv 文件。为此,我们首先启动 SPSS,然后导航到 F 文件 (File) SPSS 菜单箭头 O 打开 (Open) SPSS 菜单箭头 D 数据 (Data) 。

SPSS 打开 .csv 数据 1

我们在 Notepad++ 中看到文件编码是 UTF-8。当我们选择文件时,SPSS 可能会在此处切换到“本地编码 (Local Encoding)”。如果发生这种情况,请在继续之前将其设置回 UTF-8。 单击 P 粘贴 (Paste) 而不是 O 打开 (Open) 。

步骤 1

SPSS 打开 .csv 数据 2

步骤 2

SPSS 打开 .csv 数据 3

请记住,变量名构成了 .csv 文件的第一行。

步骤 3

SPSS 打开 .csv 数据 4

步骤 4

SPSS 打开 .csv 数据 5

在这里,我们指定在 Notepad++ 中检查文件时识别出的分隔符 (delimiter)。 就像我们之前看到的那样,我们原始数据中唯一的文本限定符 (text qualifier) 是双引号。

步骤 5

SPSS 打开 .csv 数据 6

我们_可以_在此处指定一些变量格式 (variable formats)。但是,稍后处理会更快、效果更好。

步骤 6

SPSS 打开 .csv 数据 7

初始语法

按照前面的步骤将生成以下语法 (syntax)。想要从本教程复制粘贴语法的读者可以更正 /FILE 规范(语法的第二行),或者创建一个文件夹 d:/project_00/edit 并将 browsers.csv 移动到此文件夹中。 在运行此语法之前,我们删除最后一行;我们没有请求任何 DATASET NAME ... 命令,运行它只会妨碍我们。

***从菜单粘贴的初始语法 - 需要进行一些更正。
**
GET DATA /TYPE=TXT
/FILE="D:\project_00\edit\browsers.csv"
/ENCODING='UTF8'
/DELCASE=LINE
/DELIMITERS=","
/QUALIFIER='"'
/ARRANGEMENT=DELIMITED
/FIRSTCASE=2
/IMPORTCASE=ALL
/VARIABLES=
screen_resolution A9
sessions F5.0
perc_new_sessions A7
new_users F5.0
bounce_rate A7
pages_session F4.2
avg_session_duration A8
goal_conversion_rate A5
goal_completions F1.0
goal_value A7.
CACHE.
EXECUTE.
DATASET NAME DataSet1 WINDOW=FRONT.

系统缺失值

SPSS 打开 .csv 数据 - 系统缺失值

运行语法后,让我们看一下 数据视图 (data view)。请注意,sessions 中存在一些 系统缺失值 (system missing values)。原因是某些值包含逗号。如果我们仔细查看语法,我们会看到它包含 sessions F5.0。这意味着变量 sessions 的值是根据 F 格式(标准数值型)解释的,该格式无法识别逗号。解决方案是将此行替换为 sessions comma6。我们对所有标准数值型变量都这样做。如果您不确定这指的是哪些变量,请不要担心;我们稍后会提供完整的更正后的语法。

字符串变量

其他变量起初看起来可能不错,但检查 变量视图 (variable view) 显示其中许多变量是 字符串变量 (string variables)。如果我们仔细考虑数据,我们会得出结论,screen_resolution 应该是这里唯一的字符串变量。

SPSS 打开 .csv 数据 - 字符串变量

这是与我们之前看到的系统缺失值相同的问题 - 以及相同的解决方案。例如,我们在语法中找到 perc_new_sessions A7A 格式 表示字符串变量,SPSS 在此处选择此格式是因为数据中存在百分号。解决方案是将该行替换为 perc_new_sessions pct7.2。类似地,我们为所有百分比变量选择此格式。同样,我们稍后会提供完整的更正后的语法。

时间变量

我们的数据包含一个时间变量:avg_session_duration。我们的语法将其寻址为 avg_session_duration A8。我们的时间值采用 hh:mm:ss 格式。在 SPSS 中,这是 time8 格式(其中 8 表示字符数,包括冒号)。因此,我们将前一行替换为 avg_session_duration time8

最终更正后的语法

在进行所有修改后,我们最终得到以下语法。这是我们将用于在 SPSS 中打开 .csv 文件的最终语法。

***更正后的语法。适用于除 goal_value 之外的所有变量。
**
GET DATA /TYPE=TXT
/FILE="D:\project_00\edit\browsers.csv"
/ENCODING='UTF8'
/DELCASE=LINE
/DELIMITERS=","
/QUALIFIER='"'
/ARRANGEMENT=DELIMITED
/FIRSTCASE=2
/IMPORTCASE=ALL
/VARIABLES=
screen_resolution A9
sessions comma6
perc_new_sessions pct7.2
new_users comma6
bounce_rate pct7.2
pages_session F4.2
avg_session_duration time8
goal_conversion_rate pct7.2
goal_completions F1.0
goal_value A7.
CACHE.
EXECUTE.

欧元符号

细心的读者可能会注意到,我们没有阻止 goal_value 最终成为字符串变量。这是因为之前的步骤无法阻止这种情况。为了完整起见,我们将使用以下语法修复它。 正如在其他地方解释的那样,我们始终确保 ALTER TYPE 不会创建任何系统缺失值。我们在第 3 步中这样做。

用于修复欧元符号的语法

***1. 删除前导欧元符号。
**
compute goal_value = char.substr(goal_value,2).
execute.

***2. 转换为数值变量。
**
alter type goal_value(f4.2).

***3. 确认所有 311 个值均不缺失。
**
descriptives goal_value.

***4. 将 cca(自定义货币 A)设置为欧元。
**
set cca '-,€ ,,'.

***5. 将 goal_value 设置为 cca。
**
formats goal_value(cca6.2).

***完成。**

结果

SPSS 打开 .csv 数据 - ALTER TYPE 检查

提取屏幕宽度

就是这样。我们现在有一个完美的 SPSS 文件,其中包含我们的 .csv 数据。如果这就是您想知道的全部内容,那么您可以立即停止阅读。

好的,请注意 screen_resolution 的值由两个数字组成,中间用 x 分隔。第一个数字是屏幕宽度(以像素为单位),我们将通过运行以下语法来提取它。

***1. 计算 "x" 的位置。
**
compute pos_x = char.index(screen_resolution,'x').
execute.

***2. 创建新的空字符串变量。
**
string width(a5).

***3. 计算 width = screen_resolution 中直到 "x" 位置的字符。
**
compute width = char.substr(screen_resolution,1,pos_x - 1).
execute.

***4. 将 width 更改为数值变量。
**
alter type width(f5).

***5. 确保 ALTER TYPE 不会创建系统缺失值。
**
descriptives width.

***完成。**

每个屏幕宽度的会话累积百分比

最后。我们准备好创建我们想要的表格:我们想知道每个屏幕宽度的会话累积百分比,从最大到最小。请注意,大多数情况代表许多会话。为了让 SPSS 将每种情况解释为它所代表的会话数,我们将使用 WEIGHT,如下所示。 最后,我们将运行一个 FREQUENCIES 表,我们将根据屏幕宽度降序对其进行排序。

用于累积百分比的 SPSS 语法

***1. 使每个记录都计为它所代表的会话数。
**
weight by sessions.

***2. 创建频率表,按宽度降序排序。
**
frequencies width/format dvalue.

校验和

SPSS 打开 .csv 数据 - 校验和

由于加权了我们的案例,SPSS 报告了 11,607 个案例。这与我们在 Google Analytics (GA) 界面中看到的会话数(第一个屏幕截图)完全相同。我们可以将其视为校验和:这些数字相同强烈表明我们的 SPSS 数据与原始 GA 数据完全对应。

目的

本研究的目的是选择我们的网站设计应支持的最小屏幕宽度。由于我们网站的性质,很少有访问者使用较小的屏幕宽度(智能手机或平板电脑)。我们是否应该投资支持移动设备而不是编写更多教程?我们的最终表格表明我们不应该这样做。

结论

SPSS 打开 .csv 数据 - 累积百分比 最终表格中最有趣的部分

第二个表格相当大,但这不会困扰我们。如果我们检查累积百分比并向下滚动,我们会得出结论,69.9% 的会话使用了 1,366 像素或更高的屏幕宽度。至少 1,280 像素的屏幕宽度用于所有会话的 91.2%。 最后,如果我们确保我们的网站在 1,024 像素或更高的屏幕宽度下运行良好,我们将支持所有访问的 95.6%。我们的最终决定是支持 800 像素或更高的屏幕宽度,因为这是我们的设计可以合理处理的最小宽度。