从csv(Python)读取数据的问题

问题描述 投票:1回答:1

我遇到问题了,我很难弄清楚是什么原因,所以我在这里寻求帮助。

当我尝试运行以下代码时:

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"]获得正确的数据,我看不出为什么那是行得通的,但是一年却没有。

我希望有人可以帮助我,对不起,英语不好!

python pandas csv bokeh
1个回答
0
投票

如果X轴是分类的,则x_range中的figure参数需要一个字符串列表。只需将years整数系列转换为一系列字符串,然后将变量years分配给以下行即可修改行:

years = input["year"].astype(str)
© www.soinside.com 2019 - 2024. All rights reserved.