利用python编写R语言案例研究方法中的定位算法(1)——原始数据处理
2018-05-24 19:50
555 查看
学习完《利用python进行数据分析》之后,看到R语言案例中的定位算法一章时,试着用python进行分析一下。
一、数据准备
原始数据有两份:offline.final.trace.txt和online.final.trace.txt
原始数据:
最后处理完成的结果:
二、python处理
在ipython notebook里面进行分析
首先对一行数据进行处理:
预处理,去除带有#的行,这是无用数据
with open('G:\Positioning\online.final.trace.txt','r') as r: lines = r.readlines() with open('G:\Positioning\online.final.trace.txt','w') as w: for l in lines: if '#' not in l: w.write(l) #去除带有‘#’字符的行打开文件,这里是测试数据,就只有一行
f = open('G:\Positioning\Positioning.txt') data = f.read()利用正则表达式,分离数据
import re tokens = re.split('[=;,]',data) #正则表达式,分离各个元素,根据‘=’,‘;’,‘,’这三个字符对数据进行分离出来放在一个列表中
将数据分成2个部分,一部分是前面的测量单元,另一部分是后面的读数
import pandas as pd import numpy as np from pandas import Series, DataFrame #引入约定 columns1 = [tokens[0],tokens[2],'posX','posY','posZ',tokens[8]] #得到第一部分数据的列表名 data1 = [tokens[1],tokens[3],tokens[5],tokens[6],tokens[7],tokens[9]] #得到第一部分的数据 s = Series(data1, index = columns1) #第一部分的Series df1 = DataFrame(s).T #第一部分数据的DataFrame
a = tokens[10:] #第二部分的数据 columns2 = ['MAC','signal','frequency','mode'] #第二部分数据的列名 def chunks(s, step): return [s[i:i+step] for i in range(0, len(s), step)] #函数:遍历列表,取n个元素为一个新元素 data2 = chunks(a, 4) #每四个一组 df2 = DataFrame(data2, columns = columns2 ) #第二部分数据的DataFrame
合并两个DataFrame,完成对一行数据的处理
df1['key'] ='1' #增添一个公共键 df2['key'] ='1' df=pd.merge(df1,df2) #合并
对数据集进行处理(多行):
预处理:
with open('G:\Positioning\online.final.trace.txt','r') as r: lines = r.readlines() with open('G:\Positioning\online.final.trace.txt','w') as w: for l in lines: if '#' not in l: w.write(l) #删除含有#的行编写函数,根据单行的步骤来编写:
import pandas as pd import numpy as np from pandas import Series, DataFrame def function(x): #编写函数 import re import pandas as pd import numpy as np from pandas import Series, DataFrame tokens = re.split('[=;,]',x) #分离各个元素 columns1 = [tokens[0],tokens[2],'posX','posY','posZ',tokens[8]] #得到第一部分的列表名 data1 = [tokens[1],tokens[3],tokens[5],tokens[6],tokens[7],tokens[9]] #得到第一部分的数据 s = Series(data1, index = columns1) #第一部分的Series df1 = DataFrame(s).T #第一部分的DataFrame a = tokens[10:] #第二部分的数据 columns2 = ['MAC','signal','frequency','mode'] def chunks(s, step): return [s[i:i+step] for i in range(0, len(s), step)] data2 = chunks(a, 4) #每四个一组 df2 = DataFrame(data2, columns = columns2 ) df1['key'] ='1' #增添公共键 df2['key'] ='1' df=pd.merge(df1,df2) #合并 return df打开文件,进行数据处理
f = open('G:\Positioning\online.final.trace.txt') lines = [line.strip('\n') for line in f] #去掉换行符 frames=[] #先设置空的列表 for i in lines: frames.append(function(i)) #将lines中每个元素进行应用函数后添加到列表中 df = pd.concat(frames, ignore_index = True) #无视索引,重新编号
对原始数据的处理目前到这里以及完成的差不多了。大家如果还有更加节省资源的代码,欢迎指教指教,小白一枚,不胜感激。
相关文章推荐
- 算法研究:利用Python解决数学计数原理问题
- 利用Python实现Fibonacci序列算法的三种方法
- Python在运行中发生错误怎么正确处理方法,案例详解!
- asp.net一般处理程序利用反射定位方法
- 【语言处理与Python】11.1语料库结构:一个案例研究\11.2语料库生命周期
- R语言处理缺失值的高级方法 ---后面有一些python画图的语句
- python时间处理方法datetime(),下面就举几个代码案例进行说明,代码如下:
- 朴素贝叶斯分类算法原理与Python实现与使用方法案例
- Python爬虫处理JS翻页的一种方法,利用Ajax异步请求
- 利用Python_keras编写简单BP神经网络以及初步分析的算法
- Python利用ElementTree模块处理XML的方法详解
- asp.net一般处理程序利用反射定位方法
- 机器学习-python通过序列最小优化算法(SMO)方法编写支持向量机(SVM)
- Python字符串的encode与decode研究心得乱码问题解决方法
- [学术论文]从轻量级形式化方法出发的需求建模——用Radl语言对MIS系统进行规范描述的案例研究
- 一种基于RSSI的实时定位算法的研究
- 利用PUT方式上传文件的方法研究
- 利用ASP实现事务处理的方法
- 在C#中利用Keep-Alive处理Socket网络异常断开的方法
- 案例研究:用 Unicode 处理数据库信息