使用python从csv绘制内容

时间:2014-06-19 09:58:13

标签: python csv

我有一个包含三列的csv文件。一个用于约会,另一个用于该日期的时间,第三个用于价格。如何将csv文件绘制为y轴上的价格以及x轴上的日期和时间?每个日期包含10:00-19:00的相同时间值。比如2月21日10:00的价值是100,在10:01的价值是102 ...,19:00的价值是106. 2月22日的10:00价值是107.同样的情况是每天但价格变化

import numpy as np
import matplotlib.pyplot as plt
data = np.genfromtxt('a.csv',delimiter=',', dtype = float)

b = [row[1] for row in data]
c = [row[2] for row in data]

fig = plt.figure()
ax = fig.add_subplot(111, axisbg = 'w')
ax.plot(b,c,'r',lw=1.3)
plt.ylabel('Price value of stock')
plt.xlabel('Time')
plt.show()

但是使用这段代码我无法根据日期绘制时间。它只是绘制价格与时间的关系,而不管第0列中的日期。

csv看起来像这样:

14062004    1000    15.29
14062004    1001    15.16
14062004    1002    15.14
14062004    1003    15.22
14062004    1004    15.18

1 个答案:

答案 0 :(得分:0)

首先使用csv.reader模块将文件导入Python。 看看这里的例子: https://docs.python.org/2/library/csv.html

现在,您可以使用datetime.datetime.strptime将日期和时间转换为" datetime.datetime"宾语。您可以存储的价格,如浮点数或整数。

现在,制作一个'列表'所有价格值按它们存在的时间顺序排列。 接下来,制作一个'列表'对于您拥有的所有日期时间对象,从开始时间开始经过的时间。 (datetime对象非常神奇,因为你实际上可以减去它们。你得到一个datetime.timedelta对象,使用你可以获得天数,分钟等时间差的属性)

然后,您可以使用matplotlib或您喜欢的任何工具执行常见的X-Y轴图。 如果你想在Python之外做绘图(在Excel,MATLAB等)。您可以使用csv.writer将列表写回CSV文件。 (google up例如代码)

这将是一个先发制人。稍后,你可能想要消除一天19:00到第二天10:00之间大的时间变化的影响,以使情节更有意义。