2014-12-26 2 views
3

Я генерирую Dataframe. Я вытаскиваю из него ряд поплавков и рисую его на гистограмме. Работает отлично.pandas.Series, вызывающий KeyError в pyplot.hist

Но когда я генерировать подсерии этих данных, используя любой из двух описаний:

u83 = results['Wilks'][results['Weight Class'] == 83] 
u83 = results[results['Weight Class'] == 83]['Wilks'] 

pyplot.hist бросает исключение KeyError на этой серии.

#this works fine 
plt.hist(results['Wilks'], bins=bins) 
# type is <class 'pandas.core.series.Series'> 
print(type(results['Wilks'])) 
# type is <type 'numpy.float64'> 
print(type(results['Wilks'][0])) 

#this histogram fails with a KeyError for both of these selectors: 
u83 = results['Wilks'][results['Weight Class'] == 83] 
u83 = results[results['Weight Class'] == 83]['Wilks'] 
print u83 
#type is <class 'pandas.core.series.Series'> 
print(type(u83)) 
#plt.hist(u83) fails with a KeyError 
plt.hist(u83) 

Я только начал возиться с Пандами. Возможно, я не собираюсь правильно использовать sql-эквивалент «select * from table where WeightClass = 83» и т. Д.?

ответ

0

Вы, вероятно, хотите что-то вроде этого:

u83 = results.loc[results['Weight Class'] == 83, 'Wilks'] 
plt.hist(u83) 

И вы можете прочитать эти docs on indexing ...

+0

Да, боюсь, это дает ту же ошибку. Сама серия выглядит нормально для меня. [В] U83 Из [15]: 3 410,370158 5 379,581755 14 361,213206 23 349,908011 29 335,061991 50 308,511000 51 306,523497 53 304,869996 57 302,155009 68 289,432998 69 288,466504 Имя: Уилкс, DTYPE: float64 – user3556757

+0

Выяснил ответ. – user3556757

7

Ох, решил его .... передать серии с атрибутом его значения.

plt.hist(u83.values) 

Вид странный.

Как backtrace - теперь работал какой-либо из моих подвыборных методов. Просто было, что я проезжал plt.hist(u83) вместо plt.hist(u83.values) .... Сорт хромого.

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