I'm making a little game for fun, and there is an event where you can take control of the enemies (muhahaha I can take over their little programmed minds)
I want to convert part of the image from red to blue.

Should I either use the surface.set to change to colour value,
Or should I just load a new image into the surface, for example load "red_man.png" originally then when he changes sides load "blue_man.png"? 

Which is more efficient to do?
Thanks in advance :)
So Ian Mallett was correct:

Efficient how? .set_at will be more space efficient, but obviously
  you're setting individual pixels every time you want to change.
  Loading an entirely new image at startup will be faster, but you'll
  use more space. I'd guess you're wanting the second, but . . .

I wanted the second one, faster (even at the cost of more space).
So its better to load the entire 'blue' image as well as the 'red' one, then switch between them as necessary.
Thanks Ian!
Python Pygame Changing Surfaces efficiently