How to plot categorical data and encode it through colour and shape size?
The easiest solution I found is Altair:

import altair as alt

# assume df contains the DataFrame from the question + a numeric column `Participant`
alt.Chart(df).mark_point().encode(y='Skill', x='Participant', size='Age', color='Gender')


This is what gets rendered out of the box: