How do you optimize a slow-running data manipulation pipeline when working with large, memory-intensive data frames?