Python中的直方图问题

时间:2016-03-05 15:33:22

标签: python excel

我有一张excel表,其中包含我想要在三个不同时间(24,48和72h)绘制的三件事:

test = pd.read_excel(excel_sheet_location)
times = ('24h', '48h', '72h')

并且数据样本如下所示:

thing1  thing2 Time
38.655  8.655  24h     
18.385  8.655  24h     
26.013  8.655  24h     ...

所以我尝试使用以下代码为每个时间点制作3个直方图:

for i in range(2):
    fig, ax = plt.subplots(1, 2, sharex=True, sharey=True, figsize=(8,3))

    idx = (test["Time"] == t)

    ax[i].hist(test.ix[idx,'thing1'],range(51),normed=True,linewidth=0)
然而,它会绘制第一个直方图,然后抛出这些错误:

pandas/index.pyx in pandas.index.IndexEngine.get_value (pandas/index.c:3113)()
pandas/index.pyx in pandas.index.IndexEngine.get_value (pandas/index.c:2844)()
pandas/index.pyx in pandas.index.IndexEngine.get_loc (pandas/index.c:3704)()
pandas/hashtable.pyx in pandas.hashtable.Int64HashTable.get_item (pandas/hashtable.c:7224)()
pandas/hashtable.pyx in pandas.hashtable.Int64HashTable.get_item (pandas/hashtable.c:7162)()

KeyError: 0

任何人都有任何想法,为什么它这样做?实际数据很好(我已经通过交换工作表中的值来检查并发生相同的错误。)

1 个答案:

答案 0 :(得分:1)

不确定我是否可以关注您的错误(可能您只需要更新到较新版本的pandas),或者您从timest做了一些奇怪的事情。

如果我使用:

times = ['24h','48h']

# Create the figure outside the loop
fig, ax = plt.subplots(1, 2, sharex=True, sharey=True, figsize=(8,3))

# If you want 3 plots you need to change this to range(3) and the subplots above to (1, 3, ...)
for i in range(2):
    # Index the times list instead of the ominous t variable
    idx = (test["Time"] == times[i])
    ax[i].hist(test.ix[idx,'thing1'], range(51), normed=True, linewidth=0)

plt.show()

它有效(只是一些随机数据):

enter image description here