график данных на основе индекса / позиции столбца в python - PullRequest
0 голосов
/ 11 июля 2020

Я пытаюсь построить фреймворк на основе индекса (позиции) столбца. Имя столбца легко использовать, и он показывает правильный график, но, поскольку есть дублированные имена столбцов, я должен использовать индекс столбца.

import matplotlib.pyplot as plt
import pandas as pd
# gca stands for 'get current axis'
ax = plt.gca()

#class_report.plot(kind='line',x='description',y= "f1-score",ax=ax) #no error but shows duplicate lines
class_report.plot(kind='line',x='description',y= class_report.iloc[:,[3]],ax=ax) #error
class_report.plot(kind='line',x='description',y= class_report.iloc[:,[7]], color='red', ax=ax)#error

plt.show()

, и он показывает эту ошибку:

ValueError: Boolean array expected for the condition, not object

после использования np.array(class_report.iloc[:,[3]]) появилась новая ошибка:

KeyError: "None of [Index([ (0.6884596334819217,), (0.16236162361623618,),  (0.6314769975786926,),\n                     (0.625,),  (0.7875912408759124,),  (0.4711779448621553,),\n         (0.593069306930693,), (0.18989898989898987,),  (0.5726240286909743,),\n       (0.12307692307692307,), (0.03592814371257485,),  (0.5991130820399113,),\n        (0.4436968029750066,),  (0.5754453990621118,),  (0.5679548536332456,)],\n      dtype='object')] are in the [columns]"

Вот данные

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 11 июля 2020

Вы можете переименовать столбцы, используя

class_report.columns = ['description','f1-score','f1-score-2',...]  
plt.plot(class_report['description'], class_report['f1-score']) 
plt.plot(class_report['description'], class_report['f1-score-2'], color='red)
plt.show()
0 голосов
/ 11 июля 2020

Поскольку у вас есть два столбца с одинаковым именем, вы не можете использовать понятие

my_dataframe.plot(y = some_column_name)

Вместо этого используйте функцию plotly plot, например:

class_report = pd.DataFrame(zip(range(10), np.random.rand(10), np.random.rand(10)), 
                            columns=["description", "f1_score", "f1_score"])

plt.plot(class_report.description, class_report.iloc[:,1])
plt.plot(class_report.description, class_report.iloc[:,2], color = "red")

plt.show()

В этом примере я использую случайные данные с двумя столбцами с именем 'f1_score'.

Результат:

введите описание изображения здесь

...