我已经将CSV读入了熊猫df
。这是我感兴趣的专栏的描述:
df['datetime'].describe()
count 810
unique 691
top 2018-04-22 08:15:00
freq 8
first 2018-02-10 10:15:00
last 2018-12-18 11:32:00
Name: datetime, dtype: object
我要做的是绘制该时间戳。简单吧?
我想在x轴上绘制日期,并在y轴上绘制时间(24H)。
我该怎么做?
我在想类似的东西:
import pandas
import numpy as np
from bokeh.plotting import figure, show, output_file
from bokeh.io import output_notebook
from datetime import datetime
TOOLS="hover,crosshair,pan,wheel_zoom,zoom_in,zoom_out,box_zoom,undo,redo,reset,\
tap,save,box_select,poly_select,lasso_select,"
p = figure(width=500, height=500, x_axis_type="datetime", y_axis_type="datetime", tools=TOOLS)
df = pandas.read_csv('./logs.csv')
df['datetime'] = pd.to_datetime(df['datetime'])
xvalrange = pandas.date_range(start=df.iloc[-1]['datetime'].strftime('%Y/%m/%d'), end=\
df.iloc[0]['datetime'].strftime('%Y/%m/%d'), freq='D')
yvalrange = pandas.date_range(start='00:00:00', end='23:59:59', freq='60min').time
不完整。这个:
p.circle(df['datetime'].dt.strftime('%Y/%m/%d'),\
df['datetime'].dt.strftime('%H:%M:%S'),\
alpha=0.5)
生成明显不正确的图。并且:
p.line(xvalrange,yvalrange,\
alpha=0.5)
同样显然也不正确。
所以。如何在x轴上绘制%Y-%m-%d,在y轴上绘制%H:%M:%S?
编辑:
如果将以上代码从xvalrange
开始切换为以下代码:
xvals = df['datetime'].dt.strftime('%Y-%m-%d')
yvals = df['datetime'].dt.strftime('%H:%M:%S')
p = figure(title="Test Title", width=500, height=500, \
x_axis_type="datetime", y_axis_type="datetime", \
x_range=(df.iloc[-1]['datetime'].strftime('%Y/%m/%d'),\
df.iloc[0]['datetime'].strftime('%Y/%m/%d')),\
y_range=('00:00:00','23:59:59'),\
tools=TOOLS)
p.line(xvals, yvals, alpha=0.5)
show(p)
这也不会产生图形,只是一个空白图形。