2016-04-14 10 views
1
import os 
from matplotlib.backends.backend_pdf import PdfPages 
import pandas as pd 
import matplotlib.pyplot as plt 
import datetime as dt 

pp = PdfPages('multipage.pdf') 

pth = "D:/Technical_Data/" 
for fle in os.listdir(pth): 
    df = pd.read_csv(os.path.join(pth, fle),usecols=(0, 4)) 
    if not df.empty: 
     df=df.astype(float) 
     days = df['indx'] 
     value = df['Close'] 
     plt.plot_date(x=days, y=value,fmt="r-") 
     plt.title(fle) 
     plt.ylabel("Price") 
     plt.grid(True) 
     pp.savefig() 
pp.close() 

私はディレクトリ内のファイルを反復処理し、すべてのグラフをpdfファイルに保存しています。日付は、次の形式の20150101です。ValueError:年が範囲外ですpyplot

しかし、それはエラーがスローされます。

ValueError: year is out of range

サンプル・データ

indx open High Low Close Volume 
20140103 31.9823 32.1511 31.8382 32.1213 2034100 
20140103 5.28 5.29 5.26 5.27 10387300 
20140103 33.9 34.03 33.77 34 930800 
20140103 10.62 10.63 10.51 10.6 2004500 
20140103 3.42 3.49 3.42 3.49 3837600 
20140103 1.69 1.71 1.685 1.705 6870300 
20140103 42.5 43.61 42.3 43.47 255500 
+0

これは、例えば、入力せずにデバッグコードするのは難しいです。変数 'days'の値を出力して投稿してください。問題があると思われます。 –

+0

@TonyBabarinoが質問に追加されました – nnnnmmm

答えて

0

あなたは問題があるDatetimeIndex

# df=df.astype(float) # do not covert yymmdd to float 
days = pd.to_datetime(df['indx'].astype(str), format='%Y%m%d') 
plt.plot_date(x=days, y=value, fmt="r-") 
0

をパンダするDF [ 'INDX']を変換する必要があります日の形式のリスト。これらの値をDateTime型に変換するか、0001-01-01 UTCからの日を表す浮動小数点数に変換する必要があります。

matplotlib.pyplot documentationから:

plot_date(x, y, fmt='bo', tz=None, xdate=True, ydate=False, **kwargs)

x and/or y can be a sequence of dates represented as float days since 0001-01-01 UTC.

関連する問題