Я пытаюсь построить график разброса годовых значений с линией, показывающей среднее значение x каждого года.
График должен быть примерно таким: 
(я нарисовал эту линию на графике ... и метки внизу должны быть в порядке возрастания "сезона".)
Я застрял со вторым сюжетом: я получаю "Ошибка индекса кортежа вне диапазона ", когда он попадает в строку
ax2.plot(x2, y2, color='r')
Я не уверен, что я даже правильно подхожу к этому, но у меня есть мой основной фрейм данных, который имеет все мои значения, тогдаЯ создал групповую серию для средних значений каждой комбинации сезон / год.Тогда я не смог получить этот для построения, поэтому я преобразовал его в массив данных и переиндексировал его, надеясь, что это поможет.Это не так.Не знаю, куда идти.
Проблемы начались , когда я создал объект Pandas Категориальный, но это был единственный способ, которым я мог придумать, чтобы мои данные были отсортированы правильно.Может быть, в этом проблема, но я не уверен, как еще можно отсортировать и , чтобы сделать этикетки правильно.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
file = r"C:\myfile.xlsx"
df = pd.read_excel(file)
season = ["Spring 2008", "Summer 2008", "Fall 2008",
"Spring 2009", "Summer 2009", "Fall 2009",
"Spring 2010", "Summer 2010", "Fall 2010",
"Spring 2011", "Summer 2011", "Fall 2011",
"Spring 2012", "Summer 2012", "Fall 2012",
"Spring 2013", "Summer 2013", "Fall 2013",
"Spring 2014", "Summer 2014", "Fall 2014",
"Spring 2015", "Summer 2015", "Fall 2015",
"Spring 2016", "Summer 2016", "Fall 2016",
"Spring 2017", "Summer 2017", "Fall 2017",
"Spring 2018", "Summer 2018", "Fall 2018",
"Spring 2019"]
df = df.loc[df['Total'] > 100]
df['Season_Year'] = df.apply(lambda row: row.Semester + " " + str(row.Year), axis=1)
df['Season_Year'] = pd.Categorical(df['Season_Year'], season)
df.sort_values(by='Season_Year', inplace=True, ascending=True)
df = df.dropna()
df['Score'] = df.apply(lambda row: row.Respondents / row.Total, axis=1)
grouped = df.groupby('Season_Year')['Score'].mean()
grouped = grouped.dropna()
df2 = grouped.to_frame()
df2 = df2.reset_index()
df2.head()
x = df['Season_Year']
y = df['Score']
x2 = df2['Season_Year']
y2 = df2['Score']
fig, ax = plt.subplots()
ax.scatter(x, y, marker='o', color='black')
ax2 = ax.twinx()
ax2.plot(x2, y2, color='r')
ax.set_ylim(0, 1.1)
ax2.set_ylim(0, 1.1)
ax.set_xticklabels(season, rotation='vertical')
plt.show()