matplotlib没有显示图,但是在某些行

时间:2018-02-09 17:22:09

标签: python matplotlib plot

我想使用matplotlib绘制数据,数据包含日期和三个不同的价格作为列。图表没有显示,而是在某些行到最后之后值被打印。最后它打印'未找到'。这是我的小csv样本:

2017-09-01 10:00:00,3072,,
2017-09-01 10:30:00,3074,,
2017-09-01 11:00:00,3072,,
2017-09-01 11:30:00,3072,,
2017-09-01 12:00:00,3066,,
2017-09-01 12:30:00,3062,,
2017-09-01 13:00:00,3064,,
2017-09-01 13:30:00,3066,,
2017-09-01 14:00:00,3063,,
2017-09-01 14:30:00,3063,,
2017-09-01 15:00:00,3060,,
2017-09-01 15:30:00,3063,,
2017-09-01 16:00:00,3063,,
2017-09-01 16:30:00,3071,48.57142857,
2017-09-01 17:00:00,3083,61.70212766,
2017-09-01 17:30:00,3075,50.94339623,
2017-09-01 18:00:00,3068,46.55172414,
2017-09-01 18:30:00,3072,50.0,

这是我的代码:

import numpy as np
import datetime
import time
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
import matplotlib.dates as mdates


data=open('fin1.csv','r').read()
date,p1,p2,p3 = np.loadtxt(data,delimiter=',',unpack=True,converters={0:mdates.bytespdate2num("%Y-%m-%d %H:%M:%S")})

plt.plot(date,p1)
plt.plot(date,p2)
plt.plot(date,p3)


plt.show()

输出的最后几行:

2017-09-29 18:30:00,3370,47.82608696,3376.0
2017-09-29 19:00:00,3369,47.31182796,3376.0
2017-09-29 19:30:00,3363,46.31578947,3375.35
2017-09-29 20:00:00,3372,47.42268041,3375.1
2017-09-29 20:30:00,3365,41.41414141,3374.5
2017-09-29 21:00:00,3365,35.55555556,3373.9
2017-09-29 21:30:00,3369,45.56962025,3373.65
2017-09-29 22:00:00,3382,52.22222222,3374.05
2017-09-29 22:30:00,3373,45.83333333,3374.2
 not found.

2 个答案:

答案 0 :(得分:0)

你目前做得太多了。并使用np.genfromtxt代替,因为它处理您拥有的缺失值。只需在文件名上直接使用该函数,例如:

date,p1,p2,p3 = np.genfromtxt('fin1.csv',delimiter=',',unpack=True,
                              converters={0:mdates.bytespdate2num("%Y-%m-%d %H:%M:%S")})

答案 1 :(得分:0)

删除read()并使用np.genfromtxt

data=open('fin1.csv','r')


date,p1,p2,p3 = np.genfromtxt(data,delimiter=',',unpack=True,converters={0:mdates.bytespdate2num("%Y-%m-%d %H:%M:%S")})