Data hazards occur when an instruction depends on the result of a previous instruction not yet computed, with four types of dependencies: read after write (raw), write after read (war), write after write (waw), and read after read (rar). To handle these hazards, methods include forwarding, which adds circuitry to the pipeline; code reordering, which uses a hardware-dependent compiler; and stall insertion, which delays execution but reduces pipeline efficiency. Each method addresses the timing issues in instruction execution to ensure proper sequencing.