如何从csv文件中读取时间数据并在python中相应地绘制图形

时间:2011-02-17 06:23:05

标签: python matplotlib

时间格式是这样的                47:48.1 这里47分48秒1毫秒

3 个答案:

答案 0 :(得分:4)

这样的事情应该让你开始:

import csv
import datetime as dt
import matplotlib.pyplot as plt

x,y = [],[]
csv_reader = csv.reader(open('data.csv'))
for line in csv_reader:
    x.append(int(line[0]))
    y.append(dt.datetime.strptime(line[1],'%M:%S.%f'))

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(y,x,'o-')
fig.autofmt_xdate()

plt.show()

假设data.csv文件包含以下数据:

0,43:48.1
1,45:13.1
2,47:50.1
3,55:02.3

结果如下: enter image description here

答案 1 :(得分:1)

第三部分看起来不像毫秒,你确定它不只是第二部分的小数点吗?如果是这样,试试这个(其中t_cvs是字符串):

import matplotlib.pyplot as plt

t_cvs = '23:12.1,24:59.2,26:09.4'  # or whatever

t1 = [t.split(':') for t in t_cvs.split(',')]
time = [60.*float(t[0]) + float(t[1]) for t in t1]

plt.plot(time)
plt.show()

答案 2 :(得分:0)

阅读:

def convert(s):
  s = s.split(':')
  minutes = int(s[0])
  s = s[1].split('.')
  seconds = int(s[0])
  msec = int(s[1])
  return (60*minutes + seconds)*1000 + msec

fin = open(filename)
times = [convert(s) for s in fin.read().split(',')]
fin.close()

注意,如果您有 lot 次,请将lambda定义为其他地方的函数。

现在times包含一个整数列表(毫秒),您可以像平常一样绘制。