Technorati 标签: 数据处理

     今天,主要工作就是处理测试数据,统计汇总成图表来显示。先来说说要求,然后给出我在折腾这堆数据中遇到的问题以及解决方法。

  问题要求:

     

格式说明: A是代表时间,低位字节在前,高位字节在后,十六进制格式。B代表电压值,低位字节在前,高位字节在后,十六进制格式,A和B后面,带4个无效数据和6个字节的0xFF,这种格式的数据排列都在一行里,一行塞满后然后继续填充下一行,如此循环下去,一直填满到30K的文本文件。

要求: 顺序排列时间值和电压值,编排出随着时间变化的电压曲线。

 

解决思路:

    一开始接到这个问题,脑子里想着用shell 脚本来处理,这里面涉及到文本断行断句、进制和数据转换、画图等等操作。光用shell是不可能完成了,因此这样的文本文件有4个,都是这么大小的,肯定要部分程序来处理。下面介绍我是如何处理这个问题的。

     1. 由于每个单元数据的列数是固定的,6个字节有效数据加10个字节的无效数据,构成一个数据单元,这些单元顺序的排成一行,首先要做的是把他们分开,最好分成每一行只有一个数据单元,这样就好便于后续处理。我在这里使用的方法是:利用Editplus的自动换行功能来实现的,具体操作如下,首先选择Editplus的自动换行,结果如下:

这不是我想要的结果,默认的自动换行是以每行80个字符为标准,打开自动换行选项,有如下配置:

Editplus里面关于自动换行有两种选项,一种是根据显示窗口的大小来决定每行的字符数,另一种是固定每行字符数。我这边单元数据的列数是固定的,因此,选择每行固定字符数,设置后,结果如下:

第二种方法:利用Windows自带的记事本,开启自动换行功能,缩短文本框的宽度,就可以调整自动换行的列数。效果如下:

恩,这样看数据,觉的工整多了,但是随之的问题也来了,本来,做到这一步,选择Editplus的列模式(Alt+C激活),就可以直接划去前6个有效字节,然后整体选出拷贝到Excel中的,但是Editplus给出如下提示:

 

哎,这条路堵住了,然后仔细看看上面的行号,在列模式下,第一行中有4个单元数据,第二行有2条单元数据,第三行有6行单元数据。这下也不好做了,有难度,动动脑袋,又有了如下动作:

因为这里面的数据有一些无效数据,采用列模式,可以根据一些条件来事先过滤一些无效数据,然后把一些数据拷贝到Excel里面去,哎呀:

又出现这样的结果。没办法了,只能手动分行,在每行的结尾,按住Alt+Enter来手动划分行,按照上面的列结果,手动分行后如下:

每行单元格中,有多行数据,现在是要求把每行前6个字节单独提取出来?怎么提取?在这里卡了许久,想想列模式,恩,有了。

再将上面的数据,拷贝会Editplus,然后使用列模式,选择整体的前6个字节,结果如下:

 

将此字段拷贝到Excel中,结果如下:

 

恩,这下好了,每行只含有一行的单位数据,现在就好办了,利用Excel的数据分列功能:

将每行的数据单独划分为一列,结果如下:

然后利用Excel的16进制转10进制的函数,来计算时间值和电压值,结果以10进制表示。

这里,要注意一点,

我就是选了这个选项,然后Excel函数死死的算不出来。使用到公式为:=HEX2DEC(B3)*256+HEX2DEC(A3) 最后算的结果如下:

想直接用电压值和时间值这两列数据作为源数据来画图,结果如下:

出现这个原因是有一些混杂无效数据写进去了,不要在意这些细节,经过初步的整理,优化一下图表的纵坐标的初始值,

最后得到的结果如下:

 

 

总结一下:上述的操作中,除了在Excel中手动分行之外,用到了Editplus的列操作,Excel的分列、函数、画图等,效率比起收工筛选强多了。

-----------------------------------------------恩--------------------------------------------------------

打完收工!回家吃饭。。。

