DoWhy is a Python library to perform end-to-end causal inference and analysis. Although machine-learning models can make predictions based on factual data, exploiting the correlation of variables that were present at the time, they're insufficient in scenarios where we need to ask What if and Why questions: What if a variable changed? What would be the impact on the outcome? Causal inference is an approach to answer such questions. It estimates the causal effect, that is, the magnitude by which an outcome would change, if we changed one of the causal variables. This approach is applied when we can't arrive at the answer through observations and collecting data from A/B testing — due to the cost of experiments or limitations. The DoWhy library estimates the causal effect based on a process that uses the past collected facts and data as well as assumptions one can make knowing the domain. It uses a four-step process of modeling the causal relationships graph based on assumptions, identifying a cause for an outcome, estimating the causal effect and finally challenging those assumptions by refuting the result. We've used this library successfully in production, and it's one of the commonly used libraries in causal estimation use cases.