Поскольку вы пометили matplotlib
, одним из решений является проверка на id
при циклическом просмотре DataFrame перед построением графика с использованием df[df['id']==i]
.
Чтобы наложить эти графики на одну фигуру, создайте объект фигуры и передайте ось ax
в функцию df.plot()
.
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame({'year': ['1988', '1989', '1990', '1988', '1989', '1990', '1988', '1989', '1990'],
'id': ['1', '1', '1', '2', '2', '2', '3', '3', '3'],
'money': ['5', '7', '8', '8', '3', '3', '7', '8', '10']}).astype(int)
fig, ax = plt.subplots()
for i in df.id.unique():
df[df['id']==i].plot.line(x='year', y='money', ax=ax, label='id = %s'%i)
plt.xticks(np.unique(df.year),rotation=45)
Решение Pandas с использованием groupby
будет выглядеть следующим образом. Здесь вам придется изменить легенды позже.
df.groupby('id').plot(x='year', y='money',legend=True, ax=ax)
h,l = ax.get_legend_handles_labels()
ax.legend(h, df.id.unique(), fontsize=12)
plt.xticks(np.unique(df.year), rotation=45)