分割大文件--chunky & chewfile

2017-01-16 赵文泽 爬虫俱乐部 爬虫俱乐部

哈喽,诸君安。大家在实证研究过程中可能会遇到文件太大的问题。怎么办呢?既然数据too large,那就把它分开!今天我们就来介绍两种分割“超大型”数据的方法:chunkychewfile

在实证研究过程中,当你准备好数据,打开stata却发现:


chunky和chewfile这两个命令都能轻松帮助你轻松分割txt、csv、xml等格式文件,区别则在于分割的方式不同。究竟如何分割、方式有何不同?请接着往下看:

一、chunky命令的使用格式是:

chunky using filename [,[ [peek(#) analyze] | [chunksize(#.#)header(string)stub(string)replace] ]

我们来看如何把2.17GB的Test.xml分割成可以导入stata的数据:

(1)运行chunky using Test.xml, peek(5)   

peek(5)命令就是列出Test.xml前5行的数据。观察数据确认无误后,使用analyze选项分析数据的分割方式。    

(2)运行chunky using Test.xml, analyze



chunky ,[analyze] 命令帮助分析目标文件分割的大小,以及具体分成多“块”。从分析结果可以看出,Test.xml中数据有2467272行,每行平均947个字节;数据由64%的字母、12%的数字和24%的其他字符组成。表格中的结果则展示了10MB、30MB、100MB、300MB、1000MB、3000MB等大小的6种分割方式。如果按照100MB大小进行分割,Test.xml可以分割成24个子文件,每个文件包含102083个观察值。

(3)根据以上分析结果,按照100MB对Hiprc.xml文件进行分割:

.chunky using Test.xml, chunksize(100m) header(include) stub(part) replace


 运行完毕,你就会发现Test.xml分割出的24个子文件已经出现在你stata根目录了!本条命令中包含三个选项,分别是:

(1)chunksize(#.# [[k|kb]|[m|mb]|[g|gb]])。chunksize(10m)命令是按照10MB的大小对文件进行分割,如果你的文件足够大,可以使用更大“块”的分割方法。

(2)header(none|include|skip)。变 量名称经常出现在CSV文件的第一行,可以使用header(include)将原文件第一行变量名称复制到每一个分割后的文件中。你也可以使用 header(skip)略过第一行,如果你想要数据没有第一行变量名称,则使用header(none)。三种命令的缩写依次为h(n/i/s)。

(3)stub(string)。stub命令用来对分割以后的文件命名,如果按照stub(part)命名,分割出的子文件则以part0001, part0002, part0003...命名。

除了例子中的csv,你还可以使用chunky处理txt、csv、raw等格式的大型文件,例如:

.chunky using"c:\rawfiles\123.raw",chunksize(.5GB)header(none)stub(Part)


二、chewfile命令的使用格式

  chewfile [using filename] [, options]

Hiprc.tx记录了上证1210支A股近三年的是日最高价(如下图)


如果你只想截取浦发银行[600000]2014年7月的日最高价,分割命令只需要一步:

chewfile using Hiprc.txt, begin(119) end(140) save(chewed_file.txt) replace


在上面的命令中,begin(119)规定原文件的第119行开始截取数据。end(140)则选定截取数据到第140行,如果想截取数据到最后一行,使用end(.)命令即可。

  以上就是两种分割文件的命令及介绍,你学会了么?


 接下来报告空气质量

全国空气质量如下


在全国空气质量较佳的今天

山西的空气质量就显得很差了



以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~,点赞打赏随您心意,么么哒~

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~


编辑 by司海涛



往期推文推荐:

1.独家Stata技术培训,千呼万唤始出来

2.关于RTF你不知道的命令

3.关于RTF你不知道的命令之番外篇

4.免费事件研究,一片片从邮局寄来

5.免费的股价同步性,一片片从邮局寄来

6.Stata叫你回家听音乐了!

7.一言不合就用stata写邮件(Outlook/Foxmail)

8.玩转stata之调用浏览器

9.I have a Stata, I have a python

10.I have a Stata, I have a Python之二——pdf转word




关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:xueyuan19920310@163.com

投稿要求:

1)必须原创,禁止抄袭;

2)必须准确,详细,有例子,有截图;

注意事项:

1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。

3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。


欢迎关注爬虫俱乐部

微信扫一扫
关注该公众号