все!Таким образом, у меня есть 2 датафреймов , извлеченных из Pro-Football-Reference как csv и работавших через Pandas с помощью StringIO.
Я вставляю только заголовок и строку с информацией прямо ниже:
data_1999 = StringIO("""Tm,W,L,W-L%,PF,PA,PD,MoV,SoS,SRS,OSRS,DSRS Indianapolis Colts,13,3,.813,423,333,90,5.6,0.5,6.1,6.6,-0.5""")
data = StringIO("""Tm,W,L,T,WL%,PF,PA,PD,MoV,SoS,SRS,OSRS,DSRS Indianapolis Colts,10,6,0,.625,433,344,89,5.6,-2.2,3.4,3.9,-0.6""")
И затем интерпретируюсь как обычно, используя pandas.read_csv, создавая 2 разных dataframes называется df_nfl_1999 и df_nfl соответственно.
Так что я пытался использовать Bokeh и делать что-то вроде здесь , за исключением того, что вместо «яблок» и «груш» было бы название групп, являющихся основной группой.Я пытался эмулировать его, используя только данные Pandas Dataframe:
p9=figure(title='Comparison 1999 x 2018',background_fill_color='#efefef',x_range=df_nfl_1999['Tm'])
p9.xaxis.axis_label = 'Team'
p9.yaxis.axis_label = 'Variable'
p9.vbar(x=dodge(df_nfl_1999['Tm'],0.0,range=p9.x_range),top=df_nfl_1999['PF'],legend='PF in 1999', width=0.3)
p9.vbar(x=dodge(df_nfl_1999['Tm'],0.25,range=p9.x_range),top=df_nfl['PF'],legend='PF in 2018', width=0.3, color='#A6CEE3')
show(p9)
И ошибка, которую я получил, была:
ValueError: ожидался элемент либо String, Dict (Enum ('expr', 'field', 'value', 'transform'), Either (String, Instance (Transform), Instance (Expression), Float)) или Float, получил {'field': 0
Washington Redskins
Моей первоначальной идеей было сгруппировать по названию команды ( df_nfl ['Tm'] ), анализируя баллы в пользу каждого года (так что df_nfl ['PF')] для 2018 года и df_nfl_1999 ['PF'] для 1999 года).Простое смещение столбцов может разрешиться, но я не могу найти способ сделать это, кроме диаграммы уклонения, и это не совсем работает (я новичок).
ПоКстати, ссылка на ошибку назначается при возникновении:
p9.vbar(x=dodge(df_nfl_1999['Tm'],0.0,range=p9.x_range),top=df_nfl_1999['PF'],legend='PF in 1999', width=0.3)
Я мог бы, например, использовать график рассеяния, и обе диаграммы могли бы сосуществовать, а в некоторых случаях перекрываться (если данные совпадают), но я действительно стремился построить это рядом.Другие ответы, относящиеся к теме, обычно имеют более старые версии Bokeh с устаревшими функциями.
Как я могу решить эту проблему?Спасибо!
Редактировать:
Вот метод .head ().Другой вернет точно такие же категории, столбцы и строки, за исключением того, что данные, очевидно, изменяются, поскольку они относятся к другому сезону.
Tm W L W-L% PF PA PD MoV SoS SRS OSRS \
0 Washington Redskins 10 6 0.625 443 377 66 4.1 -1.3 2.9 6.8
1 Dallas Cowboys 8 8 0.500 352 276 76 4.8 -1.6 3.1 -0.3
2 New York Giants 7 9 0.438 299 358 -59 -3.7 0.7 -3.0 -1.8
3 Arizona Cardinals 6 10 0.375 245 382 -137 -8.6 -0.2 -8.8 -5.5
4 Philadelphia Eagles 5 11 0.313 272 357 -85 -5.3 1.1 -4.2 -3.3
DSRS
0 -3.9
1 3.4
2 -1.2
3 -3.2
4 -0.9
И значение выполнения только x=dodge
возвращает:
dodge () отсутствует 1 обязательный позиционный аргумент: 'значение'
При добавлении этого аргумента value=0.0
или value=0.2
возвращается та же ошибка, что и в исходном сообщении.