mathematica小技巧[2]--导入大数据
来源:互联网 发布:出国旅游的好处知乎 编辑:程序博客网 时间:2024/06/05 09:45
mathematica小技巧[2]--导入大数据
我们在使用mathematica处理数据时,一般会使用Import[]来导入数据,但是当我们有大量数据时,Import[]也会无能为力,因为在我们的内存中不能同时存储这么多的数据,那么此时,我们应该如何来解决呢,下面我们就来讲一下解决的方法。
我们使用的方法有点类似c中的文件指针,通过对文件流来做操作。我们来看一下要用到的函数。
OpenRead[]
OpenWriter[]
ReadLine[]
Close[] 关闭打开的流
我们来看一个具体的例子:
1.读取文件
首先打开一个文件,sr类似一个指向这个文件的指针
我们可以写一个While循环,来完成对整个文件的处理,对于一些中文文件,可能会出现字符编码错误,这时我们就要使用 FromCharacterCode[ToCharacterCode[rs], "UTF-8"],来将编码转换成utf-8的编码。
要注意:最后别忘了使用Close[指针名]来关闭我们打开的文件。
2.写入文件
同样,要想实现文件的写入,我们也只需要类似的步骤:
首先定义一个指针指向你要写入的文件
3.进度条
当然,有时我们需要一个进度条来告诉我们我们已经读取了多少了,这时我们就需要StreamPosition来告诉我们指针的位置,然后通过FileByteCount来获得全文的大小,然后比较两者的位置,即可显示出进度。
4.完整代码
5.完整例子
这个例子是我以前写的,可以看一下。
其实上面那段代码跑得挺慢的
好了,到这里也就差不多了,上面就是处理大数据时常用的办法,希望大家喜欢。
以上,所有
2017/3/4
我们使用的方法有点类似c中的文件指针,通过对文件流来做操作。我们来看一下要用到的函数。
OpenRead[]
OpenWriter[]
ReadLine[]
Close[] 关闭打开的流
我们来看一个具体的例子:
1.读取文件
首先打开一个文件,sr类似一个指向这个文件的指针
path = SystemDialogInput["FileOpen", "此处可设置默认路径"];sr = OpenRead[path, BinaryFormat -> True];接着我们通过ReadLine[]来读取该文件的一行
我们可以写一个While循环,来完成对整个文件的处理,对于一些中文文件,可能会出现字符编码错误,这时我们就要使用 FromCharacterCode[ToCharacterCode[rs], "UTF-8"],来将编码转换成utf-8的编码。
要注意:最后别忘了使用Close[指针名]来关闭我们打开的文件。
rs = ReadLine[sr];While[rs =!= EndOfFile, rs = ReadLine[sr]; temp = FromCharacterCode[ToCharacterCode[rs], "UTF-8"];...;...;]Close[sr];基本通过上面的方法,就可以实现对大文件的读取了。
2.写入文件
同样,要想实现文件的写入,我们也只需要类似的步骤:
首先定义一个指针指向你要写入的文件
sw = OpenWrite["文件地址",CharacterEncoding -> "UTF-8"];接着使用WriteLine[]即可
WriteLine[sw, 你要写入的内容]同样,最后也要关闭打开的流
Close[sw];这样就完成了文件的写入。
3.进度条
当然,有时我们需要一个进度条来告诉我们我们已经读取了多少了,这时我们就需要StreamPosition来告诉我们指针的位置,然后通过FileByteCount来获得全文的大小,然后比较两者的位置,即可显示出进度。
fileLength = FileByteCount[path];Dynamic[ Row[{ StreamPosition[sr], "/", fileLength}] , UpdateInterval -> 2]
4.完整代码
path = SystemDialogInput["FileOpen", "此处可设置默认路径"];sr = OpenRead[path];rs = ReadLine[sr];While[rs =!= EndOfFile, rs = FromCharacterCode[ToCharacterCode[rs], "UTF-8"]; rs = StringSplit[rs, ","]; (*处理语句块*) (*..........*) (*处理语句块*) rs = ReadLine[sr]; ]在处理语句块那里可以增加你想要处理的办法。下面我们来看一个完整的例子。
5.完整例子
这个例子是我以前写的,可以看一下。
path = SystemDialogInput["FileOpen", "此处可设置默认路径"];sr = OpenRead[path, BinaryFormat -> True];sw = OpenWrite["路径",CharacterEncoding -> "UTF-8"];(*显示进度条*)fileLength = FileByteCount[path];Dynamic[ Row[{ StreamPosition[sr], "/", fileLength}] , UpdateInterval -> 2](*定义时间间隔*)uptime = TimeObject["13:30:00"];downtime = TimeObject["16:30:00"];judge = False;(*把行标题写进去*)rs = ReadLine[sr];WriteLine[sw, rs]While[rs =!= EndOfFile, rs = ReadLine[sr]; temp = FromCharacterCode[ToCharacterCode[rs], "UTF-8"]; (*分割后的字符串*) stringSplit = StringSplit[temp, ","]; time = stringSplit[[3]]; (*判断是否是日期格式--在判断是否落在时间区间内--是的话返回judge=true*) If[TimeObjectQ[time = TimeObject[time]], time = TimeObject[time]; judge = (uptime < time < downtime); ]; (*判断是否符合要求*) If[stringSplit[[-1]] == "\"餐费支出\"" && judge , WriteLine[sw, temp]]; judge = False; ];Close[sw];Close[sr];这段代码当时是为了对学生卡的数据进行处理,找出其中在13:30:00到16:30:00中餐饮消费的情况。
其实上面那段代码跑得挺慢的
好了,到这里也就差不多了,上面就是处理大数据时常用的办法,希望大家喜欢。
下面还是讲一下我自己做的一个小作品。
下面链接是自己做的一个小作品,是用来学习汉字结构的,我们将汉字的结构具体展现出来了,摆脱了以往汉字教学中的模糊概念,希望大家可以看看多提提意见。
汉字结构学习以上,所有
2017/3/4
0 0
- mathematica小技巧[2]--导入大数据
- 【大数据技巧】数据导入到MaxCompute的技巧汇总
- java在处理大数据的时候一些小技巧
- 大数据量数据表清空数据小技巧
- Java在处理大数据的时候一些小技巧
- java在处理大数据的时候一些小技巧
- 用Java处理大数据小技巧总结
- pandas处理大数据的一些小技巧
- Java在处理大数据的时候一些小技巧
- 小技巧大集合
- 小程序,大技巧
- SYBASE数据导入技巧
- MYSQL大数据导入
- mysql 导入大数据
- SQL 大数据导入
- 大数据导入EXCEL
- xls大数据导入
- 导入大数据集
- Linux学习之——基本权限的修改
- 第四届蓝桥杯【省赛试题9】带分数
- 高斯混合模型
- IAR开发工具的注册
- 时间复杂度计算
- mathematica小技巧[2]--导入大数据
- 九度 oj 题目1073:杨辉三角形
- 数据库系统原理(1)--绪论
- 浅谈贪心
- 卷积神经网络(CNN)反向传播算法
- 操作系统实验报告-系统调用
- IOS iphone ipad CentOS7 安装配置 StrongSwan IPsec IKEv2 VPN
- django-关于manage.py migrate无效的问题
- 根据所给文档生成字典