2016-09-26 5 views
2

Я пытаюсь отобразить DataFrame в виде гистограммы с пользовательским диапазоном дат для xlim. Я могу вывести график, если я выбираю kind='line' но я получаю следующее сообщение об ошибке при попытке kind='bar':TypeError для штрихового графика с пользовательским диапазоном дат

TypeError: ufunc 'isfinite' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe'' 

dataframe выглядит следующим образом:

df1 = 
    Date   Quantity 
0 2010-01-01 1 
1 2010-01-02 0 
2 2010-01-03 0 
3 2010-01-04 2 
4 2010-01-05 3 
5 2010-01-06 1 
6 2010-01-07 0 
7 2010-01-08 1 
8 2010-01-09 1 
9 2010-01-10 2 
10 2010-01-11 0 
11 2010-01-12 5 
12 2010-01-13 2 
13 2010-01-14 1 
14 2010-01-15 2 
... 

Это работает:

df1.plot(x='Date', y='Quantity', kind='line', grid=False, legend=False, 
     xlim=['2010-01-01', '2010-01-10'], figsize=(40, 16)) 

но это не

df1.plot(x='Date', y='Quantity', kind='bar', grid=False, legend=False, 
     xlim=['2010-01-01', '2010-01-10'], figsize=(40, 16)) 

И все же, если я удалю xlim от kind='bar' Я создаю выход. Было бы неплохо иметь возможность выводить гистограмму с пользовательским диапазоном x.

ответ

2

А как насчет альтернативного подхода - фильтрация ваших данных до заговор?

In [10]: df.set_index('Date').ix['2010-01-01' : '2010-01-10'] 
Out[10]: 
      Quantity 
Date 
2010-01-01   1 
2010-01-02   0 
2010-01-03   0 
2010-01-04   2 
2010-01-05   3 
2010-01-06   1 
2010-01-07   0 
2010-01-08   1 
2010-01-09   1 
2010-01-10   2 

In [11]: df.set_index('Date').ix['2010-01-01' : '2010-01-10', 'Quantity'].plot.bar(grid=False, legend=False) 
+0

Решение работает, но я должен «отбросить» все другие нерелевантные столбцы, иначе они будут отображаться. Для чего мне нужно, это то, что я искал. – Lukasz

+1

@ Lukasz, вы можете сделать это следующим образом: 'df.set_index ('Date'). Ix ['2010-01-01': '2010-01-10', 'Quantity']. Plot ... вместо сброса других столбцов ... – MaxU

Смежные вопросы