In this paper, we present a comprehensive survey and detailed comparison of techniques that have been applied to the problem of identifying the type of modulation contained within received wireless signals. Known as automatic modulation classification (AMC), the problem has been studied for many decades. AMC plays a significant role in both military and civilian scenarios and is the main step in smart receivers. Especially with the development of software-defined radios and automatic communication systems, IoT technology and the spread of 5G technology bring the number of spectrum-using equipment explosion, making the problem of scarce spectrum resources more prominent. Although AMC techniques can be optimized from the classifier's point of view, signal pre-processing also plays a critical role. Relevant data representation approaches include time-frequency analysis, cyclostationary transforms, and hybrid techniques. We provide a taxonomy of common approaches based on order and dimensionality along with an overall analysis of signal pre-processing algorithms for AMC. Furthermore, we reproduce the major existing schemes under uniform conditions, allowing an objective comparison among different methodologies. Finally, we create an open-source Python library to simulate these techniques so the results in this paper are reproducible for future research.