作者:金良

1.例程1

先看文本内容形式:

1404796773468
1404796775716
1404796784546
1404796786435
1404796791053
1404796792568
1404796793771
1404796794333
1404796794897
1404796797878
1404796799407
1404796800221
1404796800423
1404796800439
1404796800908
1404796800955
1404796801033
1404796801548
1404796801705
1404796801798

上述文本每一行是一个整数,是以毫秒为计量单位的时间,当然后面还有很多行省略了,下面例子中有3005行。

介绍一下应用场景:一棵核桃树上的核桃快要熟了,一头聪明的猪一周七天、一天24小时蹲在这棵核桃树下,紧紧盯着树上的每一个核桃,当每一个核桃熟透了从树上掉下来时,这头猪都要记下当时钟表显示的核桃掉落的时间,这样他就能从该数据中剖析核桃掉落的频度的函数曲线,并对未来核桃掉落的个数进行预测。多聪明的一头猪啊。不过这头猪的钟表比较特殊,特殊在它显示的是当前时间距离某一历史时刻的总的毫秒数,该历史时刻是1970-1-01 00:00:00.000。上面的文本就是这头猪记录的数据的拷贝。

下面是Python读取该文本,并作出核桃掉落的累计个数与时间的图像,需要注意的是横坐标时间是距离第一个核桃掉落的时间的差。

from pylab import *
#fd = open("0.1/1.txt")
#line = fd.readline()
result = []
i = 1
for line in open("random_3005_4.txt"):
print line
result.append([map(float,line.split(','))[0],i])#增加了一个二维列表,第一个元素是时间,第二个是掉落的累计个数
i += 1
for j in range(i-1)[::-1]:#从后向前
result[j][0] -= result[0][0]#每一个时间元素都要减去最初的第一个时间元素
result = mat(result)
plot(result[:,0],result[:,1])
show()最后result是一个二维矩阵,内容如下
[[ 0.00000000e+00 1.00000000e+00]
[ 2.45000000e+03 2.00000000e+00]
[ 1.14520000e+04 3.00000000e+00]
...,
[ 2.56976000e+05 3.00300000e+03]
[ 2.75431000e+05 3.00400000e+03]
[ 4.13622000e+05 3.00500000e+03]]

所做图像:

python 获取excel第一列和第二列数据 python读取第一列_python读取txt中的一列称为

2.例程2

在指定目录"D:\DataSet\DD"下查找一系列文本文件,对每个文本文件,读出其存储的数据并作图,并保存图片,图片名称是对应的文本文件的名称,后缀是.png。

注意程序中并未将画出的图像进行显示,而是直接保存图像,所以保存图像后一定要关闭图像。

#encoding=UTF-8
from pylab import *
import os
formatList = [".txt"]
class FileFilt:
fileList = []
def __init__(self):
pass
def findFileSet(self,dir):
for s in os.listdir(dir):
#文件所在目录加上文件名,组成文件绝对路径
newFile = os.path.join(dir,s)
#is.file()是否是一个文件
if os.path.isfile(newFile):
#os.path.splitext把文件名分成文件名称和扩展名
if newFile and(os.path.splitext(newFile)[1] in formatList):
self.fileList.append(newFile)
if __name__ == "__main__":
fileFiltObj = FileFilt() #新建对象
fileFiltObj.findFileSet("D:\DataSet\DD") #在指定目录下查找相应后缀名的文件
for filepath in fileFiltObj.fileList: #filepath是绝对路径,对每一个文件执行如下操作
result = [] #result清空
i = 1
for line in open(filepath):
result.append([line.split('\t')[1],i])
i += 1
result = mat(result) #将列表变成矩阵
plot(result[:,0],result[:,1],'k') #作图
savefig(filepath+'.png'); #将图像保存为设置的文件名
close('all'); #关闭图像

文本文件内容截图,我们要画的数据是第二列:

python 获取excel第一列和第二列数据 python读取第一列_数据_02

程序执行前目录截图:

python 获取excel第一列和第二列数据 python读取第一列_python读取txt中的一列称为_03

程序执行后截图:

python 获取excel第一列和第二列数据 python读取第一列_文本文件_04