本节书摘来自华章出版社《数据分析实战
基于EXCEL和SPSS系列工具的实践》一书中的第3章,第3.4节,纪贺元 著,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3.4 数据量太大了怎么办
早期做培训的时候,很少有学员来问我数据量的事情,因为大家的数据量都比较小,这几年来不同了,经常有学员来问我:老师,作者的数据有300多万,怎么办?还有学员说,我们要做客户画像,数据量有1000多万,我们平时都是放在MySQL里面做的。
数据量太大了,怎么办?EXCEL的一个工作表只能存放1048576行数据,也就是104万多一点,数据多了如何处理呢?
3.4.1 放到数据库中处理
EXCEL只是一个办公软件,在处理大数据量方面,它远远没有专业的数据库给力。专业数据库能够处理比较大的数据量,并且处理速度快,在处理数据冗余等方面效率高,远非EXCEL可比。对于专业的数据库,个人的一个感觉是,现在用ACCESS的人越来越少,越来越多的人转向MySQL,除了MySQL具有开源免费的特征之外,它还能和R或者Python组合使用,这应该也是一个很重要的原因。
3.4.2 用专业工具处理
专业的统计分析和挖掘工具虽然不是数据库,但是其数据的吞吐量也远高于EXCEL。以下以SPSS和MODELER为例来说明它们是如何处理大数据量的。
(1)SPSS处理大数据量
这里以案例文件3.10.1和3.10.2进行说明,这两个文件的数据量均超过了60万行,现在要将这两个文件合并,合并后的数据会超过120万行,EXCEL已经无法容纳,因此考虑采用SPSS处理。
打开SPSS软件,依次选择“文件”→“打开”→“数据”,如图3-28所示。
然后,在硬盘上找到要打开的EXCEL文件的路径,并打开,如图3-29所示。
同理打开第二个文件。在第一个打开的数据集中依次选择“数据”→“合并文件”→“添加个案”,如图3-30所示。
然后选择已经打开的数据集,继续合并,如图3-31所示。
由于两个文件的字段相同,都是“编号”和“尺寸”,因此图3-31的新的活动数据集中,变量只有“编号”和“尺寸”两种,点击确定,完成合并。
为了验证上面的数据,依次点击“分析”→“描述统计”→“描述”,如图3-32所示。
然后,选择相关的指标,进行描述统计,如图3-33所示。
最后得到结论,如图3-34所示。
可以看到,合并后的数据量为1378832,超过了EXCEL工作表的最大容量。
(2)Modeler处理大数据量
与SPSS一样,Modeler也可以处理大数据,以案例文件3.11.1和3.11.2进行说明。打开Modeler软件,在“源”中选择EXCEL节点,选择文件路径,点击确定。打开上述两个文件后,选择“追加”节点,将两个文件的数据进行合并,如图3-35所示。
为了验证以上合并的结果,选择“统计量”节点,从而验证合并后的数据量,如图3-36所示。
可以看到,以上数据的总和达到了1465700。
3.4.3 数据抽样
如果数据量比较大,也可以采用数据抽样的方法,SPSS和Modeler都有专门做数据抽样的方法,在EXCEL中也可以实现,比如,可以用随机数函数进行抽样。
以下以SPSS和EXCEL为例来说明如何做数据抽样。
在SPSS中打开数据文件,在“数据”主标签中选择“选择个案”,如图3-37所示。
接图3-37,点击“选择个案”,如图3-38所示。
在图3-38中,选择“随机个案样本”,如图3-39所示。
图3-39中提供了几种常用并且比较简单的数据抽样方法,如果对抽样技术要求不是很高,这几种基本也够用了。
在EXCEL中的数据抽样方法有两种,最简单的就是用randbetween函数,例如我们有50万行数据,希望以1∶100的比例进行抽样,用randbetween(1, 500000)生成5000个随机数即可。另外一个方法是在EXCEL“数据分析”模块中选择“抽样”,如图3-40和图3-41所示。
在图3-41的抽样方法中,周期法是每隔一个固定的间隔就抽取一个数据,随机法则是在全量数据中随机抽取数据。
随着计算机计算速度的持续提高,数据抽样其实在数据分析中用得并不多,因为如果不是上亿的数量级,还是希望做全量数据的分析。