我用熊猫阅读了csv文件。在源文件中,我有一个包含日期和时间的列以及一些其他列(财务OHLC)。当我正在阅读csv文件时,我正在使用一些解析选项(在这个http://pandas.pydata.org/pandas-docs/stable/io.html?highlight=read%20csv#specifying-date-columns上组合解析时的列)。 最后,我尝试从新的组合日期时间列和其他日期绘制简单图形。所有工作,但绘图功能仅在datetime列的时间日期创建行。为什么绘制函数不理解我的datetime列上的日期组件?如何从所有日期时间点创建图形?
Time_Open Data Time Open Hight Low Close
0 2015-06-01 01:35:00 2005.02.15 01:35 1.29710 1.2972 1.2969 1.2969
1 2015-06-01 01:36:00 2005.02.15 01:36 1.29700 1.2971 1.2969 1.2970
2 2015-06-01 01:37:00 2005.02.15 01:37 1.29700 1.2972 1.2969 1.2970
来自我的csv文件的示例:
date_time[0]<date_time[1]
Out[11]: True
date_time[0]-date_time[1]
Out[13]: Timedelta('-1 days +23:59:00')
我的错误情节
我认为我的数据还可以。我可以使用它们和python了解数据类型。我可以这样做:
{{1}}
但matplotlib不了解我的数据。我希望获得y轴上的图形,我看到日期时间(如2015-06-01 23:59:00),而不仅仅是时间(23:59:00)。现在matplotlib在24小时内绘制图表并且不明白我的数据有不同的日期。我在一天内得到一行,但是我的所有数据都没有一行。
答案 0 :(得分:1)
我没有您的所有数据,但基本上您需要使用DateFormatter
格式化您的x-ticks:
import matplotlib.pyplot as plt
import matplotlib.dates as dates
fig, ax = plt.subplots()
date_time=df.icol(0)
date_close=df.icol(6)
plt.plot_date(x=date_time,y=date_close,fmt="r-")
plt.xlabel("Close")
plt.ylabel("Date")
ax.xaxis.set_major_formatter(dates.DateFormatter('%Y-%m-%d'))
plt.show()
我的照片并不好,但你应该能够在这里得到一般的要点
答案 1 :(得分:0)
我无法解决datetime64的问题,但我找到了其他方法。 你应该看看张畲的行为https://vimeo.com/53065093。这个python 2.x的功能,但在这种情况下它并不重要。
python 3的这些部分的一些工作代码。
from datetime import datetime, date, time
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
with open('sample-2dayslineEURUSDM1.csv', 'r') as fh:
print(fh.readline())
print(fh.readline())
data = pd.read_csv('sample-2dayslineEURUSDM1.csv',
parse_dates={'Timestamp':['Date','Time']},
index_col='Timestamp')
data.index
ticks = data.ix[:,['Close']]
ticks.head()
ticks.ix['2005-02-15 01:35:00':'2005-02-16 23:59:00'].plot()