handles = [matplotlib.lines.Line2D([], [], marker='o', color=c, linestyle=
    'none') for c in df.colors.values]
plt.legend(handles=handles, labels=list(df.last_name.values), loc=
    'upper left', prop={'size': 6}, bbox_to_anchor=(1, 1), ncol=1, numpoints=1)
plt.subplots_adjust(right=0.8)
plt.show()
Pandas Scatterplot Using Data Frame Fields to Derive Colors and Legend