还是觉得自己是新手。 : - )
有一段时间以来,我已经从Linux Mint 18.2 32位和新的Linux Mint 18.2 64位收集了Yahoo的库存数据。
突然今天,在绘制数据时,我的64位系统出现错误。 32位系统正在运行
我得到两个错误:第一个是:
The file pandas/_libs/index.pyx could not be opened.
Reason: [Errno 2] Ingen sådan fil eller filkatalog: 'pandas/_libs/index.pyx'
这个文件不在_libs中是正确的,但它无法从Github获取它,在32位系统上它也没有。
32位系统的pandas为0.20.3,64位系统的pandas为0.21.0。
我认为在64位系统上安装fix_yahoo_finance时更新了。我的32位系统有一个旧版本。 第二个错误是:
Exception "unhandled ValueError"
cannot set a Timestamp with a non-timestamp
File: pandas/_libs/index.pyx, Line: 509
我的代码是:
import pandas as pd
import csv
import glob
import matplotlib.pyplot as plt
import pylab
import numpy as np
from matplotlib.widgets import CheckButtons
import datetime
startplot = datetime.datetime(2017,1,1)
end = datetime.date.today()
print(startplot)
ferms = glob.glob("DOWJones_stock/*.csv")
for ferm in ferms:
data = pd.read_csv(ferm, header=0)
data['Date'] = pd.to_datetime(data['Date'])
data["20d"] = np.round(data["Close"].rolling(window = 20, center = False).mean(), 2)
data["70d"] = np.round(data["Close"].rolling(window = 70, center = False).mean(), 2)
data['plot'] = (data['Date'] > startplot) & (data['Date'] <= end)
plotdata=data[data['plot']]
plotdata
# print(data)
# data.head()
pylab.rcParams['figure.figsize'] = (25, 14)
plt.rcParams['figure.dpi'] = 80
plt.rcParams['legend.fontsize'] = 'medium'
plt.rcParams['figure.titlesize'] = 'large'
plt.rcParams['figure.autolayout'] = 'true'
plt.rcParams['xtick.minor.visible'] = 'true'
plt.rcParams['grid.linestyle'] = '-'
plt.rcParams['grid.color'] = 'k'
plt.xlabel('Date')
plt.ylabel('Close')
plt.title(ferm)
plt.plot(plotdata.loc[:,'Date'], plotdata.loc[:,'Close'], 'k', label='Close')
plt.plot(plotdata.loc[:,'Date'], plotdata.loc[:,'20d'], 'g', label='20d')
plt.plot(plotdata.loc[:,'Date'], plotdata.loc[:,'70d'], 'r', label='70d')
legend = plt.legend(loc='upper center', shadow=True)
plt.grid(True)
rax = plt.axes([0.9, 0.91, 0.1, 0.1], frameon=False)
check = CheckButtons(rax, ('Køb', 'Følg'), (False, False))
def func(label):
if label == 'Køb':
with open('Køb.csv','a') as csv_file:
writer = csv.writer(csv_file, delimiter=" ")
writer.writerow(ferm)
elif label == 'Følg':
with open('Følg.csv','a') as csv_file:
writer = csv.writer(csv_file, delimiter=" ")
writer.writerow(ferm)
check.on_clicked(func)
plt.show()
DOWJones_stock目录中的一个.csv包含以下数据:
Date,Open,High,Low,Close,Adj Close,Volume
2015-12-31,52.799999,53.290001000000004,52.66,52.82,50.067657000000004,8292900
2016-01-04,52.009997999999996,52.610001000000004,51.610001000000004,52.48,49.745384,17174600
2016-01-05,52.790001000000004,53.470001,52.669998,53.150002,50.380466,11075500
2016-01-06,52.509997999999996,52.950001,52.209998999999996,52.419998,49.688507,12465900
2016-01-07,51.52,52.32,51.439999,51.959998999999996,49.252476,12720000
我做了一些测试,似乎就行了:
data['Date'] = pd.to_datetime(data['Date'])
是主要问题。 但为什么只能在我的64位系统上运行。 startplot日期绘制为2017-01-01 00:00:00,但在两个系统中都相同。
如果问题是pandas版本0.21.0,我不喜欢在我的32位系统上更新pandas
希望你们中的一位更有核心人物可以提供帮助。
关心亨宁