课程: 学习数据分析:1. 基础知识
使用平面文件
有时候, 我们无法直接连接数据库系统的后端, 只能使用导出的数据, 比如 Excel 或者是 CSV 文件。 这类文件称作是平面文件, 它们已经和数据库脱离了联系。 也就是说, 你不能让它们和存储数据的系统进行连接。 当系统中的数据更新时, 平面文件中的数据不会同步更新。 你要想获取新的内容, 你还需要更新文件来获取数据变更。 CSV 是一种常见的平面文件格式, 它的字面意思就是逗号分隔的值。 在 CSV 文件中,逗号作为分隔符 将各个列隔开。 除此以外,还有其他类似的平面文件格式, 比如制表符分隔的, 或者是固定宽度分隔的文件。 固定宽度就是指 通过一定数量的空格来进行分隔。 通常,我们会使用 Excel 来打开 CSV 文件。 很多人选择 Excel 作为数据处理工具, 是因为他们收到的数据邮件 就是 Excel 格式, 所以选择 Excel 的理由显而易见。 但是,他们可能没有充分地利用 Excel 中的工具, 比如 Power Query 工具, 来提高他们的工作效率。 有时候,你会收到一个完整的数据表, 里面包含了制作报表需要的所有数据。 下一次你收到的文件, 可能会在这个数据表的基础之上 增加了一些新的数据。 你可以更新手头的文件, 把新的数据加入进来, 也可以利用宏或者是其他操作, 把数据更改合并到文件中。 不过, 比起这种使用复制粘贴的手动方法, 我更想推荐一种简便的方案, 也就是利用 Power Query 工具。 现在, 打开练习文件所在的文件夹“05_03”, 你会看到这里有两个文件, “研究项目_3月”, 和“研究项目_3月4月”, 它们都是 CSV 文件。 我们先收到的 3 月的文件。 如果以图标查看, 你会看到文件图标中 有个小写的字母“a,”, 说明它是一个逗号分隔的值文件。 下个月我会收到一个新的数据文件, 里面包含了 3 月和 4 月的数据。 如果不用 Power Query, 我们可能会打开新收到的文件, 将 4 月份的数据, 复制并且粘贴到 3 月份的文件中, 因为我们不想重新地创建报表, 但是我们还有一个更好的方法 来处理这种情况。 我们在 Excel 中 新建了一个空白工作簿, 然后切换到“数据”选项卡, 点击“获取数据”按钮, 选择“来自文件”, 然后选择“从文本/CSV”。 在练习文件中, 我们选中 3 月份的数据文件, 把它导入。 现在我们已经将 CSV 文件 和 Excel 文件连接起来了。 Excel 识别出了文件格式, 并且提供了一些默认选项,非常方便。 它的数据类型检测 是基于前 200 行数据。 如果你看到第一行如果出现乱码, 那么你可以打开“文件原始格式”下拉列表, 选择“936:简体中文”, 这样中文就可以显示正常了。 现在,我可以点击下面的“加载”按钮。 稍后,我们会讨论它的转换数据功能。 现在, 它已经使用 Power Query, 将文件中的数据下载到了工作表中。 我们可以看到,它加载了 126 行数据。 接下来,我会创建一个基本的数据透视表, 来进行演示。 我们点击“通过数据透视表汇总”这个按钮, 然后点击“确定”。 接下来,我们把“受访者 ID”, 拖动到“值”区域, 然后打开“值字段设置”对话框, 把计算类型修改为“计数”。 因为“受访者 ID” 它被识别为数字类型, 所以默认是求和计算。 接下来,我们把开始时间拖动到“列”, 然后把年龄问题拖动到“行”。 最后,关闭“数据透视表字段”窗格。 现在你可以看到, 这个透视表是按照 受访者的年龄和开始时间进行了分类汇总。 我也可以对这个透视表继续进行设置, 创建更多的可视化效果。 到了 4 月份, 我们就会收到 3 月和 4 月的合并数据。 大部分人会把 4 月份的数据 添加到 3 月份数据的末尾, 但实际上我们有更加简便的方法。 我们先回到 3 月份的工作表, 然后在“查询&连接”窗格, 右键点击这个查询, 选择“编辑”。 然后,在 Power Query 编辑器中, 点击“数据源设置”这个按钮。 在“数据源设置”对话框中, 可以看到当前的数据源 是 3 月份的 CSV 文件, 我们点击“更改源”, 然后点击“浏览”。 我们选中 4 月份收到的数据文件, 需要注意的是, 这两个文件的结构是完全相同的。 然后点击“确定”按钮, 点击“关闭”。 目前我们有 126 行数据, 可以在屏幕的左下方看到。 现在让我们刷新一下, 我们点击“刷新预览”按钮。 可以看到, 现在它已经提取到了 4 月份的数据, 有 480 行数据。 我们点击“关闭并上载”按钮。 可以看到,它加载了 480 行数据。 接下来,我们打开包含数据透视表的工作表。 我们要刷新数据透视表中的数据, 我们打开“数据透视表分析”选项卡, 然后,点击“刷新”按钮。 你会看到,数据透视表中的数据 已经更新到了 4 月份。 让我们再来看另外一种情况。 我们先新建一个空白的工作簿。 有时候你只会收到新的数据, 在 05_03 的数据文件夹中, 我们可以看到, 这些文件都是以时间戳作为后缀来进行命名。 这是因为研究项目在不同的时间点 生成了不同的数据集。 分别是 3 月 23 号、 3 月 27 号、3 月 30 号 和 4 月 1 号。 每个数据集只包含了这个时间点的更新数据。 在这种情况下, 我们可以让 Power Query 读取整个文件夹。 这样,如果我像文件夹中添加了新的文件, 它就会自动地加入我的数据集。 回到我们新建的空白工作簿, 我们来试一下。 我们再次打开“数据”选项卡, 然后点击“获取数据”按钮, 选择“来自文件”, 然后选择“从文件夹”。 接下来我们在浏览窗口中, 打开练习文件中的“数据”文件夹, 然后点击“打开”按钮。 现在我们会在新的对话框中 看到文件夹中的所有文件。 我们点击“组合”, 然后选择“合并和加载”。 这个时候,程序会根据第一个文件, 对所有的文件进行采样。 我们要再强调一次, 所有这些文件的结构,包括标的行, 都完全相同。 我们点击“确定”按钮。 你会注意到我们从这个查询中 加载了 246 行数据。 在“源名称”这一列,也就是第一列, 你会看到, 这一行数据的来源 CSV 文件。 我们在这个下拉列表中可以看到, 这个文件夹中的 4 个文件 都加载到了这个数据集。 那么也就是说, 如果在我收到了新的数据文件以后, 我只要把它放到这个文件夹, 然后,在电子表格中刷新, 就可以导入最新的数据。 无论是采用哪种方式, 你都可以利用 Excel 中的数据工具, 去简化平面文件的处理过程。