Невозможно использовать Bokeh и Panda, чтобы прочитать CSV и построить его - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь построить линейный график из простого файла CSV с двумя столбцами, используя Bokeh для визуализации данных и Panda для чтения CSV и обработки данных. Тем не менее, я не могу передать данные, которые я импортировал, используя панд, в Bokeh, чтобы построить мой линейный график.

Это локально работает на моем компьютере. Я пробовал и отлаживал каждый раздел кода, и, кажется, единственная проблема возникает, когда я передаю данные из панд в боке.

Я попытался напечатать столбцы, выбранные в моем csv, чтобы проверить, что весь столбец также был выбран.

#Requirements for App
from bokeh.plotting import figure, output_file, show
import pandas as pd
from bokeh.models import ColumnDataSource

#Import data-->Weight measurements over a period of time [ STUB ]
weight = pd.read_csv("weight.csv")

#Define parameters
x=weight["Date"]
y=weight["Weight"]

#Take data  and present in a graph
output_file("test.html")
p = figure(plot_width=400, plot_height=400)
p.line(x,y,line_width=2)
show(p)

Я ожидаю получить линейный график, который будет отображать каждую запись веса каждый день, но я получаю пустой график.

1 Ответ

0 голосов
/ 03 января 2019

Это должно работать.Pandas не знает, что он работает с датами, поэтому вы должны указать это с помощью pd.to_datetime ().

#!/usr/bin/python3
from bokeh.plotting import figure, output_file, show
import pandas as pd
from bokeh.models import DatetimeTickFormatter, ColumnDataSource

#Import data-->Weight measurements over a period of time [ STUB ]
weight = pd.read_csv("weight.csv")

#Define parameters
weight["Date"] = pd.to_datetime(weight['Date'])
weight["Weight"] = pd.to_numeric(weight['Weight'])

source = ColumnDataSource(weight)

#Take data  and present in a graph
output_file("test.html")
p = figure(plot_width=400, plot_height=400, x_axis_type='datetime')
p.line(x='Date',y='Weight',line_width=2, source=source)
p.xaxis.formatter=DatetimeTickFormatter(
    minutes=["%M"],
    hours=["%H:%M"],
    days=["%d/%m/%Y"],
    months=["%m/%Y"],
    years=["%Y"]
)
show(p)
...