巧用Excel分列功能处理数据的更多相关文章

  1. Excel--数据分列功能

    原文:http://www.ittribalwo.com/article/3963.html excel分列功能一:按照固定宽度进行数据拆分 情景: 如下图所示,在日常工作中,我们经常需要根据人员的身 ...

  2. Excel技巧--巧用分列功能整理日期格式

    遇到这样混乱的日期列表,可以使用“分列”功能来整理: 1.选择该列,点击“数据”-->“分列”功能: 2.在对话框中的第1.2步都不用设置,到第3步选择“日期”格式: 4.完成后,再使用单元格格 ...

  3. 利用Aspose.Cells完成easyUI中DataGrid数据的Excel导出功能

    我准备在项目中实现该功能之前,google发现大部分代码都是利用一般处理程序HttpHandler实现的服务器端数据的Excel导出,但是这样存在的问题是ashx读取的数据一般都是数据库中视图的数据, ...

  4. 个人永久性免费-Excel催化剂功能第100波-透视多行数据为多列数据结构

    在数据处理过程中,大量的非预期格式结构需要作转换,有大家熟知的多维转一维(准确来说应该是交叉表结构的数据转二维表标准数据表结构),也同样有一些需要透视操作的数据源,此篇同样提供更便捷的方法实现此类数据 ...

  5. 个人永久性免费-Excel催化剂功能第91波-地图数据挖宝之行政区域信息实时下载(含经纬度)

    移动互联网和O2O兴起的这十年时间里,由地图LBS功能衍生出一大堆的极高商业价值的数据及应用,地图相关的数据,也是数据分析过程中一个大宝藏,从此篇开始将带给大家一系列的地图相关的数据采集,满足数据分析 ...

  6. 个人永久性免费-Excel催化剂功能第66波-数据快速录入,预定义引用数据逐字提示

    在前面好几波的功能中,为数据录入的规范性做了很大的改进,数据录入乃是数据应用之根,没有完整.干净的数据源,再往下游的所有数据应用场景都是空话.在目前IT化进程推进了20多年的现状,是否还仍有必要在Ex ...

  7. 个人永久性免费-Excel催化剂功能第20波-Excel与Sqlserver零门槛交互-数据上传篇

    Excel作为众多数据存储的交换介质,在不同的系统内的数据很少可以很连贯地进行整合分析,一般的业务系统都会提供导出Excel作为标配功能供用户使用系统内生成的数据. 此时最大的问题是,Excel很维去 ...

  8. PHP的laravel框架后台实现数据导出excel的功能

    要想在PHP后台实现excel导入导出功能,一种简单有效的方法就是使用phpexcel插件. 要使用phpexcel插件,首先需要下载composer,这个工具是专门用来管理项目中库之间的依赖关系的. ...

  9. 巧用Excel提高工作效率

    程序员如何巧用Excel提高工作效率 主要讲解下Excel中VLOOKUP函数的使用,相比于上一篇中的内容,个人觉得这个相对高级一些. 1.使用背景 为什么会使用到这个函数呢,背景是这样的,有两个系统 ...

随机推荐

  1. cocos2d-html5 笔记3: Node

    Cocos2d采用类似于Dom tree的那种形式来各个部分组织起来.最基本的基类是Node吧, Node Node 作为基类,函数很多,我觉得可以分为如下几类,树相关的函数, 一些公共的比较实用的函 ...

  2. android studio 预览保持,因为是SDK版本过高,可以点击小图标机器人修改SDK版本号。

    Exception raised during rendering: com/android/util/PropertiesMap

  3. LeetCode12 Integer to Roman

    题意: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from ...

  4. B. Om Nom and Dark Park

    B. Om Nom and Dark Park 在满二叉树上的某些边上添加一些值.使得根节点到叶子节点的路径上的权值和都相等.求最少需要添加多少. 我们利用性质解题.   考察兄弟节点.由于他们从跟节 ...

  5. oc语言复制视频文件

    void copyFile() { NSString *home=NSHomeDirectory(); NSString *path=[NSString stringWithFormat:@" ...

  6. 安装TortoiseGit出现提示“您必须安装带有更新版本Windows Installer服务的Windows Service Pack”-解决方法

    我的系统是xp sp3安装TortoiseGit时出现了错误提示“您必须安装带有更新版本Windows Installer服务的Windows Service Pack”. 解决方法,到微软官方下载相 ...

  7. #技塑人生# windows2008无法远程— 注册表缺失键值导致高级防火墙服务异常

    windows2008无法远程— 注册表缺失键值导致高级防火墙服务异常 阿里云技术支持中心:章阿贵 一.远程无法访问(windows server 2008) 症状:无法远程但是系统内网络正常,防火墙 ...

  8. 【Shell脚本学习17】Shell case esac语句

    case ... esac 与其他语言中的 switch ... case 语句类似,是一种多分枝选择结构. case 语句匹配一个值或一个模式,如果匹配成功,执行相匹配的命令.case语句格式如下: ...

  9. 《算法导论》习题解答 Chapter 22.1-4(去除重边)

    思路:重开一个新图,按着邻接列表的顺序从上到下遍历,每遍历一行链表前,清空visited数组,如果没有访问过这个元素,则加入新图,如果已经访问过了(重边),则不动. 伪代码: 复杂度:O(V+E) f ...

  10. 怒刷DP之 HDU 1257

    最少拦截系统 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Statu ...