проблемы чтения данных из csv (Python) - PullRequest
0 голосов
/ 30 марта 2020

Я работаю над проблемой, и мне трудно понять, что это такое, поэтому я здесь, чтобы попросить о помощи.

когда я пытаюсь запустить следующий код:

from bokeh.plotting import figure
from bokeh.io import export_svgs
from bokeh.plotting import figure, output_file, show
import pandas
import csv

output_file("bars.html")

input = pandas.read_csv("csv/SampleData.csv")

years = input["year"]
numbers = input["amount"]

print(years)
print(numbers)

p = figure(x_range=years, plot_height=250, title="graph title",
           toolbar_location=None, tools="")

p.vbar(x=years, top=numbers, width=0.9)

p.xgrid.grid_line_color = None
p.y_range.start = 0

show(p)

с в SampleData.csv этими числами:

year,amount
2010,1.5
2011,3
2012,5
2013,8

я получаю следующую ошибку:

raise ValueError("Unrecognized range input: '%s'" % str(range_input))
ValueError: Unrecognized range input: '[2010 2011 2012 2013]'

2 оператора печати возвращают следующие числа во время работы:

0    2010
1    2011
2    2012
3    2013
Name: year, dtype: int64
0    1.5
1    3.0
2    5.0
3    8.0
Name: amount, dtype: float64

я знаю, что проблема в части years = input["year"], потому что если я вместо нее поставлю years = ["2010","2010","2010","2010"], то это работать, и получить правильные данные от numbers = input["amount"] Я не понимаю, почему тот работает, а годы нет.

Я надеюсь, что кто-нибудь может мне помочь, извините за любой плохой английский sh!

1 Ответ

0 голосов
/ 30 марта 2020

Параметр x_range в figure хочет получить список строк, если ось x является категориальной. Просто преобразуйте ряд целых чисел years в ряд строк, модифицируя строку, если вы присваиваете переменную years:

years = input["year"].astype(str)
...