从数据框中提取并绘制时间与日期的关系图

时间:2019-02-18 11:53:58

标签: python pandas bokeh

我已经将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)

这也不会产生图形,只是一个空白图形。

0 个答案:

没有答案
相关问题