Вы можете сделать это, используя groupby
:
for name, data in df.groupby('NAME'):
plt.plot(data['HOUR'], data['RATE'], label=name)
plt.xlabel('Hour')
plt.ylabel('Rate')
plt.legend()
plt.show()

[РЕДАКТИРОВАТЬ] На основе ваших комментариев, чтобы создать и сохранить отдельный график для каждого имени, вы можете сделать что-то вроде:
for name, data in df.groupby('NAME'):
plt.plot(data['HOUR'], data['RATE'], label=name)
plt.xlabel('Hour')
plt.ylabel('Rate')
plt.legend()
plt.savefig('plot_{}.png'.format(name))
plt.close()