OK, I have worked out two of the three so far:
2. I would like a physical number instead of percentages on the subplot?
Answer. fig.update_traces (textinfo=“label+value’”) but I have decided to keep percentages so it is actually
fig.update_traces (textinfo=“label+value+percent”)
3. How do I not chart items that have zero value?
This was a bit trickier to track down but I found the answer here - Hiding % labels in px.pie chart python - #2 by nirvikalpa
I added the following to my fig.update_layout;
uniformtext_minsize=12,
uniformtext_mode='hide'
and I had to add
textposition='inside'
to my fig.update_traces entry
Onwards and upwards. Now to find out how to get number 1 dealt with and work out why my legend is showing the position in the dataframe and not the label