如何从csv文件中读取时间数据并在python中相应地绘制图形
时间格式是这样的 47:48.1 这里是47分48秒1毫秒,内容如下:如何从csv文件中读取时间数据并在python中相应地绘制图形,python,matplotlib,Python,Matplotlib,时间格式是这样的 47:48.1 这里是47分48秒1毫秒,内容如下: 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
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()
注意,如果您有很多时间,请在别处将lambda定义为函数
现在,times
包含一个整数(毫秒)列表,您可以像平常一样绘制这些整数。阅读:
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()
注意,如果您有很多时间,请在别处将lambda定义为函数
现在,
times
包含一个整数(毫秒)列表,您可以按正常方式绘制。第三部分看起来不像毫秒,您确定它不仅仅是第二部分的小数点吗?如果是,请尝试以下操作(其中t_cvs是字符串):
第三部分看起来不像毫秒,你确定它不仅仅是第二部分的小数点吗?如果是,请尝试以下操作(其中t_cvs是字符串):
像这样的事情应该让你开始:
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
0,43:48.1
1,45:13.1
2,47:50.1
3,55:02.3
结果如下:
这样的事情应该让你开始:
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
0,43:48.1
1,45:13.1
2,47:50.1
3,55:02.3
结果如下:
1毫秒或100毫秒?1毫秒或100毫秒?如何在显示Y轴标签时包含另一列,例如时间为[1]和[2]中的一些文本。如何在显示Y轴标签时包含另一列,例如时间为[1]和[2]中的一些文本。