Both methods are great for cleaning carpets depending upon the level of cleaning required. Steam cleaning can remove dirt and bacteria from sub floor levels of a carpet which is not possible with shampooing. Shampoo cleaning can provide a surface level, cheap, quick cleaning solution.