【发布时间】:2019-04-21 18:07:13
【问题描述】:
我在 Linux 16.04 下使用 python 2.7 处理数据时遇到了一个非常奇怪的问题。 我使用这个函数创建了一个 .csv 文件:
from ast import literal_eval
with open('logs.csv') as f:
data = [literal_eval(line) for line in f]
文件已正确创建,如下所示:
('2017-04-01 12:05:00','0.01770001','0.0177887','0.01780275','0.01770001')
('2017-04-01 12:10:00','0.0177887','0.01771308','0.01785263','0.01771039')
('2017-04-01 12:15:00','0.01773','0.01780092','0.01780092','0.01773')
('2017-04-01 12:20:00','0.0178','0.01781212','0.01784922','0.01774015')
('2017-04-01 12:25:00','0.01781212','0.01774528','0.01782994','0.01774528')
('2017-04-01 12:30:00','0.01774529','0.0178732','0.01788145','0.01774509')
('2017-04-01 12:35:00','0.01788145','0.01793318','0.01793318','0.01788145')
('2017-04-01 12:40:00','0.01794','0.01780093','0.01799984','0.01780092')
('2017-04-01 12:45:00','0.01785694','0.01806699','0.01807519','0.01785694')
('2017-04-01 12:50:00','0.01807999','0.01819687','0.01827573','0.018027')
('2017-04-01 12:55:00','0.01819687','0.01825402','0.0184','0.01800011')
('2017-04-01 13:00:00','0.01822416','0.01830994','0.01835554','0.0181777')
('2017-04-01 13:05:00','0.01825415','0.01810171','0.01830986','0.01810008')
('2017-04-01 13:10:00','0.01810174','0.01818991','0.01818991','0.01810173')
('2017-04-01 13:15:00','0.01818991','0.01818002','0.01819687','0.01818001')
('2017-04-01 13:20:00','0.01818002','0.01821999','0.01822','0.01818001')
然后我将它传递给这段代码以绘制图表:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import dates, ticker
import matplotlib as mpl
from mpl_finance import candlestick_ohlc
from ast import literal_eval
mpl.style.use('default')
data = []
ohlc_data = []
with open('logsXMR.csv') as f:
data = [literal_eval(line) for line in f]
for line in data:
#ohlc_data.append((np.float64(line[0]), np.float64(line[1]), np.float64(line[2]), np.float64(line[3]), np.float64(line[4])))
ohlc_data.append((dates.datestr2num(line[0]), np.float64(line[1]), np.float64(line[2]), np.float64(line[3]), np.float64(line[4])))
fig, ax1 = plt.subplots()
candlestick_ohlc(ax1, ohlc_data, width = 0.5/((24*60)/5), colorup = 'g', colordown = 'r', alpha = 0.8)
#ax1.xaxis.set_major_formatter(dates.DateFormatter('%d/%m/%Y %H:%M'))
ax1.xaxis.set_major_locator(ticker.MaxNLocator(10))
plt.xticks(rotation = 30)
plt.grid()
plt.xlabel('Date')
plt.ylabel('Price')
plt.title('Historical Data XMRUSD')
plt.tight_layout()
plt.show()
但是每次我得到那个错误:
Traceback (most recent call last):
File "CSVing.py", line 15, in <module>
data = [literal_eval(line) for line in f]
File "/usr/lib/python2.7/ast.py", line 49, in literal_eval
node_or_string = parse(node_or_string, mode='eval')
File "/usr/lib/python2.7/ast.py", line 37, in parse
return compile(source, filename, mode, PyCF_ONLY_AST)
File "<unknown>", line 2
('2017-04-01 12:10:00','0.0177887','0.01771308','0.01785263','0.01771039')
^
我不明白为什么会出现此错误,因为如果我只是将我的数据复制并粘贴到另一个文件中,一切正常,我可以完美地绘制我的图表。我只是不明白,因为 2 个数据文件是相同的,没有添加空间或任何东西。
什么会导致这个错误,我怎样才能继续能够直接使用我生成的数据文件而不需要将数据复制粘贴到另一个文件中?
提前致谢,
像素
【问题讨论】:
-
是的,这是我上一篇文章的主题,这样更容易:stackoverflow.com/questions/52976469/…
-
你没有回答this comment。
-
你是对的,我想我对 Stack Overflow 还不太熟悉。我确实可以控制整个代码,但图形部分来自互联网上的一个示例,因此由于它工作正常,我保持代码不变并调整了我的数据格式。
标签: python csv matplotlib graph